在我的应用程序音频记录在Foreground服务中 . 连接蓝牙SCO后我开始录制 . 它的工作正常Android KitKat到Nougat . 但是当我尝试使用华为Honor 8(Android Oreo)时,音频是通过手机麦克风而不是蓝牙耳机麦克风录制的 . 当我尝试使用Google pixel 2时,录制功能根本无法使用 .
启动蓝牙SCO
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);
Log.d(TAG, "Audio SCO state: " + state);
if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state) {
am.setBluetoothScoOn(true);
unregisterReceiver(this);
startRecord();
}
}
}, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
am.startBluetoothSco();
AudioRecord配置
final int RECORDER_SAMPLERATE = 8000;
final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO;
final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
int bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,
RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING);
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize);
1 回答
Android通过蓝牙改变了通信数据的长度 . 看看https://developer.android.com/about/versions/oreo/android-8.0-changes
要解决此问题,许多OEM建议您可能需要擦除设备缓存 . https://forums.oneplus.com/threads/bluetooth-audio-is-ruined-after-oreo-update.699589/
查看此快速安装指南https://www.theandroidsoul.com/fix-android-oreo-bluetooth-issues/
针对android oreo问题的10个常见修复程序 . https://www.gottabemobile.com/android-oreo-problems-fixes/
以安全模式重新启动 . https://support.google.com/android/answer/7665064?hl=en&ref_topic=6023296&visit_id=1-636636939996434821-3584672143&rd=1
如果这有帮助,请告诉我 .