【问题标题】:Android Does not Stop Music on call and Dont Resume on app icon clickAndroid 不会在通话时停止音乐,也不会在应用程序图标点击时恢复
【发布时间】:2013-06-24 08:27:14
【问题描述】:

我是安卓开发新手。我制作了一个带有 3 个按钮播放、暂停、停止的音乐播放器。当我点击应用程序图标时,Splash 将运行,3 秒后它会熄灭,当我点击播放时,它会播放歌曲,其他按钮可以正常工作。但是,如果我播放音乐并返回主屏幕,音乐将播放,但如果我再次单击应用程序图标,它将启动一个新实例,如果单击播放按钮,它将开始另一首歌曲,这意味着现在有 2 首歌曲正在运行。

另一个问题是当我接到电话时我的歌曲恢复了,当我接听电话时它仍然在播放如何解决这些问题。

我播放音乐的代码是

MediaPlayer mySong;
    Button playButton,pauseButton,stopButton,creditsButton;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitymain);

        playButton=(Button) findViewById(R.id.play);
        pauseButton=(Button) findViewById(R.id.pause);
        stopButton=(Button) findViewById(R.id.stop);
        creditsButton=(Button) findViewById(R.id.credit);
        mySong=MediaPlayer.create(StartingPoint.this, R.raw.song);

        playButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                mySong.start();
            };
        });

pauseButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                mySong.pause();
            };
        });
stopButton.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        mySong.pause();
        mySong.seekTo(0);
    };
});

我的清单文件是

 <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="9" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        >
        <activity
            android:name="com.simplyitsols.hanumanchalisa.Splash"
            android:label="@string/app_name" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.simplyitsols.hanumanchalisa.StartingPoint"
            android:label="@string/app_name" 
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="com.simplyitsols.hanumanchalisa.STARTINGPOINT" />
                <category android:name="android.intent.category.Default" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.simplyitsols.hanumanchalisa.Credits"
            android:label="@string/app_name" >
        </activity>
    </application>

【问题讨论】:

  • 你需要回到主屏幕和来电停止音乐?
  • 在这两种情况下音乐都会运行...... 1. 如果我的应用程序在顶部或正在运行或在后台运行。

标签: android android-intent android-mediaplayer


【解决方案1】:

你必须创建一个服务:http://developer.android.com/reference/android/app/Service.html

在你实现这一点之后,你必须实现你的活动的 onPause 和 onResume 才能做你想做的事。 当您回家或接到来电时触发 onPause。 OnResume 是不言自明的 :)

http://developer.android.com/guide/components/fundamentals.html

【讨论】:

  • 但是告诉我们是否将音乐放在一边,如果我的应用程序正在运行并且正在播放歌曲,我还有一个问题。现在我点击返回并返回主屏幕。现在,当我再次单击应用程序图标时,它会启动一个新的应用程序而不是后台应用程序,因为我将模式用作 singleTask
  • 尝试使用 singleInstance (developer.android.com/guide/topics/manifest/…)
【解决方案2】:

在您回击之前,通过调用 finish() 清除堆栈并终止您当前的活动。对于生成的新实例,请使用布尔值检查当前是否正在播放歌曲。

   if( isSongPlaying==true)
     {
        //do not start  
      }
   else
     {
      //start playing
      }

【讨论】:

  • 如果我完成了活动,它将无法在后台运行。音乐将停止
【解决方案3】:

根据本教程 http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

您需要将此代码放入活动的类中:

@Override
public void onDestroy(){
    super.onDestroy();
    mp.release();
...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多