安卓藍牙廣播大全

android.bluetooth
提供了皆如掃描設備、連接設備以及對設備間的數據傳輸進行管理的類,這些類對藍牙設備進行功能性管理。
藍牙模塊API提供的應用包括了:
●掃描其它藍牙設備
●通過查詢本地藍牙適配器來匹配藍牙設備
●建立RFCOMM(無線射頻通信協議)的通道/端口
●從其他的藍牙設備中連接到指定的端口
●傳輸數據到其他設備,或者從其他設備中接收數據
如需運用這些API來執行藍牙通信,應用程序必須聲明BLUETOOTH許可。對於皆如尋找設備請求等的一些附加功能,也同樣需要BLUETOOTH_ADMIN許可。
如需要使用藍牙API的更詳細的指引,參看Bluetooth Dev Guide topic.

Classes

BluetoothAdapter
代表本地的藍牙適配器設備
BluetoothClass
代表一個描述了設備通用特性和功能的藍牙類 
BluetoothClass.Device
定義了所有設備類的常量
BluetoothClass.Device.Major
定義了所有主要設備類的常量
BluetoothClass.Service
定義了所有服務類的常量
BluetoothDevice
代表一個遠程的藍牙設備
BluetoothServerSocket
監聽藍牙服務的端口
BluetoothSocket
一個雙向連接的藍牙端口





public final class 
BluetoothAdapter
extends Object
java.lang.Object
↳ android.bluetooth.BluetoothAdapter


Class Overview
代表本地的藍牙適配器設備。BluetoothAdapter類讓用戶能執行基本的藍牙任務。例如:初始化設備的搜索,查詢可匹配的設備集,使用一個已知的MAC地址來初始化一個BluetoothDevice類,創建一個BluetoothServerSocket類以監聽其它設備對本機的連接請求等。
爲了得到這個代表本地藍牙適配器的BluetoothAdapter類,調用getDefaultAdapter()這一靜態方法。這是所有藍牙動作使用的第一步。當擁有本地適配器以後,用戶可以獲得一系列的BluetoothDevice對象,這些對象代表所有擁有getBondedDevice()方法的已經匹配的設備;用startDiscovery()方法來開始設備的搜尋;或者創建一個BluetoothServerSocket類,通過listenUsingRfcommWithServiceRecord(String, UUID)方法來監聽新來的連接請求。
Note:大部分方法需要BLUETOOTH類的許可,一些方法同時需要BLUETOOT_ADMIN類的許可。

Summary


常量:


String ACTION_DISCOVERY_FINISHED
廣播事件:本地藍牙適配器已經完成設備的搜尋過程。 
String ACTION_DISCOVERY_STARTED
廣播事件:本地藍牙適配器已經開始對遠程設備的搜尋過程。 
String ACTION_LOCAL_NAME_CHANGED
廣播事件:本地藍牙適配器已經更改了它的藍牙名稱。 
String ACTION_REQUEST_DISCOVERABLE
活動事件:顯示一個請求被搜尋模式的系統活動。 
String ACTION_REQUEST_ENABLE
活動事件:顯示一個允許用戶打開藍牙模塊的系統活動。 
String ACTION_SCAN_MODE_CHANGED
廣播事件:指明藍牙掃描模塊或者本地適配器已經發生變化 
String ACTION_STATE_CHANGED
廣播事件:本來的藍牙適配器的狀態已經改變。 
int ERROR
標記該類的錯誤值 
String EXTRA_DISCOVERABLE_DURATION
試圖在ACTION_REQUEST_DISCOVERABLE常量中作爲一個可選的整型附加域,來爲短時間內的設備發現請求一個特定的持續時間。 
String EXTRA_LOCAL_NAME
試圖在ACTION_LOCAL_NAME_CHANGED常量中作爲一個字符串附加域,來請求本地藍牙的名稱。 
String EXTRA_PREVIOUS_SCAN_MODE
試圖在ACTION_SCAN_MODE_CHANGED常量中作爲一個整型附加域,來請求以前的掃描模式 
String EXTRA_PREVIOUS_STATE
試圖在ACTION_STATE_CHANGED常量中作爲一個整型附加域,來請求以前的供電狀態。 
String EXTRA_SCAN_MODE
試圖在ACTION_SCAN_MODE_CHANGED常量中作爲一個整型附加域,來請求當前的掃描模式 
String EXTRA_STATE
試圖在ACTION_STATE_CHANGED常量中作爲一個整型附加域,來請求當前的供電狀態。 
int SCAN_MODE_CONNECTABLE
指明在本地藍牙適配器中,查詢掃描功能失效,但頁面掃描功能有效 
int SCAN_MODE_CONNECTABLE_DISCOVERABLE
指明在本地藍牙適配器中,查詢掃描功能和頁面掃描功能都有效 
int SCAN_MODE_NONE
指明在本地藍牙適配器中,查詢掃描功能和頁面掃描功能都失效 
int STATE_OFF
指明本地藍牙適配器模塊已經關閉 
int STATE_ON
指明本地藍牙適配器模塊已經打開,並且準備被使用。 
int STATE_TURNING_OFF
指明本地藍牙適配器模塊正在關閉 
int STATE_TURNING_ON
指明本地藍牙適配器模塊正在打開


