首页 > 解决方案 > MediaPlayer 蓝牙耳机延迟 0.4 秒

问题描述

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

标签: javaandroidbluetooth

解决方案


推荐阅读