0

Android アプリで Bluetooth SCO オーディオの問題に直面しました。

アクション ACL_CONNECTED および ACL_DISCONNECTED のレシーバーを登録して、Bluetooth SCO デバイスの接続と切断をキャプチャしました。ACL_CONNECTED の受信時に、Bluetooth デバイスにオーディオ サービス (ヘッドセット) があるかどうかを確認しています。AUDIO サービスがある場合は、AudioTrack ( new AudioTrack(....)) をインスタンス化し、Bluetooth SCO ( startBluetoothSco(); setBluetoothScoOn(true);) を開始しています。

アプリに pcm データを AudioTrack に書き込むボタンがあります。このアプリでは書き込んだPCMデータの音が出ません。

レシーバーなしで試してみましたが、onCreate()AudioTrack をインスタンス化して bluetooth SCO を開始しただけです。アプリを起動する前に、ヘッドセットをデバイスに接続してテストしましたが、正常に動作しています。

しかし、実行時に Bluetooth SCO 接続が確立されたときに、ACL_CONNECTED インテントに応じてアプリが機能しないのはなぜですか。

解決策を知っている人は、返信してください。必要な権限 BLUETOOTH、BLUETOOTH_ADMIN、MODIFY_AUDIO_SETTINGS をすべて追加しました (これらの権限のスペルミスについては報告しないでください)。

4

1 に答える 1

1

どのバージョンの API を使用していますか?

受信機を作成するときは、ACL_CONNECTED の代わりに BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED を使用します。

intentFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); // API 11
intentFilter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED); // API 8
intentFilter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED); // API 14
于 2012-10-03T01:30:32.370 に答える