我试图覆盖后退按钮以停止音频播放器并关闭媒体播放器活动,但我注意到音量按钮不再起作用。我想在重写代码时会出错。 PS。在我的MediaController
中,我覆盖hide()
方法以始终显示控件。
mediaController = new MediaController(this)
{
@Override
public void hide() {
// TODO Auto-generated method stub
//do nothing
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
super.hide();
Activity a = (Activity)getContext();
a.finish();
}
return true;
}
};
答案 0 :(得分:4)
您的问题出在dispatchKeyEvent():
您正在使用return true
用于所有硬件密钥,这会阻止所有密钥响应,
而你应该使用
return super.dispatchKeyEvent(event);
对于Back Key以外的其他键。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
finish();
return true;
}
**return super.dispatchKeyEvent(event);**
}
答案 1 :(得分:2)
您可以覆盖onBackPressed()。
答案 2 :(得分:2)
你应该这样使用
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
finish();
return true;
}
return false;
}
从方法中输出代码或尝试:
@Override
public void onBackPressed() {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
finish();
}
或
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
一旦它可以解决您的问题,您是否尝试过检查
@Override
public void onBackPressed() {
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
finish();
}