您的位置:首页 > 产品设计 > UI/UE

Android 低功耗蓝牙(BLE)开发(3)-- BluetoothDevice详解

2016-12-24 21:55 696 查看
一. 概述代表一个远程蓝牙设备。通过此类可以查询其名称、地址、连接状态等信息。这个类的操作会执行在远程蓝牙硬件上,BluetoothDevice获取方法:1.使用BluetoothAdapter.getRemoteDevice(String)方法去创建一个已知MAC地址的设备2.通过 BluetoothAdapter.getBondedDevices()得到已经配对的设备集合二. 常量1.广播常量 主要广播常量如下图:String ACTION_ACL_CONNECTED :与远程设备建立连接(低级别)发送的广播,总是包含EXTRA_DEVICE附加域.常量值:"android.bluetooth.device.action.ACL_CONNECTED"String ACTION_ACL_DISCONNECTED:与远程设备断开连接(低级别)发送的广播,总是包含EXTRA_DEVICE附加域.常量值: "android.bluetooth.device.action.ACL_DISCONNECTED"String ACTION_ACL_DISCONNECT_REQUESTED:远程设备提出断开连接的请求,即将断开连接 ,总是包含EXTRA_DEVICE附加域,友好的断开连接,一般会发送此广播。常量值: "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED"String ACTION_BOND_STATE_CHANGED:远程设备连接状态改变,如一个设备已经被匹配,总是包含EXTRA_DEVICE,EXTRA_BOND_STATE和 EXTRA_PREVIOUS_BOND_STATE.这些附加域。常量值: "android.bluetooth.device.action.BOND_STATE_CHANGED"String ACTION_CLASS_CHANGED:一个已经改变的远程设备的蓝牙类,总是包含EXTRA_DEVICE和EXTRA_BOND_STATE这些附加域。常量值:"android.bluetooth.device.action.CLASS_CHANGED"String ACTION_FOUND发现远程设备,当远程设备在查找过程中被发现时会发送该广播,总是包含EXTRA_DEVICE, EXTRA_CLASS附加域, 如果这个蓝牙可用的话, 还会包含EXTRA_NAME, EXTRA_RSSI附加域,常量值:"android.bluetooth.device.action.FOUND"String ACTION_NAME_CHANGED远程设备的名称改变或第一次发现远程蓝牙设备的名称时发出该广播,总是包含附加域EXTRA_DEVICE , EXTRA_NAME附加域,常量值:"android.bluetooth.device.action.NAME_CHANGED"String ACTION_PAIRING_REQUEST:用于广播配对请求,常量值:"android.bluetooth.device.action.PAIRING_REQUEST"String ACTION_UUID远程设备取回ParcelUuid封装的UUID的广播,只有当请求使用服务发现协议提取远程设备的UUID时,才会发送此意图,总是包含附加域EXTRA_DEVICE, EXTRA_UUID附加域常量值: "android.bluetooth.device.action.UUID"2.绑定状态常量int BOND_BONDED :已绑定常量值:12int BOND_BONDING:绑定中 常量值:11int BOND_NONE:未匹配 常量值:103.蓝牙类型常量int DEVICE_TYPE_CLASSIC:传统蓝牙 常量值:1int DEVICE_TYPE_DUAL:双模蓝牙 常量值:3int DEVICE_TYPE_LE:低功耗蓝牙 常量值:2int DEVICE_TYPE_UNKNOWN:未知 常量值:04.附加域常量String EXTRA_BOND_STATE: 绑定状态,ACTION_BOND_STATE_CHANGED 的int附加域, 可能的值为 BOND_BONDED, BOND_BONDING, BOND_NONE,常量值:android.bluetooth.device.extra.BOND_STATEString EXTRA_CLASS: ParcelableBluetoothClass附加域,ACTION_FOUND,ACTION_CLASS_CHANGED 广播的附加域,常量值:android.bluetooth.device.extra.CLASSString EXTRA_DEVICE:[b]ParcelableBluetoothDevice附加域,[/b]常量值:"android.bluetooth.device.extra.DEVICE"String EXTRA_NAME:蓝牙名称,作为ACTION_NAME_CHANGED和ACTION_FOUND的字符串附加域,常量值:"android.bluetooth.device.extra.NAME"String EXTRA_PAIRING_KEY:用作ACTION_PAIRING_REQUEST意图中的intextra字段作为passkey的值。常量值:“android.bluetooth.device.extra.PAIRING_KEY”String  EXTRA_PAIRING_VARIANT:ACTION_PAIRING_REQUEST意图中的int extra字段,以指示使用的配对方法。 可能的值有:PAIRING_VARIANT_PIN,PAIRING_VARIANT_PASSKEY_CONFIRMATION,常量值:“android.bluetooth.device.extra.PAIRING_VARIANT”String  EXTRA_PREVIOUS_BOND_STATE:之前的绑定状态ACTION_BOND_STATE_CHANGED的整型附加域,可能值有:BOND_NONE, BOND_BONDING, BOND_BONDED.常量值: "android.bluetooth.device.extra.PREVIOUS_BOND_STATE"String  EXTRA_RSSI:信号强度,作为ACTION_FOUND的可选短整型附加域。常量值:"android.bluetooth.device.extra.RSSI"String EXTRA_UUID:作为ACTION_UUID意图中的一个附加域,包含远程设备的ParcelUuid。常量值:“android.bluetooth.device.extra.UUID”5.其他常量以下常量是在API19及之后添加的int PAIRING_VARIANT_PASSKEY_CONFIRMATION:将提示用户确认屏幕上显示的密钥,或app将确认用户的密钥。常量值:2int PAIRING_VARIANT_PIN:提示用户输入一个PIN或应用程序为用户输入一个PIN。 常量值:0int TRANSPORT_AUTO:对于GATT连接到远程双模设备无物理传输优先,常量值:0int TRANSPORT_BREDR:GATT连接到远程双模设备优先BR/EDR常量值:1int TRANSPORT_LE:GATT连接到远程双模设备优先BLE常量值:2三    公共方法BluetoothGatt connectGatt (Context context, boolean autoConnect,BluetoothGattCallback callback)作用:连接到当前设备GATT的服务端,调用者相当于客户端,通过回调将结果返回给调用者,该方法返回一个BluetoothGatt实例,通过该实例来进行客户端的操作。如果回调为null,会抛出IllegalArgumentException异常BluetoothGatt connectGatt (Context context,boolean autoConnect,BluetoothGattCallback callback,int transport)作用:相比上面的方法多了一个transport参数,这个参数的主要作用是:用于GATT连接到远程双模设备选择:TRANSPORT_AUTO或TRANSPORT_BREDR或TRANSPORT_LEboolean createBond ()作用:开始与远程设备的绑定(配对)过程。这是一个异步调用,它会立即返回。注册ACTION_BOND_STATE_CHANGED意图,以便在绑定完成得到通知及结果。返回:如果绑定即将开始返回trueBluetoothSocket createInsecureRfcommSocketToServiceRecord (UUID uuid)作用:创建BluetoothSocket连接对象,调用BluetoothSocket对象的connect()方法创建一个连接,通过UUID执行对应信道的SDP查找动作,从而确定连接到哪一个通道上(不安全)BluetoothSocket createRfcommSocketToServiceRecord (UUID uuid)作用:创建BluetoothSocket连接对象,调用BluetoothSocket对象的connect()方法创建一个连接,通过UUID执行对应信道的SDP查找动作,从而确定连接到哪一个通道上(安全)boolean fetchUuidsWithSdp ()作用:在远程设备上执行服务以获取支持的UUID。String getAddress ()作用:获取设备的蓝牙地址,地址为17位,都为大写字母BluetoothClass getBluetoothClass ()作用:获取远程设备的蓝牙类int getBondState () 作用:获取远程设备的状态, 可能会是BOND_BONDED, BOND_BONDING, BOND_NONEString getName ()作用:获取远程设备的蓝牙名称ParcelUuid[] getUuids ()作用:返回远程设备支持的UUID。此方法从远程设备检索UUID不启动服务。 而是返回服务UUID的本地缓存。如果需要刷新UUID,使用fetchUuidsWithSdp()方法。int getType ()作用:获取远程设备的蓝牙设备类型。返回值:
DEVICE_TYPE_CLASSIC
DEVICE_TYPE_LE
 
DEVICE_TYPE_DUAL
DEVICE_TYPE_UNKNOWN
boolean setPin (byte[] pin)作用:当配对方法为PAIRING_VARIANT_PIN时,在配对期间设置PINboolean setPairingConfirmation (boolean confirm)作用:确认PAIRING_VARIANT_PASSKEY_CONFIRMATION配对的密钥
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  BLE蓝牙 android 蓝牙