Bluetooth-->蓝牙开发之状态判断

1:判断设备是否支持蓝牙

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (null == adapter) {
    //蓝牙不支持
}

注意:

在小于等于JELLY_BEAN_MR1 (API 17)的版本中,使用BluetoothAdapter.getDefaultAdapter(),获取BluetoothAdapter
在大于等于JELLY_BEAN_MR2 (API 18)的版本中,使用getSystemService(Context.BLUETOOTH_SERVICE),获取BluetoothManager ,然后通过BluetoothManager.getAdapter()的方式, 获取BluetoothAdapter.

public static BluetoothAdapter getDefaultAdapter(Context context) {
  BluetoothAdapter adapter = null;
  if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      adapter = BluetoothAdapter.getDefaultAdapter();
  } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
      final BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
      adapter = bluetoothManager.getAdapter();
  }
  return adapter;
}

蓝牙相关权限:


<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>

2:判断蓝牙是否打开

if (defaultAdapter.isEnabled()) {
    defaultAdapter.disable();//断开蓝牙
} else {
    defaultAdapter.enable();//打开蓝牙
}

3:BluetoothAdapter 其他方法说明

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(defaultAdapter.getName());//蓝牙名称
stringBuilder.append(" ");
stringBuilder.append(defaultAdapter.getAddress());//蓝牙地址
stringBuilder.append("\nMode:");
stringBuilder.append(defaultAdapter.getScanMode());//扫描模式
stringBuilder.append(" State:");
stringBuilder.append(defaultAdapter.getState());//当前状态
stringBuilder.append(" ");
stringBuilder.append(defaultAdapter.isDiscovering());//是否正在扫描
defaultAdapter.setName("Bluetooth Name");//设置蓝牙名称
//蓝牙名称最大支持248个字节,但是有些设备只能显示前40个字符,有些只能显示20个字符.
defaultAdapter.startDiscovery();//开始扫描蓝牙设备
defaultAdapter.cancelDiscovery();//取消扫描

defaultAdapter.getScanMode() 扫描模式说明:

20 SCAN_MODE_NONE                       //即不能连接设备,也不能被发现
21 SCAN_MODE_CONNECTABLE                //能连接远程设备,但不能被远程设备发现
23 SCAN_MODE_CONNECTABLE_DISCOVERABLE   //即连接设备,也能被发现.(通常情况下都是此模式.)

defaultAdapter.getState() 蓝牙状态说明

10 STATE_OFF            //蓝牙已关闭
11 STATE_TURNING_ON     //蓝牙正在打开
12 STATE_ON             //蓝牙已打开
13 STATE_TURNING_OFF    //蓝牙正在关闭

4:获取已经配对的蓝牙设备

defaultAdapter.getBondedDevices();//获取配对成功的蓝牙设备信息

5:带交互的打开蓝牙和可见性设置

//会弹出系统对话框,提示用户是否允许蓝牙设备对其他设备的可见性
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120);//可被发现的持续时间
startActivity(intent);
//会弹出一个对话框,提示用户是否允许打开蓝牙
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBtIntent);
//打开系统蓝牙界面
Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(intent);

至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

你可能感兴趣的:(Bluetooth)