【蓝牙】BluetoothAdapter详解

BluetoothAdapter简介

  • BluetoothAdapter代表本地蓝牙设备适配器。BluetoothAdapter可以让我们执行基本的蓝牙任务,如发现蓝牙,查询蓝牙已配对列表,通过已知的MAC地址初始化一个BluetoothDevice实例,并且创建一个BluetoothServerSocket来监听其它设备的请求,启动蓝牙低功耗设备扫描等。
  • 要获取代表本地蓝牙适配器BluetoothAdapter,可以调用BluetoothManager上的BluetoothManager#getAdapter函数。在api17(JELLY_BEAN_MR1)及更低版本上,可以通过静态方法getDefaultAdapter()来获取BluetoothAdapter对象。
  • 从根本上来说,它是所有蓝牙活动的起点。一旦你获得了本地适配器对象,你就可以通过getBondedDevices()方法获取一系列已配对的蓝牙设备对象;通过startDiscovery()方法发现蓝牙设备;或者创建一个BluetoothServerSocket来监听通过 listenUsingRfcommWithServiceRecord(java.lang.String, java.util.UUID)进入的射频通信连接请求;或者通过startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallback)来扫描低功耗蓝牙设备。
  • 这个类是线程安全的

摘要

类型 方法或接口 说明
interface BluetoothAdapter.LeScanCallback 用于传递低功耗蓝牙扫描结果的回调接口
String ACTION_CONNECTION_STATE_CHANGED 用于广播本地蓝牙适配器与远端同种配置文件的蓝牙设备之间的连接状态改变
String ACTION_DISCOVERY_FINISHED 广播Action:发现结束的广播
String ACTION_DISCOVERY_STARTED 广播Action:发现开始的广播
String ACTION_LOCAL_NAME_CHANGED 广播Action:本地蓝牙适配器更改与其配对的蓝牙设备名称
String ACTION_REQUEST_DISCOVERABLE Activity Action:显示一个activity来请求发现模式
String ACTION_REQUEST_ENABLE Activity Action:显示一个activity来允许用户打开蓝牙
String ACTION_SCAN_MODE_CHANGED 广播Action:表示本地适配器蓝牙扫描模式已经改变
String ACTION_STATE_CHANGED 广播Action:本地蓝牙适配器已经改变的状态
int ERROR 这个类的哨兵错误值
String EXTRA_CONNECTION_STATE 被ACTION_CONNECTION_STATE_CHANGED使用的额外内容,此额外内容表示当前的连接状态。
String EXTRA_DISCOVERABLE_DURATION 在ACTION_REQUEST_DISCOVERABLE的intent中用作可选的int额外字段,以请求特定的持续时间以秒为单位。
String EXTRA_LOCAL_NAME 在ACTION_LOCAL_NAME_CHANGED的intent中用作字符串额外字段以请求本地蓝牙名称。
String EXTRA_PREVIOUS_CONNECTION_STATE ACTION_CONNECTION_STATE_CHANGED使用的额外内容,此额外内容表示以前的连接状态。
String EXTRA_PREVIOUS_SCAN_MODE 在ACTION_SCAN_MODE_CHANGED的intent中用作int extra字段,以请求先前的扫描模式。
String EXTRA_PREVIOUS_STATE 在ACTION_STATE_CHANGED的intent中用作int额外字段,以请求先前的电源状态。
String EXTRA_SCAN_MODE 在ACTION_SCAN_MODE_CHANGED的intent中用作int额外字段,以请求当前的扫描模式。
String EXTRA_STATE 在ACTION_STATE_CHANGED的intent中用作int额外字段,以请求当前电源状态。
int SCAN_MODE_CONNECTABLE 表示已禁用查询扫描,但是在本地Bluetooth适配器上启用了页面扫描。
int SCAN_MODE_CONNECTABLE_DISCOVERABLE 表示在本地蓝牙适配器上启用了查询扫描和页面扫描。
int SCAN_MODE_NONE 表示在本地蓝牙适配器上禁用了查询扫描和页面扫描。
int STATE_CONNECTED 配置文件处于连接状态
int STATE_CONNECTING 配置文件处于正在连接状态
int STATE_DISCONNECTED 配置文件处于断开连接状态
int STATE_DISCONNECTING 配置文件处于正在断开连接状态
int STATE_OFF 表示本地蓝牙适配器处于关闭状态
int STATE_ON 表示本地蓝牙适配器处于开启状态,准备使用
int STATE_TURNING_OFF 表示本地蓝牙适配器正在关闭
int STATE_TURNING_ON 表示本地蓝牙适配器正在开启
boolean cancelDiscovery() 取消当前设备蓝牙扫描进程
static boolean checkBluetoothAddress(String address) 验证蓝牙字符串地址,如: “00:43:A8:23:10:F0”,字符字母必须大写才有效
void closeProfileProxy(int profile, BluetoothProfile proxy) 关闭配置文件代理与服务的连接
boolean disable() 关闭本地蓝牙适配器-请勿在没有明确的用户操作的情况下关闭蓝牙。
boolean enable() 打开本地蓝牙适配器-未经明确的用户操作请勿使用以打开蓝牙。
String getAddress() 获取本地蓝牙适配器的硬件地址
BluetoothLeAdvertiser getBluetoothLeAdvertiser() 获取低功耗蓝牙的BluetoothAdvertiser对象
BluetoothLeScanner getBluetoothLeScanner() 获取低功耗蓝牙的BluetoothLeScanner对象
Set getBondedDevices() 获取已配对的蓝牙设备集合
static BluetoothAdapter getDefaultAdapter() 获取BluetoothAdapter对象
int getLeMaximumAdvertisingDataLength() 获取低功耗最大公告数据长度,以字节位单位
String getName() 获取本地蓝牙适配器的蓝牙名称
int getProfileConnectionState(int profile) 根据配置文件获取当前连接状态
boolean getProfileProxy(Context context, BluetoothProfile.ServiceListener listener, int profile) 获取与配置文件关联的配置文件代理对象
BluetoothDevice getRemoteDevice(byte[] address) 根据给定的蓝牙字节地址获取BluetoothDevice对象
BluetoothDevice getRemoteDevice(String address) 根据给定的字符串地址获取BluetoothDevice对象
int getScanMode() 获取扫描模式
int getState() 获取本地蓝牙适配器当前状态
boolean isDiscovering() 如果本地蓝牙适配器当前正在进行扫描,则返回true
boolean isEnabled() 如果当前蓝牙已打开且准备使用则返回true
boolean isLe2MPhySupported() 判断是否支持LE 2M PHY特性
boolean isLeCodedPhySupported() 判断是否支持LE Coded PHY特性
boolean isLeExtendedAdvertisingSupported() 判断是否支持LE Extended Advertising特性
boolean isLePeriodicAdvertisingSupported() 判断是否支持LE Periodic Advertising特性
boolean isMultipleAdvertisementSupported() 判断芯片组是否支持多个advertisement
boolean isOffloadedFilteringSupported() 判断是否支持分载过滤器
boolean isOffloadedScanBatchingSupported() 判断是否支持分载扫描批处理
BluetoothServerSocket listenUsingInsecureL2capChannel() 创建一个不安全的面向L2CAP的连接信道BluetoothServerSocket对象
BluetoothServerSocket listenUsingL2capChannel() 创建一个安全的面向L2CAP的连接信道BluetoothServerSocket对象
BluetoothServerSocket listenUsingRfcommWithServiceRecord(String name, UUID uuid) 创建一个监听器和一个携带服务数据的安全的RFCOMM蓝牙Socket
boolean setName(String name) 设置蓝牙适配器名称(可能调用这个方法后,你手机的蓝牙名称并没改变,可能是缓存问题)
boolean startDiscovery() 开始蓝牙扫描
boolean startLeScan(UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback) 这个方法将在api21中被遗弃,之后会用BluetoothLeScanner#startScan(List, ScanSettings, ScanCallback)来代替
boolean startLeScan(BluetoothAdapter.LeScanCallback callback) 这个方法将在api21中遗弃,将使用BluetoothLeScanner#startScan(List, ScanSettings, ScanCallback)来代替
void stopLeScan(BluetoothAdapter.LeScanCallback callback) 这个方法将在api21中遗弃,将会使用BluetoothLeScanner#stopScan(ScanCallback)来代替

常量

  • ACTION_CONNECTION_STATE_CHANGED
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) 
public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED";

未完待续

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章