1

我正在使用运行 jb 的根深蒂固的三星 Galaxy nexus 手机,由于某种原因,我没有收到来自蓝牙连接服务的任何广播意图。您将在下面找到我的接收器清单和广播接收器代码。任何提示或想法将不胜感激。

谢谢

这是清单

<receiver android:name=".ABroadcastReciever" >
<intent-filter>
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_BOND_STATE_CHANGED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_FOUND" />
<action android:name="android.bluetooth.BluetoothDevice.BOND_BONDING" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>

这是接收者

public void onReceive(Context context, Intent intent) { 
            String action = intent.getAction();

            //This is looking for the Wifi Connectivity Changes
            if(action.equals("android.net.conn.CONNECTIVITY_CHANGE")){
                Log.d(TAG,"received: Wifi Connection Change");          
            }
            //This is looking Bluetooth connection disconnect 
            else if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED") ||
            action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED_REQUESTED") ){
                Log.d(TAG,"Received: Bluetooth Disconnected");

            }
            //This is looking for Bluetooth connection established
            else if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED")){
    Log.d(TAG,"Received: Bluetooth Connected");
            }
        }
4

3 回答 3

2

这是正在广播的新意图。

<action android:name="android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED" />

感谢您查看这里是新的 Intent

于 2012-08-29T17:20:38.997 回答
1

我不知道我是否正确,但我认为这条线是错误的:

<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" />

应该是这个:

<action android:name="android.bluetooth.device.ACTION_ACL_CONNECTED" />

和其他人一样。将“蓝牙设备”更改为“设备”。

在 broascast 中也有类似的东西:

if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED"))

应该

if(action.equals("android.bluetooth.device.action.ACL_CONNECTED"))

将 BluetoothDevice.ACTION_ACL_CONNECTED 更改为 device.action.ACL_CONNECTED

于 2013-03-31T20:43:08.643 回答
0

您的意图过滤器操作不正确。您实际上想要使用以下内容:

<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />

您可以在官方 Android BluetoothDevice 文档中找到这些值(查看常量值)。

于 2015-05-14T01:20:54.053 回答