Public Methods:


boolean cancelDiscovery() 
.取消當前的設備發現查找進程 
static boolean checkBluetoothAddress(String address) 
驗證皆如"00:43:A8:23:10:F0"之類的藍牙地址,字母必須爲大寫纔有效。 
boolean disable() 
關閉本地藍牙適配器—不能在沒有明確關閉藍牙的用戶動作中使用。 
boolean enable() 
打開本地藍牙適配器—不能在沒有明確打開藍牙的用戶動作中使用。 
String getAddress() 
返回本地藍牙適配器的硬件地址 
Set getBondedDevices() 
返回已經匹配到本地適配器的BluetoothDevice類的對象集合 
synchronized static BluetoothAdapter getDefaultAdapter() 
獲取對默認本地藍牙適配器的的操作權限。 
String getName() 
獲取本地藍牙適配器的藍牙呢稱 
BluetoothDevice getRemoteDevice(String address) 
爲給予的藍牙硬件地址獲取一個BluetoothDevice對象。 
int getScanMode() 
獲取本地藍牙適配器的當前藍牙掃描模式 
int getState() 
獲取本地藍牙適配器的當前狀態 
boolean isDiscovering() 
如果當前藍牙適配器正處於設備發現查找進程中,則返回真值 
boolean isEnabled() 
如果藍牙正處於打開狀態並可用,則返回真值 
BluetoothServerSocket listenUsingRfcommWithServiceRecord(String name, UUID uuid) 
創建一個正在監聽的安全的帶有服務記錄的無線射頻通信藍牙端口。
boolean setName(String name) 
設置藍牙或者本地藍牙適配器的暱稱. 
boolean startDiscovery() 
開始對遠程設備進行查找的進程


Constants:


public static final String ACTION_DISCOVERY_FINISHED 

