java - MediaPlayer 蓝牙耳机延迟 0.4 秒
问题描述
我正在开发一个播放音频的应用程序。在某些情况下,我将其更改 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)
解决方案
推荐阅读
- c++ - 以下代码中“运行时错误”的可能原因是什么?
- node.js - 带有 NodeJs 的 Docker 容器在 Window 上自动关闭
- javascript - 在 Firestore 中调用 set 时捕获异常
- javascript - 为什么当我将小部分 React 应用程序重新制作为 Redux 时列表消失了?
- javascript - 事件源不代表每个客户端/会话的信息
- python - 导入 Eof 模块时出错(udunits 错误,os 错误)
- ios - 使用 swift 处理在 iOS 上的 PDF 查看器内单击的链接
- asp.net-core - 从 .NET Core 3.1 转换为 .NET 5
- c++ - += 运算符是如何在 C++ 中实现的?
- c++ - 使用指针成员变量引发异常时的内存泄漏