2017-12-19 4 views
2

Also, ich versuche, eine Wave-Datei von und Bluetooth-Headset aufzunehmen.Aufnahme von Bluetooth-Headset-Audio in Nougat

Dies ist, was ich

recorder = AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 
       8000, 
       AudioFormat.CHANNEL_IN_MONO, 
       AudioFormat.ENCODING_PCM_16BIT, 
       BUFFER_SIZE) 

aufnehmen Gebrauch und vor dem Aufnahmestart Ich fange an und Audio-Kommunikation mit meinem Headset

var am = getSystemService(Context.AUDIO_SERVICE) as AudioManager 
am!!.mode = 0 
am!!.isBluetoothScoOn = true 
am!!.startBluetoothSco() 
am!!.mode = AudioManager.MODE_IN_COMMUNICATION 

Nun verwenden, es wirkt Wunder, wenn in Android Aufnahme 6 (Marshmallow), aber wenn ich in Android 7 (Nougat) aufnehme, nimmt es weiterhin vom Mikrofon meines Telefons und nicht vom Bluetooth-Headset auf. Ich habe in der Dokumentation nichts über Änderungen in Bluetooth SCO zwischen Versionen gefunden. Also .... was vermisse ich?

Antwort

0

Wir hatten ein ähnliches Problem, als wir versuchten, einen Bluetooth-Sprachanruf aufzuzeichnen. Das Problem war, dass die Anwendung die Aufzeichnung begann, sobald sie die Telefonie-Rundsendung des ausgehenden Anrufs empfangen hatte, aber die Bluetooth-Schnittstelle nur einige Millisekunden nach dem Anruf verbunden war. Wir lösten dieses Problem schließlich, indem wir vor Beginn der Aufzeichnung einen einfachen Ruhezustand einführten, und das behob das Problem.

+0

Wir hatten das Problem, dass wir am Anfang unserer Anwendung vom Telfone-Mikrofon aufgenommen haben. Wir lösten dieses Problem mit einem Empfänger RegisterReceiver (mBluetoothScoReceiver, IntentFilter (AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)), und starten Sie einfach die Aufnahme, wenn Audio-Status war AudioManager.SCO_AUDIO_STATE_CONNECTED. Es wird jedoch nicht angezeigt, um das Problem zu lösen, da wir nur eine Socket-Verbindung in Nougat, aber keine Audioverbindung herstellen können. –