我是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>
答案 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();
...
}