如何在应用程序启动时使用android api level 8获取蓝牙耳机连接状态(连接/断开连接)? 在android2.2中有没有粘性的广播意图? 是否有任何API来获取初始蓝牙耳机状态? 有没有可用的解决方法?如何在使用Android2.2的应用程序启动时获取蓝牙耳机连接状态?
0
A
回答
3
我想出了解决方案:
private static final String ACTION_BT_HEADSET_STATE_CHANGED = "android.bluetooth.headset.action.STATE_CHANGED";
private static final int STATE_CONNECTED = 0x00000002;
private static final int STATE_DISCONNECTED = 0x00000000;
private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE";
private BroadcastReceiver mBlueToothHeadSetEventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
if(action == null)
return;
if(action.equals(ACTION_BT_HEADSET_STATE_CHANGED)){
int extraData = intent.getIntExtra(EXTRA_STATE , STATE_DISCONNECTED);
if(extraData == STATE_CONNECTED){
//TODO :
}else if(extraData == STATE_DISCONNECTED){
//TODO:
}
}
} catch (Exception e) {
//TODO:
}
}
};
0
这不会在应用程序启动真正的工作,但作为意向性过滤器会自动注册,你可能有一个有效的价值,一旦你的应用程序被启动:
声明如下意图过滤
<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),就可以随时访问它。不漂亮,但完成工作。
+0
在我看来,这不会有帮助。它告诉,如果有活动的音频连接。如果耳机已连接,则音频连接不会自动建立。但是,当您自己获取音频连接时(通过入侵startBluetoothSco()),您应该最新注册此事件,因为那样您可以在AUDIO_STATE_CONNECTED上响应以开始音频通道准备使用时需要执行的任何操作。 – Schlangi
0
从封装/应用/电话/ src目录/ COM /安卓/电话/ PhoneGlobals.java:1449
} else if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
mBluetoothHeadsetState = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE,
BluetoothHeadset.STATE_DISCONNECTED);
if (VDBG) Log.d(LOG_TAG, "mReceiver: HEADSET_STATE_CHANGED_ACTION");
if (VDBG) Log.d(LOG_TAG, "==> new state: " + mBluetoothHeadsetState);
updateBluetoothIndication(true); // Also update any visible UI if necessary
相关问题
- 1. 如何将应用程序连接到蓝牙耳机
- 2. Android应用程序如何启动到蓝牙耳机的蓝牙HFP和A2DP连接?
- 3. Android 2.2程序中告诉我的蓝牙耳机是否在应用程序启动时连接
- 4. 使用通话按钮蓝牙耳机启动我的应用程序
- 5. 连接到蓝牙耳机在Android
- 6. 获取列表连接的蓝牙耳机在ios与原生
- 7. 如何在建立蓝牙连接时自动启动iOS应用程序?
- 8. 使用蓝牙耳机控制WP7和WP8应用程序
- 9. 我可以从iOS获得有关蓝牙耳机连接状态的信息
- 10. iOS蓝牙通知应用程序蓝牙设备连接时
- 11. Android连接到Blackberry 655+蓝牙耳机
- 12. 连接/配对蓝牙耳机和Android
- 13. 以编程方式从Android应用程序连接到蓝牙耳机
- 14. 蓝牙连接状态
- 15. 蓝牙连接状态
- 16. 如何获取Android设备的蓝牙设备连接状态
- 17. 用蓝牙启动应用程序
- 18. 在蓝牙耳机中使用SpeechRecognizer
- 19. 如何读取蓝牙耳机名称?
- 20. Windows Phone应用程序蓝牙连接
- 21. 蓝牙android应用程序Rfcomm连接
- 22. 如何验证蓝牙耳机是否在Android上连接?
- 23. 通过蓝牙接收文件时启动应用程序
- 24. 以编程方式在iOS中连接蓝牙耳机?
- 25. C#应用程序使用蓝牙连接到移动应用程序
- 26. C#应用程序连接到移动应用程序中使用蓝牙
- 27. 控制蓝牙耳机V4.1从一个应用程序
- 28. 使用Android RecognizerIntent与蓝牙耳机
- 29. Ionic 2 - 使用蓝牙耳机录制
- 30. 以编程方式连接到Windows Mobile上的蓝牙耳机
在我的设备(摩托罗拉里程碑2亦称Droid 2的)这个意图(android.bluetooth.headset.action.STATE_CHANGED)似乎不是STICKY,这意味着在应用程序启动时,为此意图注册BroadcastReceiver时,即使头戴式耳机处于连接状态,它总是返回NULL。我还为android.media.SCO_AUDIO_STATE_CHANGED注册了一个过滤器,并且它在启动时报告音频状态,这当然是不够的,因为这在大多数情况下是SCO_AUDIO_STATE_DISCONNECTED,并不意味着没有连接耳机。这是一个设备特定的行为? – Schlangi