我正在使用與媒體播放器關聯的媒體控制器播放聲音。問題在於媒體控制器一旦失去焦點就會隱藏起來。我有一個按鈕,當按下按鈕時,播放聲音,媒體控制器顯示在屏幕底部。Android Media Controller在隱藏焦點時隱藏
但是當按下生命暫停時,在5秒鐘之後,媒體控制器自己隱藏。
這裏是我的代碼的一部分。我只要媒體控制器隱藏,使聲音不連續打出
所有代碼的媒體控制器停止媒體播放器有:
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(currentFragment);
mediaController = new MediaController(getActivity()){
@Override
public void hide()
{
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
super.hide();
}
};
try {
mediaPlayer.setDataSource(sound.getSound());
mediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaPlayer.start();
@Override
public void onPrepared(MediaPlayer mp) {
Log.d("media status", "onPrepared");
handler.post(new Runnable() {
public void run() {
launchMediaController();
progress.dismiss();
}
});
}
void launchMediaController(){
mediaController.setEnabled(true);
mediaPlayer.start();
mediaController.setMediaPlayer(soundController);
mediaController.setAnchorView(getView());
mediaController.show(0);
}
private class SoundController implements MediaController.MediaPlayerControl{
public void start() {
mediaPlayer.start();
}
public void pause() {
mediaPlayer.pause();
}
public int getDuration() {
return mediaPlayer.getDuration();
}
public int getCurrentPosition() {
return mediaPlayer.getCurrentPosition();
}
public void seekTo(int i) {
mediaPlayer.seekTo(i);
}
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
public int getBufferPercentage() {
return 0;
}
public boolean canPause() {
return true;
}
public boolean canSeekBackward() {
return true;
}
public boolean canSeekForward() {
return true;
}
@Override
public int getAudioSessionId() {
// TODO Auto-generated method stub
return 0;
}
}
編輯:基於 利賓的答案,我做了,但沒有成功如下: 擴展的MediaController和覆蓋觸摸事件
private class MyMediaController extends MediaController{
public MyMediaController(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
}
使用擴展類
mediaController = new MyMediaController(getActivity()){
@Override
public void hide()
{
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
super.hide();
}
};
launchMediaController()實際上就是啓動媒體控制器。 我的問題是,爲什麼媒體控制器在用戶觸摸它幾秒後自己隱藏?有沒有解決這個問題的方法?
這是我在做什麼,但它的用戶隱藏後幾秒鐘碰到了 – Noor
秀參數0? 。我應該工作 – Libin
我已經添加了我用來顯示媒體控制器的代碼 – Noor