Android蓝牙接收器中的动作CONNECTION_STATE_CHANGED和STATE_CHANGED有什么区别?
else if (BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED .equals(action)) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE,
BluetoothAdapter.STATE_DISCONNECTED);
if (state == BluetoothAdapter.STATE_CONNECTED) {
//nothing
} else {
}
} else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
if (state == BluetoothAdapter.STATE_OFF) {
}
}
答案 0 :(得分:7)
根据docs,差异如下:
ACTION_CONNECTION_STATE_CHANGED
Intent用于将本地蓝牙适配器的连接状态更改广播到远程设备的配置文件。
ACTION_STATE_CHANGED
本地蓝牙适配器的状态已更改。例如,蓝牙已打开或关闭。
换句话说,一个Intent
用于更改连接状态,另一个用于更改蓝牙适配器本身的状态。
修改强>
要检测设备是否移入和移出范围,您需要使用以下意图:
ACTION_ACL_CONNECTED
:link to documentation ACTION_ACL_DISCONNECTED
:link to documentation 对于这两者,您需要正常的BLUETOOTH
权限和BLUETOOTH_ADMIN
权限:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
BroadcastReceiver
的意图过滤器看起来像这样:
<intent-filter>
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>
Here是关于BluetoothDevice
的一般文档。