1、搜索蓝牙
通过广播的方式获取蓝牙设备
1.1、初始化蓝牙相关和注册广播
/**
* 初始化蓝牙
*/
private void initBluetooth() {
//getString Bluetooth service
mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
//getString Bluetooth Adapter
mBluetoothAdapter = mBluetoothManager.getAdapter();
if (mBluetoothAdapter == null) {
Log.d(Tag, "Bluetooth is not support");
} else {
int status = mBluetoothAdapter.getState();
//bluetooth is disabled
if (status == BluetoothAdapter.STATE_OFF) {
// enable bluetooth
mBluetoothAdapter.enable();
}
}
// 注册这个 BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
IntentFilter filter1 = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(receiver, filter1);
}
1.2、广播回调,当调用mBluetoothAdapter.startDiscovery();方法时,Android设备便去搜索蓝牙设备,并且将搜索到的内容广播,在下面的广播监听到便走回调onReceive
/**
* 蓝牙广播接收
*/
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//蓝牙rssi参数,代表蓝牙强度
short rssi = intent.getExtras().getShort(BluetoothDevice.EXTRA_RSSI);
//蓝牙设备名称
String name = device.getName();
//蓝牙设备连接状态
int status = device.getBondState();
System.out.println("扫描到设备:" + name + " " + device.getAddress() + " " + device.getUuids());
if (device.getType() != BluetoothDevice.DEVICE_TYPE_LE) {