一,获得BluetoothAdapter对象
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
二,判断当前设备中是否有蓝牙设备
if(adapter!=null){
//有蓝牙设备
}else{
//没有蓝牙设备
}
三,判断蓝牙是否打开和打开蓝牙
- if(adapter.isEnabled()){
- //BluetoothAdapter.ACTION_REQUEST_ENABLE为启动蓝牙的action
- Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
- startActivity(intent);
- }
四,得到所有已经配对蓝牙设备地址
- Set<BluetoothDevice> devices = adapter.getBondedDevices();
- if(devices.size()>0){
- for(Iterator iterator = devices.iterator();iterator.hasNext();){
- BluetoothDevice device = (BluetoothDevice) iterator.next();
- System.out.println("已配对的设备:"+device.getAddress());
- }
- }
五,设置蓝牙的可见性
- //启动修改蓝牙可见性的Intent
- Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
- //设置蓝牙可见性的时间,方法本身规定最多可见300秒
- intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
- startActivity(intent);
六,扫描周围的蓝牙设备
- adapter.startDiscovery();
android把扫描到的蓝牙设备通过广播的形式发出去,所以想接收扫描结果就必须写个广播接收器类。
- class BlutetoothReceiver extends BroadcastReceiver{
- @Override
- public void onReceive(Context context, Intent intent) {
- //从收到的intent对象中将代表远程蓝牙设配器的对象取出
- BluetoothDevice devices = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
- System.out.println(devices.getAddress());
- }
- }
七,注意事项:权限
注意:模拟器上不能模拟蓝牙设备,只能在真机上才能看到结果。
- <!-- 使用蓝牙设备的权限 -->
- <uses-permission android:name="android.permission.BLURTOOTH"/>
- <!-- 管理蓝牙设备的权限 -->
- <uses-permission android:name="android.permission.BLURTOOTH_ADMIN"/>