Since: API Level 5 
廣播事件:本地藍牙適配器已經完成設備的搜尋過程。Requires BLUETOOTH to receive. 
常量值: "android.bluetooth.adapter.action.DISCOVERY_FINISHED" 
public static final String ACTION_DISCOVERY_STARTED 
Since: API Level 5 
廣播事件:本地藍牙適配器已經開始對遠程設備的搜尋過程。
它通常牽涉到一個大概需時12秒的查詢掃描過程,緊跟着是一個對每個獲取到自身藍牙名稱的新設備的頁面掃描。
Register for ACTION_FOUND to be notified as remote Bluetooth devices are found. 
用戶會發現一個把ACTION_FOUND常量通知爲遠程藍牙設備的註冊。
設備查找是一個重量級過程。當查找正在進行的時候,用戶不能嘗試對新的遠程藍牙設備進行連接,同時存在的連接將獲得有限制的帶寬以及高等待時間。用戶可用cencelDiscovery()類來取消正在執行的查找進程。
需要BLUETOOTH類來接收。
常量名:"android.bluetooth.adapter.action.DISCOVERY_STARTED" 
public static final String ACTION_LOCAL_NAME_CHANGED 
Since: API Level 5 
廣播事件:本地藍牙適配器已經更改了它的藍牙名稱。
該名稱對遠程藍牙設備是可見的。 
它總是包含了一個帶有名稱的EXTRA_LOCAL_NAME附加域。
它需要請求BLUETOOTH類去獲取這個名字。
常量值: "android.bluetooth.adapter.action.LOCAL_NAME_CHANGED" 
public static final String ACTION_REQUEST_DISCOVERABLE 
Since: API Level 5 
活動事件:顯示一個請求被搜尋模式的系統活動。如果藍牙模塊當前未打開,該活動也將請求用戶打開藍牙模塊。 
被搜尋模式和SCAN_MODE_CONNECTABLE_DISCOVERABLE等價。當遠程設備執行查找進程的時候,它允許其發現該藍牙適配器。
從隱私安全考慮,Android不會將被搜尋模式設置爲默認狀態。
該意圖的發送者可以選擇性地運用EXTRA_DISCOVERABLE_DURATION這個附加域去請求發現設備的持續時間。普遍來說,對於每一請求,默認的持續時間爲120秒,最大值則可達到300秒。
Android運用onActivityResult(int, int, Intent)回收方法來傳遞該活動結果的通知。被搜尋的時間(以秒爲單位)將通過resultCode值來顯示,如果用戶拒絕被搜尋,或者設備產生了錯誤,則通過RESULT_CANCELED值來顯示。
每當掃描模式變化的時候,應用程序可以爲通過ACTION_SCAN_MODE_CHANGED值來監聽全局的消息通知。比如,當設備停止被搜尋以後,該消息可以被系統通知給應用程序。
需要BLUETOOTH類
常量值: "android.bluetooth.adapter.action.REQUEST_DISCOVERABLE" 
public static final String ACTION_REQUEST_ENABLE 
Since: API Level 5 
活動事件:顯示一個允許用戶打開藍牙模塊的系統活動。
當藍牙模塊完成打開工作,或者當用戶決定不打開藍牙模塊時,系統活動將返回該值。
Android運用onActivityResult(int, int, Intent)回收方法來傳遞該活動結果的通知。如果藍牙模塊被打開,將通過resultCode值來顯示;如果用戶拒絕該請求,或者設備產生了錯誤,則通過RESULT_CANCELED值來顯示。
每當藍牙模塊被打開或者關閉,應用程序可以爲通過ACTION_SCAN_MODE_CHANGED值來監聽全局的消息通知。
需要BLUETOOTH類
常量值: "android.bluetooth.adapter.action.REQUEST_ENABLE" 
public static final String ACTION_SCAN_MODE_CHANGED 
Since: API Level 5 
廣播事件:指明藍牙掃描模塊或者本地適配器已經發生變化
它總是包含EXTRA_SCAN_MODE和EXTRA_PREVIOUS_SCAN_MODE。這兩個附加域各自包含了新的和舊的掃描模式。
需要BLUETOOTH類
常量值: "android.bluetooth.adapter.action.SCAN_MODE_CHANGED" 
public static final String ACTION_STATE_CHANGED 
Since: API Level 5 
廣播事件:本來的藍牙適配器的狀態已經改變。
比如:藍牙模塊已經被打開或者關閉。
它總是包含EXTRA_STATE和EXTRA_PREVIOUS_STATE。這兩個附加域各自包含了新的和舊的狀態。
需要BLUETOOTH類去接收
常量值: "android.bluetooth.adapter.action.STATE_CHANGED
public static final int ERROR 
Since: API Level 5 
標記該類的錯誤值。確保和該類中的任意其它整數常量不相等。它爲需要一個標記錯誤值的函數提供了便利。例如: Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) 
常量值: -2147483648 (0x80000000) 
public static final String EXTRA_DISCOVERABLE_DURATION 
Since: API Level 5 
試圖在ACTION_REQUEST_DISCOVERABLE常量中作爲一個可選的整型附加域,來爲短時間內的設備發現請求一個特定的持續時間。默認值爲120秒,超過300秒的請求將被限制。這些值是可以變化的。 
常量值: "android.bluetooth.adapter.extra.DISCOVERABLE_DURATION"


