背景:
开发应用程序以制作Android手机A2DP接收器。
BlueDroid堆栈支持A2DP接收器,但默认情况下已禁用。 Modified source code to enable A2DP。 Android手机被视为HeadsFree设备,可以连接。
问题:
我听不到声音。
尝试:
A2dpSinkStateMachine课程负责将机器人视为A2dpSink
。其中一个状态是Connected,它有方法broadcastAudioState,在音频开始/停止流式传输时调用。 (line 579)
broadcastAudioState
通过操作BluetoothA2dpSink.ACTION_PLAYING_STATE_CHANGED
(line 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
在platform/frameworks/base/core/res/AndroidManifest.xml文件<protected-broadcast>
任何想法,如何解决这个问题?
感谢