我正在开发一个播放音频的应用程序。在某些情况下,我将AudioStreamType
更改为AudioManager.STREAM_RING
(这是同时播放音乐的模式:扬声器和耳机)。当我使用蓝牙耳机时,会有一个令人讨厌的延迟。
所以我在读蓝牙有一个缓冲区,这是合乎逻辑的
,但是我该如何解决呢?我也尝试更改mediaPlayer
的缓冲区大小或延迟。
因此,我创建了一个mediaPlayer
,如下所示:
@Override
public void onInit() {
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setLooping(true);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
songManager = new SongsManager(context);
}
@Override
public void onPrepare() {
// prepare media player
if (mediaPlayer != null) {
mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
absolutePathToPlayingSong = /*some place*/;
mediaPlayer.setDataSource(/*some place*/);
mediaPlayer.prepare();
mediaPlayer.setVolume(volumeLvl, volumeLvl);
}
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
}
然后我就开始播放器:
mediaPlayer.start();
所以,我已经尝试过:
prepare()
更改为prepareAsync()
-可能对我没什么帮助,可能是我有幻觉。不幸的是,它在一个地方损坏了seekTo()
onPrepared()
并从听众开始播放-我不确定它是否有帮助请给我任何进展^如何解决蓝牙耳机的延迟问题?我在YouTube应用程序中检查了此设备,效果很好。所以我的应用程序有问题。对不起,我英语不好!)
我有2个目标设备android 7.0(SDK 24)和android 4.2(SDK 16)