背景 :
开发应用程序来制作安卓手机 A2DP 接收器。
BlueDroid 堆栈支持 A2DP 接收器,但默认禁用。 修改源代码以启用 A2DP。Android 手机被视为 HeadsFree 设备并且可以连接。
问题 :
我听不见声音。
试过:
A2dpSinkStateMachine类负责将 android 作为A2dpSink
. 状态之一是Connected,它有方法broadcastAudioState,在音频开始/停止流式传输时调用。(第 579 行)
broadcastAudioState
发送带有动作的广播BluetoothA2dpSink.ACTION_PLAYING_STATE_CHANGED
(第 696 行)并写入日志A2DP Playing state....
))
注册广播接收器
manifest.xml
- 通过文件尝试
<receiver android:name=".PlayingStateChangeBroadcastReceiver">
<intent-filter>
<action android:name="android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED" />
</intent-filter>
</receiver>
- 也动态
Intent intent =
registerReceiver(mReceiver, new IntentFilter(BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED));
- 动态许可
Intent intent =
registerReceiver(
mReceiver,
new IntentFilter(BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED),
"android.permission.BLUETOOTH",
new Handler(Looper.getMainLooper()));
onReceive
方法永远不会被调用。
此外:
- 动态注册
registerReceiver
时返回null
. - 在
Android monitor
窗口内,我看到日志A2DP Playing state ...,表示已发送广播。 android.bluetooth.a2dp-sink.profile.action.PLAYING_STATE_CHANGED
<protected-broadcast>
在platform/frameworks/base/core/res/AndroidManifest.xml文件中声明
任何想法,如何解决?
谢谢