Java 重新打开活动后不能暂停mediaplayer
在我的Java 重新打开活动后不能暂停mediaplayer,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,在我的MainActivity.java中有一个对象MediaPlayer,当您单击playB按钮并按pauseB暂停时,它会播放声音。一切正常。但是,如果重新打开应用程序并单击“暂停”b,声音将继续播放。如何修复它?如何捕捉当前正在播放的MediaPlayer public class MainActivity extends ActionBarActivity { Button playB; Button pauseB; Context c; Medi
MainActivity.java
中有一个对象MediaPlayer
,当您单击playB
按钮并按pauseB
暂停时,它会播放声音。一切正常。但是,如果重新打开应用程序并单击“暂停”b,声音将继续播放。如何修复它?如何捕捉当前正在播放的MediaPlayer
public class MainActivity extends ActionBarActivity {
Button playB;
Button pauseB;
Context c;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button playB = (Button) findViewById(R.id.playB);
Button pauseB = (Button) findViewById(R.id.pauseB);
mp = mp.create(this, R.raw.fawaid_1);
playB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mp.start();
}
});
pauseB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mp.pause();
}
});
}
}
重新打开应用程序时,
onCreate
再次被调用,因此您有了一个新的MediaPlayer
对象,从那时起,“播放”和“暂停”按钮将控制新的播放器对象,而不是上一个。这就是为什么你的暂停按钮不会影响在你最小化应用程序之前启动的声音。如果你现在按播放按钮,你会有两种声音同时播放
解决此问题的一种方法是检查媒体播放器是否已初始化:
if(mp==null)
mp = MediaPlayer.create(this, R.raw.fawaid_1);
建议在开发音乐播放器时使用AIDL服务。 原因
问题是我在这里声明了对象
MediaPlayer
:公共类MainActivity扩展了ActionBarActivity{Button playB;Button pauseB;Context c;MediaPlayer mp;
它已经创建并且状态为!=null
。不是吗?@JoeSilent您声明了一个变量,然后通过调用MediaPlayer.create()
方法创建了一个对象。在调用该方法之前,mp
将是null