在 Nougat 中录制蓝牙耳机音频
Posted
技术标签:
【中文标题】在 Nougat 中录制蓝牙耳机音频【英文标题】:Recording bluetooth headset audio in Nougat 【发布时间】:2017-12-19 16:58:49 【问题描述】:所以,我正在尝试从蓝牙耳机录制波形文件。
这是我用来记录的
recorder = AudioRecord(MediaRecorder.Audiosource.VOICE_COMMUNICATION,
8000,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE)
在开始录制之前,我开始使用耳机进行音频通信
var am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am!!.mode = 0
am!!.isBluetoothScoOn = true
am!!.startBluetoothSco()
am!!.mode = AudioManager.MODE_IN_COMMUNICATION
嗯,在 android 6 (marshmallow) 中录制时效果很好,但在 Android 7 (nougat) 中录制时,它会继续从我手机的麦克风而不是蓝牙耳机录制。查看文档,我没有发现任何有关版本之间蓝牙 SCO 变化的信息。所以....我错过了什么?
【问题讨论】:
【参考方案1】:我们在尝试录制蓝牙语音通话时遇到了类似的问题。问题是应用程序在收到拨出电话的电话广播后立即开始录制,但蓝牙接口仅在通话开始后几毫秒连接。 我们最终通过在开始录制之前应用简单的睡眠解决了这个问题,从而解决了这个问题。
【讨论】:
我们遇到的问题是,在我们的应用程序开始时,我们从电话麦克风录制。我们使用接收器 registerReceiver(mBluetoothScoReceiver, IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)) 解决了这个问题,并在音频状态为 AudioManager.SCO_AUDIO_STATE_CONNECTED 时开始录制。然而,它并没有解决这个问题,因为我们只能在牛轧糖中获得套接字连接,而不能获得音频连接。以上是关于在 Nougat 中录制蓝牙耳机音频的主要内容,如果未能解决你的问题,请参考以下文章