public static final String EXTRA_LOCAL_NAME 
Since: API Level 5 
試圖在ACTION_LOCAL_NAME_CHANGED常量中作爲一個字符串附加域,來請求本地藍牙的名稱。
常量值: "android.bluetooth.adapter.extra.LOCAL_NAME" 
public static final String EXTRA_PREVIOUS_SCAN_MODE 
Since: API Level 5 
試圖在ACTION_SCAN_MODE_CHANGED常量中作爲一個整型附加域,來請求以前的掃描模式。可能值有: SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_DISCOVERABLE, 
常量值: "android.bluetooth.adapter.extra.PREVIOUS_SCAN_MODE" 
public static final String EXTRA_PREVIOUS_STATE 
Since: API Level 5 
試圖在ACTION_STATE_CHANGED常量中作爲一個整型附加域,來請求以前的供電狀態。 可能值有: STATE_OFF, STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF, 
常量值: "android.bluetooth.adapter.extra.PREVIOUS_STATE" 
public static final String EXTRA_SCAN_MODE 
Since: API Level 5 
試圖在 ACTION_SCAN_MODE_CHANGED常量中作爲一個整型附加域,來請求當前的掃描模式.可能值有: SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_DISCOVERABLE, 
常量值: "android.bluetooth.adapter.extra.SCAN_MODE" 
public static final String EXTRA_STATE 
Since: API Level 5 
試圖在ACTION_STATE_CHANGED常量中作爲一個整型附加域,來請求當前的供電狀態。 可能值有: STATE_OFF, STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF, 
常量值: "android.bluetooth.adapter.extra.STATE"



