设置设备可见对于服务端是必须的,客户端设不设置无所谓。
如果服务端不可见,配对过的设备也搜索到并可以连接上,但是不能通信,没有配对过的设备连搜索都搜索不到。
可见时间的取值范围是0到120,单位是秒,0表示永久可见。
手机上的蓝牙可见仅限一次连接有效。也就是说,一次连接断开以后,下次再等待客户端连接的时候,还需要再设置一次设备可见。
/**
* 设置设备可见
* 0 ~ 120
*/
public void setDuration() {
Intent duration = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
duration.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120);
mActivity.startActivity(duration);
}
扫描附近的蓝牙设备
扫描附近设备的设备,需要注册一个广播接收者,来接收扫描到的结果。
需要注意的是,接收扫描结果的广播接收者必须使用动态注册,不能在清单文件里注册!
注册搜索蓝牙设备的广播接收者
// 获取设备的广播接收者
FoundDeviceBroadcastReceiver mFoundDeviceBroadcastReceiver = new FoundDeviceBroadcastReceiver();
// 注册receiver监听
IntentFilter mFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
/**
* 注册搜索蓝牙设备的广播接收者
*/
public void registerFoundDeviceReceiver() {
mActivity.registerReceiver(mFoundDeviceBroadcastReceiver, mFilter);
}
反注册搜索蓝牙设备的广播接收者
// 获取设备的广播接收者
FoundDeviceBroadcastReceiver mFoundDeviceBroadcastReceiver = new FoundDeviceBroadcastReceiver();
/**
* 反注册搜索蓝牙设备的广播接收者
*/
public void unregisterReceiver() {
mActivity.unregisterReceiver(mFound