蓝牙耳机的MediaPlayer延迟0.4秒

时间:2018-11-09 11:55:09

标签: java android bluetooth

我正在开发一个播放音频的应用程序。在某些情况下,我将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();

所以,我已经尝试过:

  1. prepare()更改为prepareAsync()-可能对我没什么帮助,可能是我有幻觉。不幸的是,它在一个地方损坏了seekTo()
  2. 添加了onPrepared()并从听众开始播放-我不确定它是否有帮助

请给我任何进展^如何解决蓝牙耳机的延迟问题?我在YouTube应用程序中检查了此设备,效果很好。所以我的应用程序有问题。对不起,我英语不好!)

我有2个目标设备android 7.0(SDK 24)和android 4.2(SDK 16)

0 个答案:

没有答案