Android不会在通话时停止音乐,也不会在应用程序图标点击时恢复

时间:2013-06-24 08:27:15

标签: android android-intent android-mediaplayer

我是android developemt的新手。我制作了一个音乐播放器,有3个按钮播放,暂停,停止。当我点击应用程序图标Splash将运行,并在3秒后它出去,当我点击播放它支付歌曲其他按钮工作完美。但是,如果我播放音乐并返回主屏幕音乐将播放,但如果我再次点击应用程序图标,它将启动它的新实例,如果点击播放按钮,它将启动另一首歌曲意味着现在正在运行2首歌曲。 / p>

另一个问题是,当我接到电话时,我的歌曲会恢复,当我接听电话时,它仍然在试图解决这些问题。

我播放音乐的代码是

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>

3 个答案:

答案 0 :(得分:2)

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

实现这一目标后,您必须实施活动的onPause和onResume才能完成所需的操作。 当你回到家里或接到来电时会触发onPause。 OnResume是自我解释的:)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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