如何在应用程序启动时使用android api level 8获得蓝牙耳机连接状态(连接/断开连接)? android2.2中是否有任何粘性广播意图? 是否有任何API可以获取蓝牙耳机的初始状态? 有没有可用的解决方法?

===============>>#1 票数: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:

        }
}
};

===============>>#2 票数:0

这实际上不会在应用程序启动时起作用,但是由于意图过滤器是自动注册的,因此一旦应用程序启动,您可能会有一个有效值:

声明以下intent-filter

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

并在onReceive的Receiver中检查:

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

===============>>#3 票数:0

来自packages / apps / Phone / src / com / android / phone / 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

  ask by Jayesh Tembhekar translate from so

未解决问题?本站智能推荐:

2回复

Android 2.2会以编程方式告诉我在应用程序启动时是否已连接蓝牙耳机

我正在为android 2.2 API级别8编程,我试图找出在我的应用程序启动时当前是否连接了蓝牙耳机。 我似乎找不到解决此问题的方法。 一旦我的应用程序启动并运行,我就可以按照此处所述侦听BluetoothDevice.ACTION_ACL_CONNECTED和BluetoothDev
1回复

一个Android应用程序如何检测没有蓝牙权限的蓝牙耳机?

我最近购买了一个蓝牙耳机,并注意到尽管Google Play音乐会检测到它何时配对,并开始显示“在手机扬声器和蓝牙耳机之间切换”控件,但其清单(由AppXplore重构)并未列出任何蓝牙权限。 这里有人知道它可能会使用什么API,而无需蓝牙权限吗? 还是Google作弊?
1回复

连接到Android中的蓝牙耳机

我有以下问题:在打开手机蓝牙之前打开耳机时,它将无法连接到手机。 仅当手机蓝牙打开并且第二次打开耳机时,它才会连接到我的手机。 我发现进入蓝牙第二秒钟(1种情况)后,仍然可以连接到我的耳机,方法是进入android蓝牙菜单,其中列出了我的配对设备并选择了我的耳机(尽管我的耳机列为“已连接”)
1回复

了解与Android的蓝牙耳机连接

我有一个蓝牙耳机(BTC6White)。 我想对着麦克风说话,而Android设备会播放声音。 那么,我该怎么做呢? 首先,我可以建立一个套接字连接 那么,我如何获得音频? 这个方法有什么用:startBuetoothSco? 要将音频放入扬声器,是否应该使用Auditra
4回复

Android连接到配对的蓝牙耳机

我想模拟“设置”->“无线”->“蓝牙”的运行过程,并以编程方式连接配对的蓝牙耳机。 我已经在Stackoverflow和Google中进行了一些搜索,都表明在API级别11之前没有可用的解决方案。但是,我有兴趣通过查看Android蓝牙实现的源代码来解决它。 问题是我不知道应该
1回复

无法连接到Android中的蓝牙耳机

在走错了近两个月的错误路径后,我发现了我的错误所在。 现在,我正在解决一个新问题,但找不到答案:尝试连接耳机时使用此功能: 我无法初始化mBluetoothHeadset对象,由于某种原因,调试器不会进入onServiceConnected函数。 任何帮助将不胜感激...真的需要
1回复

如何验证Android上是否已连接蓝牙耳机?

如何验证目前是否有连接到android的蓝牙耳机? 喜欢: 如果连接了头戴式耳机,则声音必须路由到该头戴式耳机 但是如果没有耳机,声音必须留在扬声器上 在应用过程中必须进行检查,因为如果耳机的电池没电了,它必须将声音发送回扬声器 解决方案如下/
1回复

如何使用多点蓝牙耳机获取已连接设备的列表

我在应用程序中使用了多点蓝牙耳机,并且该耳机已连接到多个Android设备。 我创建了一个应用程序以列出连接的蓝牙设备,并安装在其中一台平板电脑上。 因此,在我的应用程序中,它表明平板电脑已与蓝牙耳机连接。 但是我还想要蓝牙耳机与哪些其他设备连接的信息? 我能否获得此信息? 蓝
2回复

Android-在应用启动时检测音频在哪里路由

我说的是STREAM_VOICE_CALL 方案如下:1.将有线耳机连接到电话2.将蓝牙耳机连接到电话3.启动将音频播放到STREAM_VOICE_CALL的应用程序 操作系统会自动将此流的音频重定向到连接的最后一个设备。 因此,如果在连接有线耳机之后连接了蓝牙耳机,则音频将被播放
1回复

在Android中连接蓝牙耳机后,如何在内置麦克风和耳机麦克风之间切换音频输入?

我正在使用语音识别应用程序。 蓝牙耳机成功连接到我的android设备后,我想在内置麦克风和头戴式麦克风之间自由切换音频输入,该怎么办?