官方文档
Provides classes that manage Bluetooth functionality, such as scanning for devices, connecting with devices, and managing data transfer between devices. The Bluetooth API supports both "Classic Bluetooth" and Bluetooth Low Energy
提供管理蓝牙功能的类,例如对设备的扫描,连接设备,和管理设备之间的数据传输。蓝牙API支持经典蓝牙和低功耗蓝牙。
For more information about Classic Bluetooth, see the Bluetooth guide. For more information about Bluetooth Low Energy, see the Bluetooth Low Energy (BLE) guide.
对于更多关于经典蓝牙信息,请看蓝牙指南 对于更多关于蓝牙低耗,请查看蓝牙低耗指南
首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN">
<uses-permission android:name="android.permission.BLUETOOTH">
<uses-feature android:name="android.hardware.location.gps" />
6.0后需要动态获取权限
//判断是否有权限
if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
//判断是否需要 向用户解释,为什么要申请该权限if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_CONTACTS)) {
Toast.makeText(this, "shouldShowRequestPermissionRationale", Toast.LENGTH_SHORT).show();}}
蓝牙基本操作
BluetoothAdapter ---蓝牙适配器,操作蓝牙,包括:启动蓝牙、查询、绑定设备等
获取本地蓝牙适配器
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
startDiscovery() ---开启扫描
cancelDiscovery () ---- 取消当前的设备发现过程。意思是关闭正在搜索
isEnable()---如果蓝牙当前已启用且可以使用,则返回true
disable()---关闭蓝牙
enable()---打开蓝牙,不会提示用户
if(!mBluetoothAdapter.isEnabled()){
//弹出对话框提示用户是后打开
Intent enabler =newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, REQUEST_ENABLE);
//不做提示,直接打开,不建议用下面的方法,有的手机会有问题。
// mBluetoothAdapter.enable();