我是android新手,我有另一个(简单?)问题。我不知道如何停止媒体播放器。这是我的简单代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
MediaPlayer mp;
mp = MediaPlayer.create(this, R.raw.sauronsound);
mp.setLooping(false);
mp.start();
@Override
protected void onDestroy()
{
// Stop play
super.onDestroy();
mp.stop();
}
}
按下后退按钮应用程序进入我的第一个活动,但声音已打开。当我离开应用程序时它也在。我该怎么办才能关闭声音?
总是原谅我的英语不好。
感谢你们,我解决了这个问题。工作代码:
public class SauronEye extends Activity {
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
mp = MediaPlayer.create(this, R.raw.sound);
mp.setLooping(false);
mp.start();
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(10000);
}
@Override
protected void onStop()
{
// Stop play
super.onStop();
mp.stop();
}
}
是否正确(可行)?感谢你们对我的帮助。
答案 0 :(得分:2)
mp
上使用的 onDestroy
引用与您在onCreate
上使用的引用不同。将MediaPlayer mp;
行移至onCreate
类之外。
答案 1 :(得分:0)
查看http://developer.android.com/reference/android/media/MediaPlayer.html 您可以根据您的要求调用停止或暂停。当您选择后退按钮时,将调用暂停,在该方法中您可以调用mp.stop(),仅在活动被完全销毁时才会调用onDestroy
答案 2 :(得分:0)
onDestroy仅在系统终止活动时调用。你应该将它放在onPause()中,而不是将它放在onDestroy中,只要你的活动被移动到后台但仍留在内存中就会被调用。 (按下后退按钮或离开应用程序会发生这种情况)
@Override
protected void onPause() {
super.onPause();
mp.stop();
}
答案 3 :(得分:0)
您可以非常轻松地调用override实现源代码,并将它们分别添加到您的代码中。您只需右键单击所需的插入点,然后单击Source-> Override / Implement Methods。它会打开一个对话框,你点击你需要的方法,尝试使用ondestroy,onpause,onstop。对于您的代码,在实现它们之后,只需将以下内容添加到每个代码中。
protected void onDestroy{
super.onDestroy();
mp.release();
}
protected void onStop{
super.onStop();
mp.stop();
}
protected void onPause{
super.onPause();
mp.pause();
}
此外,如果你想要更多的声音代码,你可以尝试这个链接 stealthcopters link 或者你可以尝试这个视频系列 cornboyzAndroid