返回介绍

BluetoothDevice

发布于 2025-03-09 17:00:19 字数 10846 浏览 0 评论 0 收藏 0

BluetoothDevice

版本:Android 2.3 r1

结构

继承关系

public final class BluetoothDevice extends Object implements Parcelable

java.lang.Object

android.bluetooth.BluetoothDevice

类概述

代表一个远程蓝牙设备。让你创建一个带有各自设备的 BluetoothDevice 或者查询其皆如名称、地址、类和连接状态等信息。

对于蓝牙硬件地址而言,这个类仅仅是一个瘦包装器。这个类的对象是不可改变的。这个类上的操作会使用这个用来创建 BluetoothDevice 类的 BluetoothAdapter 类执行在远程蓝牙硬件上。

为了获得 BluetoothDevice,类,使用 BluetoothAdapter.getRemoteDevice(String) 方法去创建一个表示 已知 MAC 地址的设备(用户可以通过带有 BluetoothAdapter 类来完成对设备的查找)或者从一个通过 BluetoothAdapter.getBondedDevices() 得到返回值的有联系的设备集合来得到该设备。

注意:需要 BLUETOOTH 权限

参见

BluetoothAdapter

BluetoothSocket

常量

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_BOND_STATE 这些附加域。

需要 BLUETOOTH权限接收

参见

ERROR(BluetoothClass} /{@link BluetoothClass})

常量值: "android.bluetooth.device.action.CLASS_CHANGED"

String ACTION_FOUND

广播活动:发现远程设备

当一个远程设备在查找过程中被发现时,发送该常量值。

总是包含 EXTRA_DEVICEEXTRA_CLASS 这些附加域。如果可用的话,也可包含 EXTRA_NAME 和/或 EXTRA_RSSI 这些附加域。

需要 BLUETOOTH权限接收

常量值: "android.bluetooth.device.action.FOUND"

String ACTION_NAME_CHANGED

广播活动:指明一个远程设备的昵称第一次找到,或者自从最后一次找到该昵称开始已经改变。

总是包含 EXTRA_DEVICE 和 EXTRA_NAME 这些附加域

需要 BLUETOOTH权限接收

常量值: "android.bluetooth.device.action.NAME_CHANGED"

int BOND_BONDED

指明远程设备已经匹配。

一个共享的连接键为了远程设备而存在于本地,因而设备间的通讯可以被认证和加密。

和远程设备的匹配并不意味着设备间已经成功连接。它只意味着匹配过程已经在稍早之前完成,并且连接键已经存储在本地,准备在下次连接的时候使用。

常量值: 12 (0x0000000c)

int BOND_BONDING

指明和远程设备的匹配正在进行中

常量值: 11 (0x0000000b)

int BOND_NONE

指明远程设备未被匹配。

不存在为了远程设备而已经共享的连接键,因而设备间的通讯(如果完全被允许)不可被认证和加密。

常量值: 10 (0x0000000a)

Creator<BluetoothDevice> CREATOR

int ERROR

该 类的错误标志值. 标记该类的错误值。确保和该类中的任意其它整数常量不相等。它为需要一个标记错误值的函数提供了便利。例如: Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)

常量值: -2147483648 (0x80000000)

String EXTRA_BOND_STATE

作为一个 ACTION_BOND_STATE_CHANGED 的整型附加域。包含了远程设备的匹配状态。

可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.

常量值: "android.bluetooth.device.extra.BOND_STATE"

String EXTRA_CLASS

作为一个 ACTION_FOUNDACTION_CLASS_CHANGED 的 Parcelabe BluetoothClass 附加域。

常量值: "android.bluetooth.device.extra.CLASS"

String EXTRA_DEVICE

每次通过该类进行广播时,作为 Parcelable BluetoothDevice 的附加域。它包含了该常量适用的 BluetoothDevice 类。

常量值: "android.bluetooth.device.extra.DEVICE"

String EXTRA_NAME

作为 ACTION_NAME_CHANGED 和 ACTION_FOUND 的字符串附加域。它包含了这个蓝牙昵称。

常量值: "android.bluetooth.device.extra.NAME"

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 的可选短整型附加域。包含了被蓝牙硬件通知的远程设备的 RSSI(Receive Signal Strength Indication,接收信号强度指示) 值。

