?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
BluetoothDevice
版本:Android 2.3 r1
?
結(jié)構(gòu)
繼承關(guān)系
public final class BluetoothDevice extends Object implements Parcelable
????????
java.lang.Object
android.bluetooth.BluetoothDevice
?
類(lèi)概述
代表一個(gè)遠(yuǎn)程藍(lán)牙設(shè)備。讓你創(chuàng)建一個(gè)帶有各自設(shè)備的BluetoothDevice或者查詢(xún)其皆如名稱(chēng)、地址、類(lèi)和連接狀態(tài)等信息。
對(duì)于藍(lán)牙硬件地址而言,這個(gè)類(lèi)僅僅是一個(gè)瘦包裝器。這個(gè)類(lèi)的對(duì)象是不可改變的。這個(gè)類(lèi)上的操作會(huì)使用這個(gè)用來(lái)創(chuàng)建BluetoothDevice類(lèi)的BluetoothAdapter類(lèi)執(zhí)行在遠(yuǎn)程藍(lán)牙硬件上。
為了獲得BluetoothDevice,類(lèi),使用BluetoothAdapter.getRemoteDevice(String)方法去創(chuàng)建一個(gè)表示 已知MAC地址的設(shè)備(用戶(hù)可以通過(guò)帶有BluetoothAdapter類(lèi)來(lái)完成對(duì)設(shè)備的查找)或者從一個(gè)通過(guò) BluetoothAdapter.getBondedDevices()得到返回值的有聯(lián)系的設(shè)備集合來(lái)得到該設(shè)備。
注意:需要BLUETOOTH
權(quán)限
參見(jiàn)
BluetoothAdapter
BluetoothSocket
?
常量
String ACTION_ACL_CONNECTED ?
廣播活動(dòng):指明一個(gè)與遠(yuǎn)程設(shè)備建立的低級(jí)別(ACL)連接。
總是包含EXTRA_DEVICE
附加域
ACL連接通過(guò)Android藍(lán)牙棧自動(dòng)進(jìn)行管理
需要BLUETOOTH
權(quán)限接收
????
常量值:
"android.bluetooth.device.action.ACL_CONNECTED"
??????????????????????????????????????????????????
String ACTION_ACL_DISCONNECTED ????
廣播活動(dòng):指明一個(gè)來(lái)自于遠(yuǎn)程設(shè)備的低級(jí)別(ACL)連接的斷開(kāi)
總是包含EXTRA_DEVICE
附加域
ACL連接通過(guò)Android藍(lán)牙棧自動(dòng)進(jìn)行管理
需要BLUETOOTH
權(quán)限接收
常量值: "android.bluetooth.device.action.ACL_DISCONNECTED"
?
String ACTION_ACL_DISCONNECT_REQUESTED ???
廣播活動(dòng):指明一個(gè)為遠(yuǎn)程設(shè)備提出的低級(jí)別(ACL)的斷開(kāi)連接請(qǐng)求,并即將斷開(kāi)連接。
對(duì)于友好的斷開(kāi)連接,該常量是有作用的。應(yīng)用程序可以用它作為暗示去馬上中斷對(duì)遠(yuǎn)程設(shè)備的高級(jí)別的連接(RFCOMM,L2CAP,或者其它連接)。
總是包含EXTRA_DEVICE
附加域
需要BLUETOOTH
權(quán)限接收
常量值: "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED"
?
String ACTION_BOND_STATE_CHANGED ???????
廣播活動(dòng):指明一個(gè)遠(yuǎn)程設(shè)備的連接狀態(tài)的改變。比如,當(dāng)一個(gè)設(shè)備已經(jīng)被匹配。
總是包含EXTRA_DEVICE, EXTRA_BOND_STATE和 EXTRA_PREVIOUS_BOND_STATE.這些附加域。
需要BLUETOOTH
權(quán)限接收
常量值: "android.bluetooth.device.action.BOND_STATE_CHANGED"
?
String ACTION_CLASS_CHANGED ??
廣播活動(dòng):一個(gè)已經(jīng)改變的遠(yuǎn)程設(shè)備的藍(lán)牙類(lèi)。
總是包含EXTRA_DEVICE和EXTRA_BOND_STATE這些附加域。
需要BLUETOOTH
權(quán)限接收
?
參見(jiàn)
????
ERROR(BluetoothClass}
/{@link BluetoothClass})
?
常量值:
"android.bluetooth.device.action.CLASS_CHANGED"
?
String ACTION_FOUND ???
廣播活動(dòng):發(fā)現(xiàn)遠(yuǎn)程設(shè)備
當(dāng)一個(gè)遠(yuǎn)程設(shè)備在查找過(guò)程中被發(fā)現(xiàn)時(shí),發(fā)送該常量值。
總是包含EXTRA_DEVICE
和EXTRA_CLASS
這些附加域。如果可用的話,也可包含EXTRA_NAME
和/或EXTRA_RSSI
這些附加域。
需要BLUETOOTH
權(quán)限接收
常量值: "android.bluetooth.device.action.FOUND"
?
String ACTION_NAME_CHANGED ?
廣播活動(dòng):指明一個(gè)遠(yuǎn)程設(shè)備的昵稱(chēng)第一次找到,或者自從最后一次找到該昵稱(chēng)開(kāi)始已經(jīng)改變。
總是包含EXTRA_DEVICE和EXTRA_NAME這些附加域
需要BLUETOOTH
權(quán)限接收
常量值: "android.bluetooth.device.action.NAME_CHANGED"
?
int ?????? BOND_BONDED ???
指明遠(yuǎn)程設(shè)備已經(jīng)匹配。
一個(gè)共享的連接鍵為了遠(yuǎn)程設(shè)備而存在于本地,因而設(shè)備間的通訊可以被認(rèn)證和加密。
和遠(yuǎn)程設(shè)備的匹配并不意味著設(shè)備間已經(jīng)成功連接。它只意味著匹配過(guò)程已經(jīng)在稍早之前完成,并且連接鍵已經(jīng)存儲(chǔ)在本地,準(zhǔn)備在下次連接的時(shí)候使用。
常量值: 12 (0x0000000c)
?
int ?????? BOND_BONDING ?
指明和遠(yuǎn)程設(shè)備的匹配正在進(jìn)行中
常量值: 11 (0x0000000b)
?
int ?????? BOND_NONE ?????????
指明遠(yuǎn)程設(shè)備未被匹配。
不存在為了遠(yuǎn)程設(shè)備而已經(jīng)共享的連接鍵,因而設(shè)備間的通訊(如果完全被允許)不可被認(rèn)證和加密。
???? 常量值: 10 (0x0000000a)
?
Creator<BluetoothDevice> ??????? CREATOR ???????
?
int ?????? ERROR ??
該 類(lèi)的錯(cuò)誤標(biāo)志值. 標(biāo)記該類(lèi)的錯(cuò)誤值。確保和該類(lèi)中的任意其它整數(shù)常量不相等。它為需要一個(gè)標(biāo)記錯(cuò)誤值的函數(shù)提供了便利。例如: Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)
常量值: -2147483648 (0x80000000)
?
String EXTRA_BOND_STATE ????
作為一個(gè)ACTION_BOND_STATE_CHANGED
的整型附加域。包含了遠(yuǎn)程設(shè)備的匹配狀態(tài)。
可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
常量值: "android.bluetooth.device.extra.BOND_STATE"
?
String EXTRA_CLASS ????????
作為一個(gè)ACTION_FOUND
和ACTION_CLASS_CHANGED
的Parcelabe BluetoothClass
附加域。
常量值: "android.bluetooth.device.extra.CLASS"
?
String EXTRA_DEVICE ?????
每次通過(guò)該類(lèi)進(jìn)行廣播時(shí),作為Parcelable BluetoothDevice的附加域。它包含了該常量適用的BluetoothDevice類(lèi)。
常量值: "android.bluetooth.device.extra.DEVICE"
?
String EXTRA_NAME ???????
作為ACTION_NAME_CHANGED和ACTION_FOUND的字符串附加域。它包含了這個(gè)藍(lán)牙昵稱(chēng)。
常量值: "android.bluetooth.device.extra.NAME"
?
String EXTRA_PREVIOUS_BOND_STATE ?
作為ACTION_BOND_STATE_CHANGED的整型附加域。包含了遠(yuǎn)程設(shè)備以前的匹配狀態(tài)。
可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
常量值: "android.bluetooth.device.extra.PREVIOUS_BOND_STATE"
?
String EXTRA_RSSI ??
作為ACTION_FOUND的可選短整型附加域。包含了被藍(lán)牙硬件通知的遠(yuǎn)程設(shè)備的RSSI(Receive Signal Strength Indication,接收信號(hào)強(qiáng)度指示)值。
常量值: "android.bluetooth.device.extra.RSSI"
?
公共方法
public BluetoothSocket createRfcommSocketToServiceRecord (UUID uuid)
???? 該方法是為了使用帶有listenUsingRfcommWithServiceRecord(String, UUID)方法來(lái)進(jìn)行對(duì)等的藍(lán)牙應(yīng)用而設(shè)計(jì)的。
???? 使用connect()初始化這個(gè)外界連接。它也將執(zhí)行一個(gè)已給與UUID的SDP查找,從而確定連接到哪個(gè)通道上。
???? 遠(yuǎn)程設(shè)備將被認(rèn)證,在這個(gè)端口上的通訊會(huì)被加密。
???? 提示:如果你正試圖連接藍(lán)牙串口,那么使用眾所周知的SPP UUID 00001101-0000-1000-8000-00805F9B34FB。但是你如果正試圖連接Android設(shè)備那么請(qǐng)你生成你自己的專(zhuān)有UUID。
???? 需要BLUETOOTH
權(quán)限。
????????????? 參數(shù)
?????????????????????? uuid 查詢(xún)RFCOMM通道的服務(wù)記錄UUID
????????????? 返回值
?????????????????????? 一個(gè)準(zhǔn)備好外界連接的RFCOMM藍(lán)牙服務(wù)端口
????????????? 異常
?????????????????????? IOException???? 出現(xiàn)錯(cuò)誤,比如藍(lán)牙模塊不可用,或者許可無(wú)效。
?
???? public int describeContents ()
描述了包含在Parcelable's marshalled representation中的特殊對(duì)象的種類(lèi)。
???? 返回值
一個(gè)指示被Parcelabel所排列的特殊對(duì)象類(lèi)型集合的位屏蔽。
?
???? public boolean equals (Object o)
比較帶有特定目標(biāo)的常量。如果他們相等則標(biāo)示出來(lái)。 為了保證其相等,o必須代表相同的對(duì)象,該對(duì)象作為這個(gè)使用類(lèi)依賴(lài)比較的常量。通常約定,該比較既需要可復(fù)制、相等和可傳遞。另外,沒(méi)有對(duì)象引用的時(shí)候null等于null。
默認(rèn)實(shí)現(xiàn)是返回ture,僅當(dāng)this
== o。如果你想實(shí)現(xiàn)你自己的equals
方法,
參見(jiàn)
Writing
a correct equals
method。
當(dāng)且僅當(dāng)o是一個(gè)作為接收器(使用==操作符來(lái)做比較)的精確相同的對(duì)象是,這個(gè)對(duì)象的實(shí)現(xiàn)才返回true值。子類(lèi)通常實(shí)現(xiàn)equals(Object)方法,這樣它才會(huì)重視這兩個(gè)對(duì)象的類(lèi)型和狀態(tài)。
通常約定,對(duì)于equals(Object)和hashCode() 方法,如果equals對(duì)于任意兩個(gè)對(duì)象返回真值,那么hashCode()必須對(duì)這些對(duì)象返回相同的紙。這意味著對(duì)象的子類(lèi)通常都覆蓋或者都不覆蓋這兩個(gè)方法。
參數(shù)
o 需要對(duì)比常量的對(duì)象
返回值
如果指定的對(duì)象和該對(duì)象相等則返回true,否則返回false。
?
public String getAddress ()
返回該藍(lán)牙設(shè)備的硬件地址
例如: "00:11:22:AA:BB:CC".
返回值
字符串類(lèi)型的藍(lán)牙硬件地址
?
???? public BluetoothClass getBluetoothClass ()
獲取遠(yuǎn)程設(shè)備的藍(lán)牙類(lèi)
需要BLUETOOTH
權(quán)限。
返回值
藍(lán)牙類(lèi)對(duì)象出錯(cuò)時(shí)返回空值
?
public int getBondState ()
獲取遠(yuǎn)程設(shè)備的連接狀態(tài)。
連接狀態(tài)的可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
需要BLUETOOTH
權(quán)限。
返回值
???? 連接狀態(tài)。
?
???? public String getName ()
獲取遠(yuǎn)程設(shè)備的藍(lán)牙昵稱(chēng)。
當(dāng)執(zhí)行設(shè)備掃描的時(shí)候,本地適配器將自動(dòng)尋找遠(yuǎn)程名稱(chēng)。該方法只返回來(lái)自存儲(chǔ)器中該設(shè)備的名稱(chēng)。
需要BLUETOOTH
權(quán)限。
返回值
藍(lán)牙昵稱(chēng),如果出現(xiàn)問(wèn)題則返回null。
?
???? public int hashCode ()
返回該對(duì)象的一個(gè)整型哈希值. 通常約定,如果equals對(duì)于任意兩個(gè)對(duì)象返回真值,那么hashCode()必須對(duì)這些對(duì)象返回相同的值。這意味著對(duì)象的子類(lèi)通常都覆蓋或者都不覆蓋這兩個(gè)方法。
注意:除非同等對(duì)比信息發(fā)生改變,否則哈希碼不隨時(shí)間改變而改變。
如果你想要實(shí)現(xiàn)你自己的哈希碼方法,參見(jiàn)Writing
a correct hashCode
method。
返回值
該對(duì)象的哈希值
?
???? public String toString ()
返回該藍(lán)牙設(shè)備的字符串表達(dá)式。
這是一個(gè)藍(lán)牙硬件地址,例如"00:11:22:AA:BB:CC".然而,如果用戶(hù)明確需要藍(lán)牙硬件地址以防以后toString()
表達(dá)式會(huì)改變的話,用戶(hù)總是需要使用getAddress()
方法。
返回值
該藍(lán)牙設(shè)備的字符串表達(dá)式。
?
???? public void writeToParcel (Parcel out, int flags)
將類(lèi)的數(shù)據(jù)寫(xiě)入外部提供的Parcel中
參數(shù)
out 對(duì)象需要被寫(xiě)入的Parcel
flags 和對(duì)象需要如何被寫(xiě)入有關(guān)的附加標(biāo)志??赡苁?/span>0,或者可能是
?
補(bǔ)充
???????? 文章精選
?????????????????? Android提高第十二篇之藍(lán)牙傳感應(yīng)用
?????????????????? Android提高第十三篇之探秘藍(lán)牙隱藏API