Android MediaPlayer声音无法始终播放,无法获得音频焦点
我有一个问题,一些安卓代码播放声音通知某些事件 代码如下:Android MediaPlayer声音无法始终播放,无法获得音频焦点,android,android-mediaplayer,Android,Android Mediaplayer,我有一个问题,一些安卓代码播放声音通知某些事件 代码如下: int result = audioManager.requestAudioFocus(MainRunningService.afChangeListener,AudioManager.STREAM_NOTIFICATION,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED)
int result = audioManager.requestAudioFocus(MainRunningService.afChangeListener,AudioManager.STREAM_NOTIFICATION,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
mp = new MediaPlayer();
mp.setDataSource(context, soundToPlay);
mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mp.prepare();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer) {
try {
Log.d(LOGTAG, "SoundService MUSIC: MUSIC IS NOW COMPLETE");
mp.release();
mp = null;
Log.d(LOGTAG, "SoundService MUSIC: MUSIC IS NOW COMPLETE - RELEASED");
} catch (Exception e) {
e.printStackTrace();
}
}
});
mp.setLooping(false);
mp.start();
}
else{
Log.w(LOGTAG, "SoundService Audiofocus was not granted");
}
我发现有时候它会玩,而有时候它不会玩。当它不播放时,它会点击“SoundSerie Audiofocus未被授予”日志行。我查看了系统日志,但找不到任何说明为何未授予的信息
一旦发生这种情况,那么每个请求似乎都会失败
有人有任何指向我可能做错了什么的指针吗?//单击按钮或在任何需要的地方调用playAssistClip()方法
private MediaPlayer mp;
private void playAssistClip() {
if (workoutReps.equalsIgnoreCase("6x6x6")) {
mp = MediaPlayer.create(ProcessWorkout.this,
R.raw.six_six_six_formated_ogg);
mp.setOnCompletionListener(new OnCompletionListener() {
//do something after the audi ends
mp.reset();
mp.release();
finish();
}
});
mp.start();
//to get the duration of clip
spentTimeOnWorkout = mp.getDuration();
}
请尝试其他流类型来测试或将“修改音频设置”权限添加到清单中。在这方面似乎有所帮助:另一个应用程序可能就是不放弃焦点。但我注意到,从来没有人要求放弃音频焦点。这可能是个问题。呼叫已放弃AudioFocus,请将其放入您的完成侦听器中。您是否正在寻找播放音频文件(MediaPlayer)编码的代码?@gabe ForwardAudioFocus在释放媒体播放器时被呼叫。这是应用程序的另一种方法,我没有包括在内——它运行:audioManager.audiofocus(MainRunningService.afChangeListener)@TharakaNirmana一些示例代码可能很简单,我看你没有关于请求音频焦点或发布音频焦点的参考。这不应该包括在内吗?