Android蓝牙服务的相关类简介之BluetoothAdapter
BluetoothAdapter
代表了本地设备蓝牙适配器,其作用有:执行基本的蓝牙任务,如初始化设备扫描,查询一系列配对的设备,利用MAC地址链接BluetoothDevice,
创建BluetoothServerSocket来监听其他设备的链接请求,开始对Bluetooth LE devices(android4.3后支持的蓝牙类型)的扫描.
如何得到BluetoothAdapter?
系统是JELLY_BEAN_MR1(android4.2* API17)或者更低版本,通过BluetoothAdapter.getDefaultAdapter() 的静态方法得到.
系统是JELLY_BEAN_MR2(android4.3 API18)或者更高版本,也可以通过下面方法获得
BluetoothManager manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter adapter = manager.getAdapter();
可以肯定的说,获得BluetoothAdapter是蓝牙操作的开端.
获得了BluetoothAdapter后,可以通过getBondedDevices获得已经配对的设备集合;通过startDiscovery()开始设备扫描;
创建BluetoothServerSocket监听到来的链接请求(listenUsingRfcommWithServiceRecord(String,UUID));
或者利用startLeScan(LeScanCallback callback)来开启扫BLE设备
常用方法
- isEnabled()
如果本地蓝牙处在可用状态(例如手机蓝牙开启)就返回true
- getState()
获得蓝牙状态 一般有BluetoothAdapter.STATE_BLE_ON ,STATE_BLE_TURNING_ON ,STATE_BLE_TURNING_OFF ,STATE_OFF
- enable()
打开蓝牙设备,这种方式不友好,建议使用下面方法
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(intent,OPEN_REQUEST_CODE);
这样会有个弹窗提示用户是否开启蓝牙
- disable()
关闭所有的蓝牙连接后关闭本地蓝牙服务
- getAddress()
获得蓝牙mac地址
- getName()
获得蓝牙名称,也就收我们经常设置的蓝牙名称
- setName()
设置蓝牙名称
- startDiscovery()
开始发现设备(注意是设备,例如另外一个手机,而不是蓝牙耳机之类的)
- getBondedDevices()
获取绑定(配对)的设备,测试发现只有手动取消绑定才管用,否则即使关闭蓝牙,间隔一会再打开,这些仍然是绑定的.
同时一些绑定的设备(例如手环)用这个方法并没有返回对应的device - startLeScan(LeScanCallback)
开始对Bluetooth LE devices设备(蓝牙耳机,手环,电子称等)的扫描.回调函数会把扫描到的设备返回,
注意设备会重复被扫描到,最好去掉重复,去重时可以用mac地址,也可以用名称,但是扫描到的Device第一次没有把
名称带回,所以获取名称时最好做非空判断 - stopLeScan(LeScanCallback)
停止扫描