Android 蓝牙状态

来源:互联网 发布:人工智能与制造业 ppt 编辑:程序博客网 时间:2024/06/05 20:26

BluetoothDevice类的方法

getBondState 获得的是匹配状态,不是连接状态

public int getBondState()

Since: API Level 5

Get the bond state of the remote device.

Possible values for the bond state are: BOND_NONE,BOND_BONDING,BOND_BONDED.  


public static final int BOND_BONDED

Since: API Level 5

Indicates the remote device is bonded (paired).

A shared link keys exists locally for the remote device, so communication can be authenticated and encrypted.

Being bonded (paired) with a remote device does not necessarily mean the device is currently connected. It just means that the pending procedure was completed at some earlier time, and the link key is still stored locally, ready to use on the next connection.

Constant Value: 12 (0x0000000c)
指明远程设备已经匹配。
一个共享的连接键为了远程设备而存在于本地,因而设备间的通讯可以被认证和加密。
和远程设备的匹配并不意味着设备间已经成功连接。它只意味着匹配过程已经在稍早之前完成,并且连接键已经存储在本地,准备在下次连接的时候使用。
常量值: 12 (0x0000000c)

public static final int BOND_BONDING

Since: API Level 5

Indicates bonding (pairing) is in progress with the remote device.

Constant Value: 11 (0x0000000b)

public static final int BOND_NONE

Since: API Level 5

Indicates the remote device is not bonded (paired).

There is no shared link key with the remote device, so communication (if it is allowed at all) will be unauthenticated and unencrypted.

Constant Value: 10 (0x0000000a) 


中文的说明,请看下面。转自http://www.cnblogs.com/over140/archive/2010/12/21/1912482.html

Android 中文API (70) —— BluetoothDevice[蓝牙]

 

前言

  本章内容是 android.bluetooth.BluetoothDevice,为Android蓝牙部分的章节翻译。蓝牙设备类,代表了蓝牙通讯国足中的远端设备。版本为 Android 2.3 r1,翻译来自中山大学的"Android Club SYSU",欢迎访问他们的WIKI:http://www.android-wiki.net,再次感谢"Android Club SYSU"!期待你一起参与Android中文API的翻译,联系我 over140@gmail.com。

 

声明

  欢迎转载,但请保留文章原始出处:)

    Android Club SYSU:http://www.android-wiki.net

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://code.taobao.org/project/view/404/

 

正文

  一、结构

public static 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_DEVICEEXTRA_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_DEVICEEXTRA_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_CHANGEDParcelabe BluetoothClass附加域。

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

 

String EXTRA_DEVICE      

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

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

 

String EXTRA_NAME        

作为ACTION_NAME_CHANGEDACTION_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 BluetoothSocketcreateRfcommSocketToServiceRecord (UUID uuid)

 

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

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

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

     提示:如果你正试图连接蓝牙串口,那么使用众所周知的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()必须对这些对象返回相同的纸。这意味着对象的子类通常都覆盖或者都不覆盖这两个方法。

参数

需要对比常量的对象

返回值

如果指定的对象和该对象相等则返回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