作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Android 蓝牙接收器中的 Action 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) {
}
}
最佳答案
根据docs区别如下:
ACTION_CONNECTION_STATE_CHANGED
Intent 用于将本地蓝牙适配器的连接状态更改广播到远程设备的配置文件。
ACTION_STATE_CHANGED
本地蓝牙适配器的状态已更改。例如,蓝牙已打开或关闭。
换句话说,一个 Intent
用于改变连接状态,另一个用于改变蓝牙适配器本身的状态。
编辑:
要检测设备是否移入和移出范围,您需要使用以下 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 过滤器看起来像这样:
<intent-filter>
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>
Here是关于 BluetoothDevice
的一般文档。
关于android - CONNECTION_STATE_CHANGED 和 STATE_CHANGED 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435725/
Android 蓝牙接收器中的 Action CONNECTION_STATE_CHANGED 和 STATE_CHANGED 有什么区别? else if (Bluetoot
我是一名优秀的程序员,十分优秀!