Android 蓝牙设备的查找和连接

1.权限
使用蓝牙设备需要先在Manifest中开放权限,位置如下。

<manifest ...>             <application ...>              ...       </application>          // 使用蓝牙设备的权限       <uses-permission Android:name="android.permission.BLUETOOTH" />       // 管理蓝牙设备的权限       <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />   </manifest>  

2.打开蓝牙
获得蓝牙适配器(android.bluetooth.BluetoothAdapter),检查该设备是否支持蓝牙,如果支持,就打开蓝牙。

// 检查设备是否支持蓝牙    adapter = BluetoothAdapter.getDefaultAdapter();   if (adapter == null)   {       // 设备不支持蓝牙    }   // 打开蓝牙    if (!adapter.isEnabled())   {       Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);       // 设置蓝牙可见性,最多300秒        intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);       context.startActivity(intent);   }  

3.获取已配对的蓝牙设备(android.bluetooth.BluetoothDevice)
首次连接某蓝牙设备需要先配对,一旦配对成功,该设备的信息会被保存,以后连接时无需再配对,所以已配对的设备不一定是能连接的。

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();   Set<BluetoothDevice> devices = adapter.getBondedDevices();   for(int i=0; i<devices.size(); i++)   {       BluetoothDevice device = (BluetoothDevice) devices.iterator().next();       System.out.println(device.getName());   }  

4.搜索周围的蓝牙设备
适配器搜索蓝牙设备后将结果以广播形式传出去,所以需要自定义一个继承广播的类,在onReceive方法中获得并处理蓝牙设备的搜索结果。

// 设置广播信息过滤    IntentFilter intentFilter = new IntentFilter();   intentFilter.addAction(BluetoothDevice.ACTION_FOUND);   intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);   intentFilter.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);   intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);   // 注册广播接收器,接收并处理搜索结果    context.registerReceiver(receiver, intentFilter);   // 寻找蓝牙设备,android会将查找到的设备以广播形式发出去    adapter.startDiscovery();  

自定义广播类

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyxfxd.html