Android 使用蓝牙耳机在Oreo中录制音频问题
在我的应用程序中,音频记录在前台服务中。连接蓝牙SCO后,我开始录制。从Android KitKat到牛轧糖,它的工作状态都很好。但当我尝试使用华为荣誉8(Android Oreo)时,音频是从手机麦克风而不是蓝牙耳机麦克风录制的。当我在Google pixel 2上试用时,录音根本不起作用 启动蓝牙SCO 录音配置Android 使用蓝牙耳机在Oreo中录制音频问题,android,bluetooth,audio-recording,android-8.0-oreo,Android,Bluetooth,Audio Recording,Android 8.0 Oreo,在我的应用程序中,音频记录在前台服务中。连接蓝牙SCO后,我开始录制。从Android KitKat到牛轧糖,它的工作状态都很好。但当我尝试使用华为荣誉8(Android Oreo)时,音频是从手机麦克风而不是蓝牙耳机麦克风录制的。当我在Google pixel 2上试用时,录音根本不起作用 启动蓝牙SCO 录音配置 Android已经改变了通过蓝牙通信的数据长度。退房 为了解决这个问题,许多原始设备制造商建议您可能需要擦除设备缓存。 查看此快速修复指南 android oreo问题的10个常
Android已经改变了通过蓝牙通信的数据长度。退房 为了解决这个问题,许多原始设备制造商建议您可能需要擦除设备缓存。 查看此快速修复指南 android oreo问题的10个常见修复 在安全模式下重新启动
如果有帮助,请告诉我。我在华为荣誉9i也有这个问题。 我发现用手机麦克风而不是蓝牙设备麦克风录音,但当我打开音乐应用程序在后台播放音乐时,蓝牙麦克风工作正常。
因此,当我启动录音机时,我尝试播放一段空白的背景音乐,效果很好。如果我在最初的问题中回答“否”,那么它就会得到回答。你还想要什么?请在您的问题中澄清。@tiagoperes,这是我在尝试从蓝牙耳机录制音频时遇到的问题。我已经编辑了我的问题,希望它现在更清楚。谢谢。谢谢Mohit Ajwani,第一个链接与ScanRecord长度有关。与录制无关不可能告诉所有用户擦除缓存,因为它只是一个应用程序。尝试了许多设备,但始终从手机麦克风捕获音频。其他链接也基于用户的观点。所以这也没用。我为同样的@Sujith道歉。我会看看我是否能找到更多关于同样的信息,然后再给你回复。
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();
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);