天天看點

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

一、結構

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()得到傳回值的有聯系的裝置集合來得到該裝置。

  參見

三、常量

String ACTION_ACL_CONNECTED  

廣播活動:指明一個與遠端裝置建立的低級别(ACL)連接配接。

ACL連接配接通過Android藍牙棧自動進行管理

<code>   </code>常量值: "android.bluetooth.device.action.ACL_CONNECTED"                                                

String ACTION_ACL_DISCONNECTED     

廣播活動:指明一個來自于遠端裝置的低級别(ACL)連接配接的斷開

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

String ACTION_ACL_DISCONNECT_REQUESTED    

廣播活動:指明一個為遠端裝置提出的低級别(ACL)的斷開連接配接請求,并即将斷開連接配接。

對于友好的斷開連接配接,該常量是有作用的。應用程式可以用它作為暗示去馬上中斷對遠端裝置的進階别的連接配接(RFCOMM,L2CAP,或者其它連接配接)。

常量值: "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這些附加域。

<code> </code><code>參見</code>

<code> </code>常量值: "android.bluetooth.device.action.CLASS_CHANGED"

String ACTION_FOUND    

廣播活動:發現遠端裝置

當一個遠端裝置在查找過程中被發現時,發送該常量值。

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

String ACTION_NAME_CHANGED  

廣播活動:指明一個遠端裝置的昵稱第一次找到,或者自從最後一次找到該昵稱開始已經改變。

總是包含EXTRA_DEVICE和EXTRA_NAME這些附加域

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

int        BOND_BONDED    

指明遠端裝置已經比對。

一個共享的連接配接鍵為了遠端裝置而存在于本地,因而裝置間的通訊可以被認證和加密。

和遠端裝置的比對并不意味着裝置間已經成功連接配接。它隻意味着比對過程已經在稍早之前完成,并且連接配接鍵已經存儲在本地,準備在下次連接配接的時候使用。

常量值: 12 (0x0000000c)

int        BOND_BONDING  

指明和遠端裝置的比對正在進行中

常量值: 11 (0x0000000b)

int        BOND_NONE          

指明遠端裝置未被比對。

不存在為了遠端裝置而已經共享的連接配接鍵,因而裝置間的通訊(如果完全被允許)不可被認證和加密

常量值: 10 (0x0000000a)

Creator&lt;BluetoothDevice&gt;         CREATOR        

int       ERROR   

該 類的錯誤标志值. 标記該類的錯誤值。確定和該類中的任意其它整數常量不相等。它為需要一個标記錯誤值的函數提供了便利。例如:Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)

常量值: -2147483648 (0x80000000)

String EXTRA_BOND_STATE     

可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.

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

String EXTRA_CLASS         

常量值: "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的整型附加域。包含了遠端裝置以前的比對狀态。

常量值: "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()初始化這個外界連接配接。它也将執行一個已給與UUID的SDP查找,進而确定連接配接到哪個通道上。

     遠端裝置将被認證,在這個端口上的通訊會被加密。

     提示:如果你正試圖連接配接藍牙序列槽,那麼使用衆所周知的SPP UUID 00001101-0000-1000-8000-00805F9B34FB。但是你如果正試圖連接配接Android裝置那麼請你生成你自己的專有UUID。

              參數

                       uuid 查詢RFCOMM通道的服務記錄UUID

              傳回值

                       一個準備好外界連接配接的RFCOMM藍牙服務端口

              異常

                       IOException     出現錯誤,比如藍牙子產品不可用,或者許可無效。

     public int describeContents ()

描述了包含在Parcelable's marshalled representation中的特殊對象的種類。

     傳回值

一個訓示被Parcelabel所排列的特殊對象類型集合的位屏蔽。

     public boolean equals (Object o)

比較帶有特定目标的常量。如果他們相等則标示出來。 為了保證其相等,o必須代表相同的對象,該對象作為這個使用類依賴比較的常量。通常約定,該比較既需要可複制、相等和可傳遞。另外,沒有對象引用的時候null等于null。

當且僅當o是一個作為接收器(使用==操作符來做比較)的精确相同的對象是,這個對象的實作才傳回true值。子類通常實作equals(Object)方法,這樣它才會重視這兩個對象的類型和狀态。

通常約定,對于equals(Object)和hashCode() 方法,如果equals對于任意兩個對象傳回真值,那麼hashCode()必須對這些對象傳回相同的紙。這意味着對象的子類通常都覆寫或者都不覆寫這兩個方法。

參數

o 需要對比常量的對象

傳回值

如果指定的對象和該對象相等則傳回true,否則傳回false。

public String getAddress ()

傳回該藍牙裝置的硬體位址

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

字元串類型的藍牙硬體位址

     public BluetoothClass getBluetoothClass ()

擷取遠端裝置的藍牙類

藍牙類對象出錯時傳回空值

public int getBondState ()

擷取遠端裝置的連接配接狀态。

連接配接狀态的可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.

     連接配接狀态。

     public String getName ()

擷取遠端裝置的藍牙昵稱。

當執行裝置掃描的時候,本地擴充卡将自動尋找遠端名稱。該方法隻傳回來自存儲器中該裝置的名稱。

藍牙昵稱,如果出現問題則傳回null。

     public int hashCode ()

傳回該對象的一個整型哈希值. 通常約定,如果equals對于任意兩個對象傳回真值,那麼hashCode()必須對這些對象傳回相同的值。這意味着對象的子類通常都覆寫或者都不覆寫這兩個方法。

注意:除非同等對比資訊發生改變,否則哈希碼不随時間改變而改變。

該對象的哈希值

     public String toString ()

傳回該藍牙裝置的字元串表達式。

該藍牙裝置的字元串表達式。

     public void writeToParcel (Parcel out, int flags)

将類的資料寫入外部提供的Parcel中

out  對象需要被寫入的Parcel

   flags  和對象需要如何被寫入有關的附加标志。可能是0,或者可能是

五、補充

                  文章精選

繼續閱讀