赞
踩
一个Android系统只有一个BluetoothAdapter
执行基本的蓝牙任务,例如启动设备发现、查询绑定(配对)设备的列表、使用已知MAC地址实例化BluetoothDevice、创建BluetoothServerSocket以侦听其他设备的连接请求,以及启动对Bluetooth LE设备的扫描。
要获取本地蓝牙适配器的BluetoothAdapter,请调用BluetoothManager上的BluetoothManager.getAdapter()
函数,在JELLY_BEAN_MR1及以下版本上,需要使用静态getDefaultAdapter()
方法
第一种方法:(注此方法只支持在Android 4.3(18)及以上版本)
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter btAdapter = bluetoothManager.getAdapter();
第二种方法:
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
一旦有了本地适配器,就可以得到一组BluetoothDevice对象,用getBondedDevices()
表示所有配对的设备;使用startDiscovery()
启动设备发现;或者创建一个BluetoothServerSocket,用listenUsingRfcommWithServiceRecord(java.lang.String,java.util.UUID)
第一个参数为服务器名称,第二个参数一个UUID;监听传入的RFComm连接请求;使用listenUsingL2capChannel()
侦听传入的L2CAP面向连接的通道(CoC)连接请求;或者用StarteScan(android.Bluetooth.BluetoothAdapter.LeScanCallback)
开始扫描蓝牙LE设备。
interface(接口):
BluetoothAdapter.LeScanCallback | 用于传递LE扫描结果的回调接口。 |
Constants(常数):
ACTION_CONNECTION_STATE_CHANGED | String | 用于将本地蓝牙适配器连接状态的更改广播到远程设备的配置文件 |
ACTION_DISCOVERY_FINISHED | String | 广播操作:本地蓝牙适配器已完成设备发现过程。 |
ACTION_DISCOVERY_STARTED | String | 广播操作:本地蓝牙适配器已启动远程设备发现过程。 |
ACTION_LOCAL_NAME_CHANGED | String | 广播操作:本地蓝牙适配器已更改其蓝牙名称。 |
ACTION_REQUEST_DISCOVERABLE | String | 活动操作:显示请求可发现模式的系统活动。 |
ACTION_REQUEST_ENABLE | String | 活动操作:显示允许用户打开蓝牙的系统活动。 |
ACTION_SCAN_MODE_CHANGED | String | 广播操作:表示本地适配器的蓝牙扫描模式已更改。 |
ACTION_STATE_CHANGED | String | 广播操作:本地蓝牙适配器的状态已更改。 |
ERROR | int | 该类的Sentinel错误值。 |
EXTRA_CONNECTION_STATE | String | ACTION_CONNECTION_STATE_CHANGED使用的额外值此额外值表示当前连接状态。 |
EXTRA_DISCOVERABLE_DURATION | String | 在ACTION_REQUEST_DISCOVERABLE意图中用作可选的int额外字段,以秒为单位请求特定的可发现时间。 |
EXTRA_LOCAL_NAME | String | 用作ACTION_LOCAL_NAME_更改了请求本地蓝牙名称的意图中的字符串额外字段。 |
EXTRA_PREVIOUS_CONNECTION_STATE | String | ACTION_CONNECTION_STATE_CHANGED使用的额外值此额外值表示以前的连接状态。 |
EXTRA_PREVIOUS_SCAN_MODE | String | 在ACTION_SCAN_MODE_CHANGED中用作int额外字段,更改了请求上一个扫描模式的意图。 |
EXTRA_PREVIOUS_STATE | String | 在ACTION_STATE_CHANGED中用作int额外字段,更改意图以请求以前的电源状态。 |
EXTRA_SCAN_MODE | String | 在ACTION\u SCAN\u MODE\u更改意图以请求当前扫描模式中用作int额外字段。 |
EXTRA_STATE | String | 用作ACTION_STATE_CHANGED中的int额外字段。意图以请求当前电源状态。 |
SCAN_MODE_CONNECTABLE | 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 | int | 表示本地蓝牙正在打开 |
Public methods(方法):绿色为比较常用的方法
boolean | startDiscovery() | 启动远程设备发现过程 |
boolean | cancelDiscovery() | 取消当前的设备发现过程 |
static boolean | checkBluetoothAddress(String address) | 验证字符串蓝牙地址,例如“00:43:A8:23:10:F0” 字母字符必须为大写才能有效。 |
boolean | isEnabled() | 如果蓝牙当前已启用并准备好使用,则返回true |
boolean | disable() | 关闭蓝牙,在Android 13 中被弃用,Android 13不允许应用程序启用或禁用蓝牙,此API始终返回false,android12及以下可正常使用 |
boolean | enable() | 打开蓝牙,同上在Android 13 中被弃用 |
String | getAddress() | 返回本地蓝牙适配器的硬件地址 |
BluetoothLeAdvertiser | getBluetoothLeAdvertiser() | 返回Bluetooth LeadVertiser对象,用于Bluetooth LE广告操作 |
BluetoothLeScanner | getBluetoothLeScanner() | 返回蓝牙LE扫描操作的BluetoothLeScanner对象 |
Set<BluetoothDevice> | getBondedDevices() | 返回绑定(配对)到本地适配器的BluetoothDevice对象集 |
static BluetoothAdapter | getDefaultAdapter() | Android 12 (API 31)中被弃用。这种方法任继续有效,但强烈鼓励开发人员迁移到新方法,因为新方法支持上下文CreateAttributeContext,新方法上述有讲 |
Duration | getDiscoverableTimeout() | 获取 SCAN_MODE_CONNECTABLE_DISCOVERABLE 的超时持续时间 |
int | getMaxConnectedAudioDevices() | 获取此设备的每个音频配置文件的最大连接设备数 |
String | getName() | 获取本地蓝牙适配器的友好蓝牙名称 |
int | getProfileConnectionState(int profile) | 获得配置文件当前的连接状态 |
boolean | getProfileProxy(Context context, BluetoothProfile.ServiceListener listener, int profile) | 获取与配置文件关联的配置文件代理对象,通过BluetoothProfile.ServiceListener回调接口返回对象 |
void | closeProfileProxy(int profile, BluetoothProfile proxy) | 关闭配置文件代理与服务的连接 |
BluetoothDevice | getRemoteDevice(byte[] address) | 获取给定蓝牙硬件地址的BluetoothDevice对象 |
BluetoothDevice | getRemoteDevice(String address) | 重载方法同上 |
BluetoothDevice | getRemoteLeDevice(String address, int addressType) | 获取给定蓝牙硬件地址和地址类型的BluetoothDevice对象 |
int | getScanMode() | 获取本地蓝牙适配器的当前蓝牙扫描模式 |
int | getState() | 获取本地蓝牙适配器的当前状态 |
boolean | isDiscovering() | 如果本地蓝牙适配器当前处于设备发现过程中,则返回true |
boolean | isLe2MPhySupported() | 如果支持LE 2M PHY功能,则返回true |
boolean | isLeCodedPhySupported() | 如果支持LE编码的PHY功能,则返回true |
boolean | isLeExtendedAdvertisingSupported() | 如果支持LE扩展广告功能,则返回true |
boolean | isLePeriodicAdvertisingSupported() | 如果支持定期广告功能,则返回true |
int | getLeMaximumAdvertisingDataLength() | 如果支持LE扩展广告功能,则返回最大LE广告数据长度(字节),否则返回0 |
boolean | isMultipleAdvertisementSupported() | 如果芯片组支持多重播发,则返回true,Android 11 及以下需要申请权限 |
boolean | isOffloadedFilteringSupported() | 如果支持卸载过滤器,则返回true,Android 11 及以下需要申请权限 |
boolean | isOffloadedScanBatchingSupported() | 如果支持卸载扫描批处理,则返回true Android 11 及以下需要申请权限 |
BluetoothServerSocket | listenUsingInsecureL2capChannel() | 创建一个不安全的L2CAP面向连接的通道(CoC)BluetoothServerSocket,并分配一个动态PSM值 |
BluetoothServerSocket | listenUsingInsecureRfcommWithServiceRecord(String name, UUID uuid) | 创建一个带有服务记录的监听、不安全的RFCOMM蓝牙套接字。 |
BluetoothServerSocket | listenUsingL2capChannel() | 创建一个安全的L2CAP面向连接的通道(CoC)BluetoothServerSocket,并分配一个动态协议/服务多路复用器(PSM)值 |
BluetoothServerSocket | listenUsingRfcommWithServiceRecord(String name, UUID uuid) | 创建一个具有服务记录的监听、安全的RFCOMM蓝牙套接字 |
boolean | setName(String name) | 设置本地蓝牙适配器的蓝牙名称 |
boolean | startLeScan(UUID[] serviceUuids, BluetoothAdapter.LeScanCallback callback) | Android 5中不推荐使用此方法。改用BluetoothLeScanner.startScan(List, ScanSettings, ScanCallback) |
boolean | startLeScan(BluetoothAdapter.LeScanCallback callback) | 重载方法 同上Android 5中不推荐使用 |
void | stopLeScan(BluetoothAdapter.LeScanCallback callback) | Android 5中不推荐使用此方法 BluetoothLeScanner#stopScan(ScanCallback) 代替 |
此类的对象是不可变的,通过BluetoothAdapter和在远程Bluetooth硬件地址创建
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
//根据mac地址获得远程蓝牙设备
BluetoothDevice btDevice = btAdapter.getRemoteDevice(String MAC);
//获取所有已配对蓝牙设备
Set<BluetoothDevice> devices = btAdapter .getBondedDevices();
表示远程蓝牙设备。BluetoothDevice允许您创建与相应设备的连接或查询有关该设备的信息,例如名称、地址、类和绑定状态
Constants(常数):
String | ACTION_ACL_CONNECTED | 广播操作:表示已与远程设备建立低级别(ACL)连接 |
String | ACTION_ACL_DISCONNECTED | 广播操作:表示与远程设备的低级别(ACL)断开连接 |
String | ACTION_ACL_DISCONNECT_REQUESTED | 广播操作:表示远程设备已请求低级别(ACL)断开连接,并且很快将断开连接(正在断开连接) |
String | ACTION_ALIAS_CHANGED | 广播操作:表示远程设备的别名已更改。 |
String | ACTION_BOND_STATE_CHANGED | 广播操作:表示远程设备的绑定状态发生变化 |
String | ACTION_CLASS_CHANGED | 广播操作:远程设备的蓝牙类别已更改 |
String | ACTION_FOUND | 广播操作:发现远程设备 |
String | ACTION_NAME_CHANGED | 广播操作:表示第一次检索到远程设备的友好名称,或自上次检索以来更改了远程设备的友好名称 |
String | ACTION_PAIRING_REQUEST | 广播操作:此意图用于广播配对请求,在Android 12或以下需要申请权限 |
String | ACTION_UUID | 在获取UUID后,将其包装为远程设备的ParcelUuid进行广播 |
int | ADDRESS_TYPE_PUBLIC | 设备的硬件MAC地址 |
int | ADDRESS_TYPE_RANDOM | 地址可以是可解析的、不可解析的或静态的 |
int | ADDRESS_TYPE_UNKNOWN | 地址类型未知或不可用 |
int | BOND_BONDED | 表示远程设备已绑定(配对) |
int | BOND_BONDING | 表示正在与远程设备进行连接(配对) |
int | BOND_NONE | 表示远程设备未绑定(配对)。 |
int | DEVICE_TYPE_CLASSIC | 蓝牙设备类型,经典型-BR/EDR设备 |
int | DEVICE_TYPE_DUAL | 蓝牙设备类型,双模式-BR/EDR/LE |
int | DEVICE_TYPE_LE | 蓝牙设备类型,低能耗-仅限LE |
int | DEVICE_TYPE_UNKNOWN | 蓝牙设备类型,未知 |
int | ERROR | 错误 |
String | EXTRA_BOND_STATE | ACTION_BOND_STATE_CHANGED 的额外字段 |
String | EXTRA_CLASS | ACTION_FOUND 和 ACTION_CLASS_CHANGED 的额外字段 |
String | EXTRA_DEVICE | BluetoothDevice 的额外字段 |
String | EXTRA_IS_COORDINATED_SET_MEMBER | ACTION_FOUND 的额外字段 |
String | EXTRA_NAME | ACTION_NAME_CHANGED 和 ACTION_FOUND 的额外字段 |
String | EXTRA_PAIRING_KEY | ACTION_PAIRING_REQUEST 的额外字段 |
String | EXTRA_PAIRING_VARIANT | ACTION_PAIRING_REQUEST 的额外字段 |
String | EXTRA_PREVIOUS_BOND_STATE | ACTION_BOND_STATE_CHANGED 的额外字段 |
String | EXTRA_RSSI | ACTION_FOUND 的额外字段 |
String | EXTRA_TRANSPORT | ACTION_ACL_CONNECTED 和 ACTION_ACL_DISCONNECTED 的额外字段,用于指示连接了哪个传输 |
String | EXTRA_UUID | ACTION_UUID 的额外字段,该设备是UUID的可打包版本 |
int | PAIRING_VARIANT_PASSKEY_CONFIRMATION | 系统将提示用户确认屏幕上显示的密钥,或者应用程序将为用户确认密钥 |
int | PAIRING_VARIANT_PIN | 系统将提示用户输入pin或应用程序为用户输入pin |
int | PHY_LE_1M | 蓝牙LE 1M物理层 |
int | PHY_LE_1M_MASK | 蓝牙LE 1M PHY掩码 |
int | PHY_LE_2M | 蓝牙LE 2M物理层 |
int | PHY_LE_2M_MASK | 蓝牙LE 2M PHY掩码 |
int | PHY_LE_CODED | 蓝牙LE编码PHY |
int | PHY_LE_CODED_MASK | 蓝牙LE编码PHY掩码 |
int | PHY_OPTION_NO_PREFERRED | 在LE编码的PHY上传输时,没有首选编码 |
int | PHY_OPTION_S2 | 在LE编码PHY上传输时,首选使用S=2编码 |
int | PHY_OPTION_S8 | 在LE编码PHY上传输时,首选使用S=8编码 |
int | TRANSPORT_AUTO | GATT连接到远程双模设备的物理传输无偏好 |
int | TRANSPORT_BREDR | 表示BR/EDR传输的常量 |
int | TRANSPORT_LE | 表示蓝牙低能量(BLE)传输的常数 |
Public methods(方法):绿色为比较常用的方法
BluetoothGatt | connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback) | 连接到此设备托管的GATT服务器(低功耗蓝牙) |
BluetoothGatt | connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport, int phy, Handler handler) | 重载方法同上 |
BluetoothGatt | connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport, int phy) | 重载方法同上 |
BluetoothGatt | connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport) | 重载方法同上 |
BluetoothGatt | createBond() | 启动与远程设备的绑定(配对)过程 |
BluetoothSocket | createInsecureL2capChannel(int psm) | 创建一个蓝牙L2CAP连接导向通道(CoC)BluetoothSocket,用于以相同的动态协议/服务多路复用器(PSM)值启动到远程设备的安全传出连接 |
BluetoothSocket | createInsecureRfcommSocketToServiceRecord(UUID uuid) | 创建RFCOMM BluetoothSocket套接字,以便使用uuid的SDP查找启动到此远程设备的不安全传出连接 |
BluetoothSocket | createL2capChannel(int psm) | 创建一个蓝牙L2CAP连接导向通道(CoC)BluetoothSocket,用于以相同的动态协议/服务多路复用器(PSM)值启动到远程设备的安全传出连接 |
BluetoothSocket | createRfcommSocketToServiceRecord(UUID uuid) | 创建RFCOMM BluetoothSocket,以便使用uuid的SDP查找启动到此远程设备的安全传出连接 |
int | describeContents() | 描述此Parcelable实例的封送表示中包含的特殊对象的类型 |
boolean | equals(Object o) | 指示其他对象是否“等于”此对象(判断是否是同一个设备) |
boolean | fetchUuidsWithSdp() | 在远程设备上执行服务发现,以获得受支持的UUID |
String | getAddress() | 返回此BluetoothDevice的硬件地址 |
String | getAlias() | 获取远程蓝牙设备的本地可修改名称(别名) |
BluetoothClass | getBluetoothClass() | 获取远程设备的蓝牙类 |
int | getBondState() | 获取远程设备的绑定状态 |
String | getName() | 获取远程设备的蓝牙名称 |
int | getType() | 获取远程设备的蓝牙设备类型 |
ParcelUuid[] | getUuids() | 返回远程设备支持的功能(UUID) |
int | hashCode() | 返回对象的哈希代码值 |
int | setAlias(String alias) | 设置远程蓝牙设备的本地可修改名称(别名) |
boolean | setPairingConfirmation(boolean confirm) | 确认配对的密钥PAIRING_VARIANT_PASSKEY_CONFIRMATION |
boolean | setPin(byte[] pin) | 在配对过程中设置pin码适用于针对Build的应用程序,android 10 及以下需要申请BLUETOOTH_ADMIN 权限 |
String | toString() | 返回BluetoothDevice的字符串表示形式 |
void | writeToParcel(Parcel out, int flags) | 序列化 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。