Android 2.1检测蓝牙音频连接/断开

8

我正在努力寻找一种方法来检测Android 2.1的蓝牙耳机连接和断开事件。在API Level 11中,我看到有一些明确的事件,但是在API level 7中该如何实现呢?我只想知道当用户连接或断开一个可以播放音频的耳机或汽车音响时,这样我就可以暂停正在播放的声音。

4个回答

5

没有公共API,这个答案可能有帮助,作者使用反射调用了私有API。

作者还在评论中说明了他是如何让它工作的。


1

不确定这在2.1版本中是否有效,但它适用于2.2和2.3。

它将捕获蓝牙耳机连接状态的变化:

声明以下意图过滤器

        <intent-filter >
            <action android:name="android.bluetooth.headset.action.AUDIO_STATE_CHANGED" />
        </intent-filter>

在你的接收器中的onReceive方法中检查以下内容:

if ("android.bluetooth.headset.action.AUDIO_STATE_CHANGED".equals(intent.getAction())) {
  headsetAudioState = intent.getIntExtra("android.bluetooth.headset.extra.AUDIO_STATE", -2);
}

将int保存为静态变量。随时访问它以了解BT音频是否连接(1)/断开连接(0)。不太美观,但能完成工作。

还可以查看: https://github.com/android/platform_frameworks_base/blob/gingerbread/core/java/android/bluetooth/BluetoothHeadset.java


1

看起来是一个不错的选择来检测蓝牙的连接和断开。

如果这个方法不起作用,另一个好的选择是在一个服务中设置一个计时器,调用AudioManager.isBluetoothA2dpOn()来检查蓝牙是否连接或断开。


0
你需要为 android.bluetooth.headset.action.STATE_CHANGED 操作设置一个 BroadcastReceiver。Intent 的额外信息 android.bluetooth.headset.extra.STATE 包含当前状态(未连接、正在连接、已连接)。更多信息请参考 Android源代码

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接