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一些示例代码可能很简单,我看你没有关于请求音频焦点或发布音频焦点的参考。这不应该包括在内吗?