除非按下后退按钮,否则我的代码工作正常。
当我按下停止按钮并且音频检查屏幕返回到我的菜单屏幕时,名为“测试”的MP3文件停止播放。完美...一切正常,直到我在手机上测试代码。当我使用Android手机上的手机后退按钮(不是我的应用程序上的停止按钮)退出时,媒体播放器会继续播放。我尝试了所有代码并查看了每个相关问题。我使用onStop实现代码onPause完成keyevent.KEYCODE_BACK等等,没有任何效果。我很难过。
这是我的代码。如何通过按相对于此代码的Android后退按钮来停止此MP3?
public class Audio_Check extends Activity{
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
public class Audio_Check extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.audio_check);
final MediaPlayer buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);
Button stbutton = (Button) findViewById(R.id.startbutton);
stbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
buttonSound.start();
}
});
Button spbutton = (Button) findViewById(R.id.stopbutton);
spbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
buttonSound.stop();
buttonSound.release();
Intent openE1 = new Intent("com.myapp.mysite.MENU");
startActivity(openE1);
}
});
}
}
答案 0 :(得分:1)
把这个方法,
@Override
protected void onDestroy() {
super.onDestroy();
buttonSound.stop();
buttonSound.reset();
buttonSound.release();
buttonSound = null;
}
希望它能奏效。
答案 1 :(得分:0)
我使用onStop实现了代码onPause完成keyevent.KEYCODE_BACK 等等,没有任何作用
无需在onPause
或onStop
中实现此功能,只需覆盖后退按钮并停止媒体播放器即可完成活动。
@Override
public void onBackPressed(){
if(buttonSound != null && buttonSound.isPlaying())
buttonSound.stop();
finish();
}
如果您使用的API低于5:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(buttonSound != null && buttonSound.isPlaying())
buttonSound.stop();
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:0)
我无法入睡。保持编码和研究,直到我开始工作。
它工作了!但是我必须在运行时基于详细的错误消息找出下一步。我不得不拿出“final和MediaPlayer”,否则当我通过模拟器运行它时,我会从Eclipse中强制关闭。编译代码时没有出现错误。
MediaPlayer buttonSound ; // declared above first @Override
// code after that
//从此
更改了代码final MediaPlayer buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);
//到这个
buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);
//它有效 谢谢
答案 3 :(得分:0)
现在它的工作原理......这是问题
注意buttonSound.start();被放在原始代码中?它高于}); 当我把它放在})之下;有效。显然它之前受到了保护,但现在工作正常。
buttonSound = MediaPlayer.create(Audio_Check.this, R.raw.testing);
Button stbutton = (Button) findViewById(R.id.stbutton);
stbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
buttonSound.start();
// onDestroy goes right here