public static final int SCAN_MODE_CONNECTABLE 
Since: API Level 5 
指明在本地藍牙適配器中,查詢掃描功能失效,但頁面掃描功能有效。因此該設備不能被遠程藍牙設備發現,但如果以前曾經發現過該設備,則遠程設備可以對其進行連接。
常量值: 21 (0x00000015
public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE 
Since: API Level 5 
指明在本地藍牙適配器中,查詢掃描功能和頁面掃描功能都有效。因此該設備既可以被遠程藍牙設備發現,也可以被其連接。
常量值: 23 (0x00000017) 
public static final int SCAN_MODE_NONE 
Since: API Level 5 
指明在本地藍牙適配器中,查詢掃描功能和頁面掃描功能都失效. 因此該設備既不可以被遠程藍牙設備發現,也不可以被其連接。
常量值: 20 (0x00000014) 
public static final int STATE_OFF 
Since: API Level 5 
指明本地藍牙適配器模塊已經關閉
常量值: 10 (0x0000000a) 
public static final int STATE_ON 
Since: API Level 5 
指明本地藍牙適配器模塊已經打開,並且準備被使用。
常量值: 12 (0x0000000c) 
public static final int STATE_TURNING_OFF 
Since: API Level 5 
指明本地藍牙適配器模塊正在關閉。本地客戶端可以立刻嘗試友好地斷開任意外部連接。
常量值: 13 (0x0000000d)


public static final int STATE_TURNING_ON 
Since: API Level 5 
指明本地藍牙適配器模塊正在打開. 然而本地客戶在嘗試使用這個適配器之前需要爲STATE_ON狀態而等待。 
常量值: 11 (0x0000000b) 
Public Methods
public boolean cancelDiscovery () 
Since: API Level 5 
.取消當前的設備發現查找進程
需要BLUETOOTH_ADMIN類 
因爲對藍牙適配器而言,查找是一個重量級的過程,因此這個方法必須在嘗試連接到遠程設備前使用用connect()方法進行調用。發現的過程不會由活動來進行管理,但是它會作爲一個系統服務來運行,因此即使它不能直接請求這樣的一個查詢動作,也必需取消該搜索進程。
返回值:
成功則返回true,有錯誤則返回false。
public static boolean checkBluetoothAddress (String address) 
Since: API Level 5 
驗證皆如"00:43:A8:23:10:F0"之類的藍牙地址,字母必須爲大寫纔有效。

參數
地址 字符串形式的藍牙模塊地址
返回
地址正確則返回true,否則返回false。
public boolean disable () 
Since: API Level 5 
關閉本地藍牙適配器—不能在沒有明確關閉藍牙的用戶動作中使用。
這個方法友好地停止所有的藍牙連接,停止藍牙系統服務,以及對所有基礎藍牙硬件進行斷電。
沒有用戶的直接同意,藍牙永遠不能被禁止。這個disable()方法只提供了一個應用,該應用包含了一個改變系統設置的用戶界面(例如“電源控制”應用)。
這是一個異步調用方法:該方法將馬上獲得返回值,用戶要通過監聽ACTION_STATE_CHANGED值來獲取隨後的適配器狀態改變的通知。如果該調用返回true值,則該適配器狀態會立刻從STATE_ON轉向STATE_TURNING_OFF,稍後則會轉爲STATE_OFF或者STATE_ON。如果該調用返回false,那麼系統已經有一個保護藍牙適配器被關閉的問題—比如該適配器已經被關閉了。
需要BLUETOOTH_ADMIN類的許可 
返回值
如果藍牙適配器的停止進程已經開啓則返回true,如果產生錯誤則返回false。
public boolean enable () 
Since: API Level 5 
打開本地藍牙適配器—不能在沒有明確打開藍牙的用戶動作中使用。
該方法將爲基礎的藍牙硬件供電,並且啓動所有的藍牙系統服務。
沒有用戶的直接同意,藍牙永遠不能被禁止。如果用戶爲了創建無線連接而打開了藍牙模塊,則其需要ACTION_REQUEST_ENABLE值,該值將提出一個請求用戶允許以打開藍牙模塊的會話。這個enable()值只提供了一個應用,該應用包含了一個改變系統設置的用戶界面(例如“電源控制”應用)。
這是一個異步調用方法:該方法將馬上獲得返回值,用戶要通過監聽ACTION_STATE_CHANGED值來獲取隨後的適配器狀態改變的通知。如果該調用返回true值,則該適配器狀態會立刻從STATE_OFF轉向STATE_TURNING_ON,稍後則會轉爲STATE_OFF或者STATE_ON。如果該調用返回false,那麼說明系統已經有一個保護藍牙適配器被打開的問題—比如飛行模式,或者該適配器已經被打開。
需要BLUETOOTH_ADMIN類的許可 
如果藍牙適配器的打開進程已經開啓則返回true,如果產生錯誤則返回false。
public String getAddress () 
Since: API Level 5 
返回本地藍牙適配器的硬件地址
例如: "00:11:22:AA:BB:CC". 
需要BLUETOOTH類
返回值
字符串形式的藍牙模塊地址
public Set getBondedDevices () 
Since: API Level 5 
返回已經匹配到本地適配器的BluetoothDevice類的對象集合
需要BLUETOOTH類
返回值
未被修改的BluetoothDevice類的對象集合,如果有錯誤則返回null。
public static synchronized BluetoothAdapter getDefaultAdapter () 
Since: API Level 5 
獲取對默認本地藍牙適配器的的操作權限。
目前Andoird只支持一個藍牙適配器,但是API可以被擴展爲支持多個適配器。該方法總是返回默認的適配器。
返回值
返回默認的本地適配器,如果藍牙適配器在該硬件平臺上不能被支持,則返回null。
public String getName () 
Since: API Level 5 
獲取本地藍牙適配器的藍牙呢稱
這個呢稱對於外界藍牙設備而言是可見的。
需要BLUETOOTH類
返回值
該藍牙適配器名稱,如果有錯誤則返回null
public BluetoothDevice getRemoteDevice (String address) 
Since: API Level 5 
爲給予的藍牙硬件地址獲取一個BluetoothDevice對象。
Valid Bluetooth hardware addresses must be upper case, in a format such as "00:11:22:33:AA:BB". The helper checkBluetoothAddress(String) is available to validate a Bluetooth address. 
合法的藍牙硬件地址必須爲大寫,格式類似於"00:11:22:33:AA:BB"。checkBluetoothAddress(String)方法可以用來驗證藍牙地址的正確性。
A BluetoothDevice will always be returned for a valid hardware address, even if this adapter has never seen that device.
BluetoothDevice類對於合法的硬件地址總會產生返回值,即使這個適配器從未見過該設備。
參數
地址 合法的藍牙MAC地址
異常拋出
IllegalArgumentException
如果地址不合法
public int getScanMode () 
Since: API Level 5 
獲取本地藍牙適配器的當前藍牙掃描模式
藍牙掃描模式決定本地適配器可連接並且/或者可被遠程藍牙設備所連接。
可能值有: SCAN_MODE_NONE, SCAN_MODE_CONNECTABLE, SCAN_MODE_CONNECTABLE_DISCOVERABLE. 
需要BLUETOOTH類
返回值
掃描模式 
public int getState () 
Since: API Level 5 
獲取本地藍牙適配器的當前狀態
可能值有 STATE_OFF, STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF. 
需要BLUETOOTH類
返回值
藍牙適配器的當前狀態 
public boolean isDiscovering () 
Since: API Level 5 
如果當前藍牙適配器正處於設備發現查找進程中,則返回真值
設備查找是一個重量級過程。當查找正在進行的時候,用戶不能嘗試對新的遠程藍牙設備進行連接,同時存在的連接將獲得有限制的帶寬以及高等待時間。用戶可用cencelDiscovery()類來取消正在執行的查找進程。

應用程序也可以爲ACTION_DISCOVERY_STARTED或者ACTION_DISCOVERY_FINISHED進行註冊,從而當查找開始或者完成的時候,可以獲得通知。
需要BLUETOOTH類
返回值
如果正在查找,則返回true
public boolean isEnabled () 
Since: API Level 5 
如果藍牙正處於打開狀態並可用,則返回真值
和 getBluetoothState()==STATE_ON 等價
需要BLUETOOTH類
返回值
如果本地適配器已經打開,則返回true
public BluetoothServerSocket listenUsingRfcommWithServiceRecord (String name, UUID uuid) 
Since: API Level 5 
創建一個正在監聽的安全的帶有服務記錄的無線射頻通信(RFCOMM)藍牙端口。

一個對該端口進行連接的遠程設備將被認證,對該端口的通訊將被加密。

使用accpet()方法可以獲取從監聽BluetoothServerSocket處新來的連接
該系統分配一個未被使用的無線射頻通信通道來進行監聽。
The system will also register a Service Discovery Protocol (SDP) record with the local SDP server containing the specified UUID, service name, and auto-assigned channel. Remote Bluetooth devices can use the same UUID to query our SDP server and discover which channel to connect to. This SDP record will be removed when this socket is closed, or if this application closes unexpectedly. 
該系統也將註冊一個服務探索協議(SDP)記錄,該記錄帶有一個包含了特定的通用唯一識別碼(Universally Unique Identifier,UUID),服務器名稱和自動分配通道的本地SDP服務。遠程藍牙設備可以用相同的UUID來查詢自己的SDP服務器,並搜尋連接到了哪個通道上。如果該端口已經關閉,或者如果該應用程序異常退出,則這個SDP記錄會被移除。
Use createRfcommSocketToServiceRecord(UUID) to connect to this socket from another device using the same UUID. 
使用createRfcommSocketToServiceRecord(UUID)從另一使用相同UUID的設備來連接到這個端口
需要BLUETOOTH類
Parameters
名字 SDP記錄下的服務器名
UUID SDP記錄下的UUID
返回值
一個正在監聽的無線射頻通信藍牙服務端口
拋出異常
IOException
產生錯誤,比如藍牙設備不可用,或者許可無效,或者通道被佔用。
public boolean setName (String name) 
Since: API Level 5 
設置藍牙或者本地藍牙適配器的暱稱. 
這個名字對於外界藍牙設備而言是可見的。
Valid Bluetooth names are a maximum of 248 UTF-8 characters, however many remote devices can only display the first 40 characters, and some may be limited to just 20. 
合法的藍牙名稱最多擁有248位UTF-8字符,但是很多外界設備只能顯示前40個字符,有些可能只限制前20個字符。
需要BLUETOOTH_ADMIN類
參數
名稱 一個合法的藍牙名稱
返回值
如果該名稱已被設定,則返回true,否則返回false
public boolean startDiscovery () 
Since: API Level 5 
開始對遠程設備進行查找的進程
它通常牽涉到一個大概需時12秒的查詢掃描過程,緊跟着是一個對每個獲取到自身藍牙名稱的新設備的頁面掃描。
這是一個異步調用方法:該方法將馬上獲得返回值,註冊ACTION_DISCOVERY_STARTED and ACTION_DISCOVERY_FINISHED意圖準確地確定該探索是處於開始階段或者完成階段。註冊ACTION_FOUND以活動遠程藍牙設備已找到的通知。
設備查找是一個重量級過程。當查找正在進行的時候,用戶不能嘗試對新的遠程藍牙設備進行連接,同時存在的連接將獲得有限制的帶寬以及高等待時間。用戶可用cencelDiscovery()類來取消正在執行的查找進程。發現的過程不會由活動來進行管理,但是它會作爲一個系統服務來運行,因此即使它不能直接請求這樣的一個查詢動作,也必需取消該搜索進程。
Device discovery will only find remote devices that are currently discoverable (inquiry scan enabled). Many Bluetooth devices are not discoverable by default, and need to be entered into a special mode. 
設備搜尋只尋找已經被連接的遠程設備。許多藍牙設備默認不會被搜尋到,並且需要進入到一個特殊的模式當中。
需要BLUETOOTH_ADMIN類
返回值
成功則返回true,有錯誤則返回false。









public final class 
BluetoothClass
extends Object
implements Parcelable 
java.lang.Object
↳ android.bluetooth.BluetoothClass
Class Overview
代表一個描述了設備通用特性和功能的藍牙類。比如,一個藍牙類會指定皆如電話、計算機或耳機的通用設備類型,可以提供皆如音頻或者電話的服務。
每個藍牙類都是有0個或更多的服務類,以及一個設備類組成。設備類將被分解成主要和較小的設備類部分。
BluetoothClass 用作一個能粗略描述一個設備(比如關閉用戶界面上一個圖標的設備)的線索,但當藍牙服務事實上是被一個設備所支撐的時候,BluetoothClass的介紹則不那麼可信任。精確的服務搜尋通過SDP請求來完成。當運用createRfcommSocketToServiceRecord(UUID) 和listenUsingRfcommWithServiceRecord(String, UUID)來創建RFCOMM端口的時候,SDP請求就會自動執行。
使用getBluetoothClass()方法來獲取爲遠程設備所提供的類。

Summary
嵌套類
class BluetoothClass.Device
定義所有設備類的常量 
class BluetoothClass.Service
定義所有服務類的常量 
常量
Creator
CREATOR

繼承常量
From interface android.os.Parcelable 
int CONTENTS_FILE_DESCRIPTOR
使用describeContents()方法的位屏蔽:每個位代表一種在數據流序列中被認爲具有特殊意義的對象
int PARCELABLE_WRITE_RETURN_VALUE
使用writeToParcel(Parcel, int)方法的標誌:這個被寫入的對象是一個返回值,它是一個皆如"Parcelable someFunction()", "void someFunction(out Parcelable)", or "void someFunction(inout Parcelable)"等函數的結果。

公共方法
int describeContents() 
描述了包含在Parcelable's marshalled representation中的特殊對象的種類。

boolean equals(Object o) 
比較帶有特定目標的常量。如果他們相等則標示出來。 
int getDeviceClass() 
返回BluetoothClass.中的設備類部分(主要的和較小的)

int getMajorDeviceClass() 
返回BluetoothClass.中設備類的主要部分

boolean hasService(int service) 
如果該指定服務類被BluetoothClass.所支持,則返回true

int hashCode()
返回這個對象的整型哈希碼 
String 
toString() 
返回這個對象的字符串,該字符串包含精確且可讀的介紹 
void writeToParcel(Parcel out, int flags) 
將類的數據寫入外部提供的Parcel中(注:此處沒有按照原文翻譯,實在看不懂原文的意思,囧) 
繼承方法
From class java.lang.Object 
Object 
clone() 
創建並返回該對象的複製品
boolean equals(Object o) 
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize() 
對象的內存被虛擬機收回前需要調用該方法
final Class

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章