public final class BluetoothDevice
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.bluetooth.BluetoothDevice |
代表远程蓝牙设备。 A BluetoothDevice
可让您创建与相应设备的连接或查询其相关信息,例如名称,地址,类别和绑定状态。
这个类实际上只是一个蓝牙硬件地址的简单包装。 这个类的对象是不可变的。 这一类操作是在远程蓝牙硬件地址进行,使用BluetoothAdapter
这是用于创建此BluetoothDevice
。
要获得BluetoothDevice
,请使用BluetoothAdapter.getRemoteDevice(String)
创建一个代表已知MAC地址的设备(可通过BluetoothAdapter
获得设备发现),或者从BluetoothAdapter.getBondedDevices()
返回的一组绑定设备中获取一个。 然后,您可以打开一个BluetoothSocket
通讯与远程设备,使用createRfcommSocketToServiceRecord(UUID)
。
注意:需要 BLUETOOTH
权限。
有关使用蓝牙的更多信息,请阅读 Bluetooth开发人员指南。
也可以看看:
Inherited constants |
---|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<BluetoothDevice> |
CREATOR |
Public methods |
|
---|---|
BluetoothGatt |
connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback) 连接到由此设备托管的GATT服务器。 |
BluetoothGatt |
connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport) 连接到由此设备托管的GATT服务器。 |
boolean |
createBond() 开始与远程设备的绑定(配对)过程。 |
BluetoothSocket |
createInsecureRfcommSocketToServiceRecord(UUID uuid) 使用 |
BluetoothSocket |
createRfcommSocketToServiceRecord(UUID uuid) 创建一个RFCOMM |
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
boolean |
equals(Object o) 指示其他某个对象是否“等于”这一个。 |
boolean |
fetchUuidsWithSdp() 在远程设备上执行服务发现以获取支持的UUID。 |
String |
getAddress() 返回此BluetoothDevice的硬件地址。 |
BluetoothClass |
getBluetoothClass() 获取远程设备的蓝牙类。 |
int |
getBondState() 获取远程设备的绑定状态。 |
String |
getName() 获取远程设备的友好蓝牙名称。 |
int |
getType() 获取远程设备的蓝牙设备类型。 |
ParcelUuid[] |
getUuids() 返回远程设备的支持功能(UUID)。 |
int |
hashCode() 返回对象的哈希码值。 |
boolean |
setPairingConfirmation(boolean confirm) 确认 |
boolean |
setPin(byte[] pin) 在配对方法为 需要 |
String |
toString() 返回此BluetoothDevice的字符串表示形式。 |
void |
writeToParcel(Parcel out, int flags) 将此对象平铺到一个包裹中。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
String ACTION_ACL_CONNECTED
广播操作:表示与远程设备建立了低级别(ACL)连接。
总是包含额外的字段 EXTRA_DEVICE
。
ACL连接由Android蓝牙堆栈自动管理。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.ACL_CONNECTED”
String ACTION_ACL_DISCONNECTED
广播操作:表示从远程设备断开低级别(ACL)连接。
始终包含额外的字段 EXTRA_DEVICE
。
ACL连接由Android蓝牙堆栈自动管理。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.ACL_DISCONNECTED”
String ACTION_ACL_DISCONNECT_REQUESTED
广播操作:表示远程设备已经请求了低级别(ACL)断开连接,并且它很快就会断开连接。
这对于优雅的断开很有用。 应用程序应将此意图作为提示立即终止到远程设备的更高级别连接(RFCOMM,L2CAP或配置文件连接)。
始终包含额外的字段 EXTRA_DEVICE
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED”
String ACTION_BOND_STATE_CHANGED
广播动作:指示远程设备的绑定状态发生变化。 例如,如果设备被绑定(配对)。
总是包含额外的字段 EXTRA_DEVICE
, EXTRA_BOND_STATE
和 EXTRA_PREVIOUS_BOND_STATE
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.BOND_STATE_CHANGED”
String ACTION_CLASS_CHANGED
广播动作:远程设备的蓝牙类已更改。
始终包含额外的字段 EXTRA_DEVICE
和 EXTRA_CLASS
。
需要 BLUETOOTH
才能收到。
也可以看看:
常量值:“android.bluetooth.device.action.CLASS_CHANGED”
String ACTION_FOUND
广播动作:发现远程设备。
在发现过程中发现远程设备时发送。
始终包含额外的字段EXTRA_DEVICE
和EXTRA_CLASS
。 如果可用,可以包含额外的字段EXTRA_NAME
和/或EXTRA_RSSI
。
需要 BLUETOOTH
和 ACCESS_COARSE_LOCATION
才能接收。
常量值:“android.bluetooth.device.action.FOUND”
String ACTION_NAME_CHANGED
广播动作:指示首次检索到远程设备的友好名称,或自上次检索后更改。
始终包含额外的字段 EXTRA_DEVICE
和 EXTRA_NAME
。
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.NAME_CHANGED”
String ACTION_PAIRING_REQUEST
广播动作:这个意图用于广播对等请求
需要 BLUETOOTH_ADMIN
才能收到。
常量值:“android.bluetooth.device.action.PAIRING_REQUEST”
String ACTION_UUID
广播动作:这个意图用于广播ParcelUuid
,在远程设备被取出后,广播UUID
。 只有在请求使用服务发现协议提取远程设备的UUID时,才会发送此意向
始终包含额外的字段 EXTRA_DEVICE
总是包含额外的字段 EXTRA_UUID
需要 BLUETOOTH
才能收到。
常量值:“android.bluetooth.device.action.UUID”
int BOND_BONDED
表示远程设备已绑定(配对)。
远程设备本地存在共享链接密钥,因此可以对通信进行身份验证和加密。
与远程设备绑定(配对)并不一定意味着设备当前已连接。 这意味着挂起的过程在某个更早的时间完成,并且链接键仍保存在本地,准备在下一个连接上使用。
常量值:12(0x0000000c)
int BOND_NONE
表示远程设备未绑定(配对)。
没有与远程设备的共享链接密钥,因此通信(如果允许的话)将是未经验证的并且是未加密的。
常量值:10(0x0000000a)
int DEVICE_TYPE_CLASSIC
蓝牙设备类型,Classic - BR / EDR设备
常数值:1(0x00000001)
int DEVICE_TYPE_DUAL
蓝牙设备类型,双模式 - BR / EDR / LE
常量值:3(0x00000003)
int ERROR
这个类的Sentinel错误值。 保证在这个类中不等于任何其他整数常量。 为便于需要标记错误值的函数提供,例如:
Intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR)
常量值:-2147483648(0x80000000)
String EXTRA_BOND_STATE
在ACTION_BOND_STATE_CHANGED
意图中用作int外部字段。 包含远程设备的绑定状态。
可能的值有: BOND_NONE
, BOND_BONDING
, BOND_BONDED
。
常量值:“android.bluetooth.device.extra.BOND_STATE”
String EXTRA_CLASS
在 ACTION_FOUND
和 ACTION_CLASS_CHANGED
意图中 ACTION_FOUND
ACTION_CLASS_CHANGED
BluetoothClass
额外字段。
常量值:“android.bluetooth.device.extra.CLASS”
String EXTRA_DEVICE
在此类中广播的每个意图中用作BluetoothDevice
额外字段。 它包含意图适用的BluetoothDevice
。
常量值:“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
意图中的int外部字段作为密码的值。
常量值:“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
意图中用作int外部字段。 包含远程设备的前一个绑定状态。
可能的值有: BOND_NONE
, BOND_BONDING
, BOND_BONDED
。
常量值:“android.bluetooth.device.extra.PREVIOUS_BOND_STATE”
String EXTRA_RSSI
在ACTION_FOUND
意图中用作可选的短额外字段。 包含蓝牙硬件报告的远程设备的RSSI值。
常量值:“android.bluetooth.device.extra.RSSI”
String EXTRA_UUID
在作为一个额外的领域 ACTION_UUID
意图,包含 ParcelUuid
S上的遥控装置,该装置的parcelable版本 UUID
。
常量值:“android.bluetooth.device.extra.UUID”
int PAIRING_VARIANT_PASSKEY_CONFIRMATION
系统将提示用户确认屏幕上显示的密码,或者应用程序将确认用户的密码。
常量值:2(0x00000002)
int PAIRING_VARIANT_PIN
系统会提示用户输入一个PIN码或一个应用程序将为用户输入一个PIN码。
常量值:0(0x00000000)
int TRANSPORT_BREDR
优先将BR / EDR传输用于GATT连接到远程双模设备
常数值:1(0x00000001)
BluetoothGatt connectGatt (Context context, boolean autoConnect, BluetoothGattCallback callback)
连接到由此设备托管的GATT服务器。 来电者充当GATT客户端。 该回调用于将结果传递给呼叫者,例如连接状态以及任何其他GATT客户端操作。 该方法返回一个BluetoothGatt实例。 您可以使用BluetoothGatt进行GATT客户端操作。
Parameters | |
---|---|
context |
Context
|
autoConnect |
boolean : Whether to directly connect to the remote device (false) or to automatically connect as soon as the remote device becomes available (true). |
callback |
BluetoothGattCallback : GATT callback handler that will receive asynchronous callbacks. |
Returns | |
---|---|
BluetoothGatt |
Throws | |
---|---|
IllegalArgumentException |
if callback is null |
BluetoothGatt connectGatt (Context context, boolean autoConnect, BluetoothGattCallback callback, int transport)
连接到由此设备托管的GATT服务器。 来电者充当GATT客户端。 该回调用于将结果传递给呼叫者,例如连接状态以及任何其他GATT客户端操作。 该方法返回一个BluetoothGatt实例。 您可以使用BluetoothGatt进行GATT客户端操作。
Parameters | |
---|---|
context |
Context
|
autoConnect |
boolean : Whether to directly connect to the remote device (false) or to automatically connect as soon as the remote device becomes available (true). |
callback |
BluetoothGattCallback : GATT callback handler that will receive asynchronous callbacks. |
transport |
int : preferred transport for GATT connections to remote dual-mode devices TRANSPORT_AUTO or TRANSPORT_BREDR or TRANSPORT_LE |
Returns | |
---|---|
BluetoothGatt |
Throws | |
---|---|
IllegalArgumentException |
if callback is null |
boolean createBond ()
开始与远程设备的绑定(配对)过程。
这是一个异步调用,它会立即返回。 注册获得ACTION_BOND_STATE_CHANGED
意图,当绑定过程完成时及时通知其结果。
Android系统服务将处理必要的用户交互以确认并完成绑定过程。
需要 BLUETOOTH_ADMIN
。
Returns | |
---|---|
boolean |
false on immediate error, true if bonding will begin |
BluetoothSocket createInsecureRfcommSocketToServiceRecord (UUID uuid)
使用 BluetoothSocket
查找uuid,创建一个RFCOMM BluetoothSocket
套接字,以准备启动到此远程设备的不安全传出连接。
通信渠道将不会有认证的链接密钥,即它将受到中间人攻击。 对于蓝牙2.1设备,链路密钥将被加密,因为加密是强制性的。 对于传统设备(预蓝牙2.1设备),链路密钥将不会被加密。 如果需要加密和认证的通信信道,请使用createRfcommSocketToServiceRecord(UUID)
。
它旨在与 listenUsingInsecureRfcommWithServiceRecord(String, UUID)
用于对等蓝牙应用。
使用connect()
启动传出连接。 这也将执行给定uuid的SDP查找以确定连接到哪个通道。
远程设备将被认证,并且该套接字上的通信将被加密。
提示:如果要连接到蓝牙串行板,请尝试使用着名的SPP UUID 00001101-0000-1000-8000-00805F9B34FB。 但是,如果您要连接到Android对等方,请生成您自己的唯一UUID。
需要 BLUETOOTH
Parameters | |
---|---|
uuid |
UUID : service record uuid to lookup RFCOMM channel |
Returns | |
---|---|
BluetoothSocket |
a RFCOMM BluetoothServerSocket ready for an outgoing connection |
Throws | |
---|---|
IOException |
on error, for example Bluetooth not available, or insufficient permissions |
BluetoothSocket createRfcommSocketToServiceRecord (UUID uuid)
创建一个RFCOMM BluetoothSocket
准备使用 BluetoothSocket
查找uuid来启动到此远程设备的安全传出连接。
这是为与对等蓝牙应用程序 listenUsingRfcommWithServiceRecord(String, UUID)
配合使用而设计的。
使用connect()
启动传出连接。 这也将执行给定uuid的SDP查找以确定连接到哪个通道。
远程设备将被认证,并且该套接字上的通信将被加密。
只有经过身份验证的套接字链接才可以使用此套接字。 认证是指认证链路密钥以防止中间人攻击。 例如,对于蓝牙2.1设备,如果任何设备没有输入和输出功能,或者只能显示数字键,则不可能使用安全套接字连接。 在这种情况下,请使用{#link createInsecureRfcommSocketToServiceRecord}。 有关更多详细信息,请参阅蓝牙核心规范版本2.1 + EDR的安全模型部分5.2(第3卷)。
提示:如果要连接到蓝牙串行板,请尝试使用着名的SPP UUID 00001101-0000-1000-8000-00805F9B34FB。 但是,如果您要连接到Android对等方,请生成您自己的唯一UUID。
需要 BLUETOOTH
Parameters | |
---|---|
uuid |
UUID : service record uuid to lookup RFCOMM channel |
Returns | |
---|---|
BluetoothSocket |
a RFCOMM BluetoothServerSocket ready for an outgoing connection |
Throws | |
---|---|
IOException |
on error, for example Bluetooth not available, or insufficient permissions |
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象将在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
boolean equals (Object o)
指示其他某个对象是否“等于”这一个。
equals
方法在非空对象引用上实现等价关系:
x
, x.equals(x)
should return true
. x
and y
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
. x
, y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns true
, then x.equals(z)
should return true
. x
and y
, multiple invocations of x.equals(y)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified. x
, x.equals(null)
should return false
. 类Object
的equals
方法实现了对象上最可能的等价关系; 也就是说,对于任何非空参考值x
和y
,当且仅当x
和y
指向同一对象( x == y
的值为true
)时,此方法返回true
。
请注意,无论何时覆盖此方法,通常都需要覆盖 hashCode
方法,以维护 hashCode
方法的一般合同,该方法声明相等对象必须具有相同的哈希代码。
Parameters | |
---|---|
o |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
boolean fetchUuidsWithSdp ()
在远程设备上执行服务发现以获取支持的UUID。
这个API是异步的,并且ACTION_UUID
意图被发送,远程端支持UUID。 如果在获取SDP记录时出现错误,或者该过程需要很长时间,则ACTION_UUID
意图将与当前存在于缓存中的UUID一起发送。 如果不执行服务发现,客户端应该使用getUuids()
来获取UUID。
需要 BLUETOOTH
。
Returns | |
---|---|
boolean |
False if the sanity check fails, True if the process of initiating an ACL connection to the remote device was started. |
String getAddress ()
返回此BluetoothDevice的硬件地址。
例如,“00:11:22:AA:BB:CC”。
Returns | |
---|---|
String |
Bluetooth hardware address as string |
BluetoothClass getBluetoothClass ()
获取远程设备的蓝牙类。
需要 BLUETOOTH
。
Returns | |
---|---|
BluetoothClass |
Bluetooth class object, or null on error |
int getBondState ()
获取远程设备的绑定状态。
为债券型状态可能的值是: BOND_NONE
, BOND_BONDING
, BOND_BONDED
。
需要 BLUETOOTH
。
Returns | |
---|---|
int |
the bond state |
String getName ()
获取远程设备的友好蓝牙名称。
执行设备扫描时,本地适配器将自动检索远程名称,并将缓存它们。 此方法仅从缓存中返回此设备的名称。
需要 BLUETOOTH
Returns | |
---|---|
String |
the Bluetooth name, or null if there was a problem. |
int getType ()
获取远程设备的蓝牙设备类型。
需要 BLUETOOTH
Returns | |
---|---|
int |
the device type DEVICE_TYPE_CLASSIC , DEVICE_TYPE_LE DEVICE_TYPE_DUAL . DEVICE_TYPE_UNKNOWN if it's not available |
ParcelUuid[] getUuids ()
返回远程设备的支持功能(UUID)。
此方法不启动服务发现过程以从远程设备检索UUID。 而是返回服务UUID的本地缓存副本。
如果需要新的UUID,请使用 fetchUuidsWithSdp()
。
需要 BLUETOOTH
。
Returns | |
---|---|
ParcelUuid[] |
the supported features (UUIDs) of the remote device, or null on error |
int hashCode ()
返回对象的哈希码值。 为了散列表的好处而支持此方法,例如由HashMap
提供的HashMap
。
hashCode
的总合同是:
hashCode
method must consistently return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. 尽可能合理实用,类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
boolean setPairingConfirmation (boolean confirm)
确认 PAIRING_VARIANT_PASSKEY_CONFIRMATION
配对的密码。
需要 BLUETOOTH_ADMIN
。
Parameters | |
---|---|
confirm |
boolean
|
Returns | |
---|---|
boolean |
true confirmation has been sent out false for error |
boolean setPin (byte[] pin)
在配对方法为 PAIRING_VARIANT_PIN
时,在配对期间设置引脚
需要 BLUETOOTH_ADMIN
。
Parameters | |
---|---|
pin |
byte
|
Returns | |
---|---|
boolean |
true pin has been set false for error |
String toString ()
返回此BluetoothDevice的字符串表示形式。
目前这是蓝牙硬件地址,例如“00:11:22:AA:BB:CC”。 但是,如果明确需要蓝牙硬件地址,则应始终使用getAddress()
,以防toString()
表示将来发生更改。
Returns | |
---|---|
String |
string representation of this BluetoothDevice |
void writeToParcel (Parcel out, int flags)
将此对象平铺到一个包裹中。
Parameters | |
---|---|
out |
Parcel : The Parcel in which the object should be written. |
flags |
int : Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . |