2011-07-08 91 views
8

我在试图找到一种方法来检测蓝牙耳机连接和断开Android 2.1的事件。我在API Level 11中看到有一些明确的API,但我如何在API级别7中执行此操作?我只想知道用户何时连接或断开可以播放音频的耳机或汽车音响,以便我可以暂停播放的声音。Android 2.1检测蓝牙音频连接/断开连接

回答

5

没有公开的API, 这个answer might help其中作者使用反射使用私有API。

作者还发表了评论他如何得到它的工作。

1

This看起来像检测蓝牙连接/断开连接的好选择。

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

+0

这是API 8级,一个2.1以上(7级),但由于 – rustyshelf

0

您必须为android.bluetooth.headset.action.STATE_CHANGED设置BroadcastReceiver操作。意图的额外android.bluetooth.headset.extra.STATE包含当前状态(断开,连接,连接)。更多信息Android source code

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