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 欢迎您的加入.