【问题标题】:Recording bluetooth headset audio in Nougat在 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 变化的信息。所以....我错过了什么?

【问题讨论】:

    标签: android audio bluetooth


    【解决方案1】:

    我们在尝试录制蓝牙语音通话时遇到了类似的问题。问题是应用程序在收到拨出电话的电话广播后立即开始录制,但蓝牙接口仅在通话开始后几毫秒连接。 我们最终通过在开始录制之前应用简单的睡眠解决了这个问题,从而解决了这个问题。

    【讨论】:

    • 我们遇到的问题是,在我们的应用程序开始时,我们从电话麦克风录制。我们使用接收器 registerReceiver(mBluetoothScoReceiver, IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)) 解决了这个问题,并在音频状态为 AudioManager.SCO_AUDIO_STATE_CONNECTED 时开始录制。然而,它并没有解决这个问题,因为我们只能在牛轧糖中获得套接字连接,而不能获得音频连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多