常量值: "android.bluetooth.device.extra.RSSI"

公共方法

public BluetoothSocket createRfcommSocketToServiceRecord ( UUID uuid)

该方法是为了使用带有 listenUsingRfcommWithServiceRecord(String, UUID) 方法来进行对等的蓝牙应用而设计的。

使用 connect() 初始化这个外界连接。它也将执行一个已给与 UUID 的 SDP 查找,从而确定连接到哪个通道上。

远程设备将被认证,在这个端口上的通讯会被加密。

提示:如果你正试图连接蓝牙串口,那么使用众所周知的 SPP UUID 00001101-0000-1000-8000-00805F9B34FB。但是你如果正试图连接 Android 设备那么请你生成你自己的专有 UUID。

需要 BLUETOOTH 权限。

参数

uuid 查询 RFCOMM 通道的服务记录 UUID

返回值

一个准备好外界连接的 RFCOMM 蓝牙服务端口

异常

IOException 出现错误,比如蓝牙模块不可用,或者许可无效。

public int describeContents ()

描述了包含在 Parcelable's marshalled representation 中的特殊对象的种类。

返回值

一个指示被 Parcelabel 所排列的特殊对象类型集合的位屏蔽。

public boolean equals (Object o)

比较带有特定目标的常量。如果他们相等则标示出来。 为了保证其相等,o 必须代表相同的对象,该对象作为这个使用类依赖比较的常量。通常约定,该比较既需要可复制、相等和可传递。另外,没有对象引用的时候 null 等于 null。

默认实现是返回 ture,仅当 this == o。如果你想实现你自己的 equals方法,参见Writing a correct equals method

当且仅当 o 是一个作为接收器(使用==操作符来做比较)的精确相同的对象是,这个对象的实现才返回 true 值。子类通常实现 equals(Object) 方法,这样它才会重视这两个对象的类型和状态。

通常约定,对于 equals(Object) 和 hashCode() 方法,如果 equals 对于任意两个对象返回真值,那么 hashCode() 必须对这些对象返回相同的纸。这意味着对象的子类通常都覆盖或者都不覆盖这两个方法。

参数

o 需要对比常量的对象

返回值

如果指定的对象和该对象相等则返回 true,否则返回 false。

public String getAddress ()

返回该蓝牙设备的硬件地址

例如: "00:11:22:AA:BB:CC".

返回值

字符串类型的蓝牙硬件地址

public BluetoothClass getBluetoothClass ()

获取远程设备的蓝牙类

需要 BLUETOOTH 权限。

返回值

蓝牙类对象出错时返回空值

public int getBondState ()

获取远程设备的连接状态。

连接状态的可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.

需要 BLUETOOTH 权限。

返回值

连接状态。

public String getName ()

获取远程设备的蓝牙昵称。

当执行设备扫描的时候,本地适配器将自动寻找远程名称。该方法只返回来自存储器中该设备的名称。

需要 BLUETOOTH 权限。

返回值

蓝牙昵称,如果出现问题则返回 null。

public int hashCode ()

返回该对象的一个整型哈希值. 通常约定,如果 equals 对于任意两个对象返回真值,那么 hashCode() 必须对这些对象返回相同的值。这意味着对象的子类通常都覆盖或者都不覆盖这两个方法。

注意:除非同等对比信息发生改变,否则哈希码不随时间改变而改变。

如果你想要实现你自己的哈希码方法,参见 Writing a correct hashCode method

返回值

该对象的哈希值

public String toString ()

返回该蓝牙设备的字符串表达式。

这是一个蓝牙硬件地址,例如"00:11:22:AA:BB:CC".然而,如果用户明确需要蓝牙硬件地址以防以后 toString() 表达式会改变的话,用户总是需要使用 getAddress() 方法。

返回值

该蓝牙设备的字符串表达式。

public void writeToParcel (Parcel out, int flags)

将类的数据写入外部提供的 Parcel 中

参数

out 对象需要被写入的 Parcel

flags 和对象需要如何被写入有关的附加标志。可能是 0,或者可能是

补充

文章精选

Android 提高第十二篇之蓝牙传感应用

Android 提高第十三篇之探秘蓝牙隐藏 API

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文