編輯:Android開發實例
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<BluetoothDevice>
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<BluetoothDevice> 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<BluetoothClass>
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<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回這個對象的整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生所有在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了該對象中的notify()或notifyAll()方法
From interface android.os.Parcelable
abstract int describeContents()
描述了包含在Parcelable's marshalled representation.中的特殊對象的種類。
abstract void writeToParcel(Parcel dest, int flags)
將類的數據寫入外部提供的Parcel中
Constants
public static final Creator<BluetoothClass> CREATOR
Since: API Level 5
Public Methods
public int describeContents ()
Since: API Level 5
描述了包含在Parcelable's marshalled representation.中的特殊對象的種類。
返回值
一個指示被Parcelabel所排列的特殊對象類型集合的位屏蔽。
public boolean equals (Object o)
Since: API Level 5
比較帶有特定目標的常量。如果他們相等則標示出來。 為了保證其相等,o必須代表相同的對象,該對象作為這個使用類依賴比較的常量。通常約定,該比較既要可移植又需靈活
當且僅當o是一個作為接收器(使用==操作符來做比較)的精確相同的對象是,這個對象的實現才返回true值。子類通常實現equals(Object)方法,這樣它才會重視這兩個對象的類型和狀態。
通常約定,對於equals(Object)和hashCode() 方法,如果equals對於任意兩個對象返回真值,那麼hashCode()必須對這些對象返回相同的紙。這意味著對象的子類通常都覆蓋或者都不覆蓋這兩個方法。
參數
o 需要對比常量的對象
返回值
如果特定的對象和該對象相等則返回true,否則返回false。
public int getDeviceClass ()
Since: API Level 5
返回BluetoothClass.中的設備類部分(主要的和較小的)
從函數中返回的值可以和在BluetoothClass.Device中的公共常量做比較,從而確定哪個設備類在這個藍牙類中是被編碼的。
返回值
設備類部分
public int getMajorDeviceClass ()
Since: API Level 5
返回BluetoothClass.中設備類的主要部分
從函數中返回的值可以和在BluetoothClass.Device.Major中的公共常量做比較,從而確定哪個主要類在這個藍牙類中是被編碼的。
返回值
主要設備類部分
public boolean hasService (int service)
Since: API Level 5
如果該指定服務類被BluetoothClass.所支持,則返回true
在BluetoothClass.Service中,合法的服務類是公共常量,比如AUDIO.類。
參數
服務 合法服務類
返回值
如果該服務類可被支持,則返回true
public int hashCode ()
Since: API Level 5
返回這個對象的整型哈希碼。按約定,任意兩個在equals(Object)中返回true的對象必須返回相同的哈希碼。這意味著對象的子類通常通常覆蓋或者都不覆蓋這兩個方法。
返回值
該對象的哈希碼
public String toString ()
Since: API Level 5
返回這個對象的字符串,該字符串包含精確且可讀的介紹。系統鼓勵子類去重寫該方法,並且提供了能對該對象的類型和數據進行重視的實現方法。默認的實現方法只是簡單地把類名、“@“符號和該對象hashCode()方法的16進制數連接起來(如下列所示的表達式):
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回值
該對象中一個可被打印的字符串。
public void writeToParcel (Parcel out, int flags)
Since: API Level 5
將類的數據寫入外部提供的Parcel中
Parameters
out 對象需要被寫入的Parcel
flags 和對象需要如何被寫入有關的附加標志。可能是0,或者可能是PARCELABLE_WRITE_RETURN_VALUE。
public static class
BluetoothClass.Device
extends Object
java.lang.Object
↳ android.bluetooth.BluetoothClass.Device
Class Overview
定義所有的設備類常量
每個BluetoothClass對一個帶有主要和較小部分的設備類進行編碼。
BluetoothClass.Device中的常量代表主要和較小的設備類部分(完整的設備類)的組合。BluetoothClass.Device.Major的常量只能代表主要設備類。
Summary
嵌套類
class BluetoothClass.Device.Major
定義了所有的主要設備類常量
Constants
int AUDIO_VIDEO_CAMCORDER
int AUDIO_VIDEO_CAR_AUDIO
int AUDIO_VIDEO_HANDSFREE
int AUDIO_VIDEO_HEADPHONES
int AUDIO_VIDEO_HIFI_AUDIO
int AUDIO_VIDEO_LOUDSPEAKER
int AUDIO_VIDEO_MICROPHONE
int AUDIO_VIDEO_PORTABLE_AUDIO
int AUDIO_VIDEO_SET_TOP_BOX
int AUDIO_VIDEO_UNCATEGORIZED
int AUDIO_VIDEO_VCR
int AUDIO_VIDEO_VIDEO_CAMERA
int AUDIO_VIDEO_VIDEO_CONFERENCING
int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER
int AUDIO_VIDEO_VIDEO_GAMING_TOY
int AUDIO_VIDEO_VIDEO_MONITOR
int AUDIO_VIDEO_WEARABLE_HEADSET
int COMPUTER_DESKTOP
int COMPUTER_HANDHELD_PC_PDA
int COMPUTER_LAPTOP
int COMPUTER_PALM_SIZE_PC_PDA
int COMPUTER_SERVER
int COMPUTER_UNCATEGORIZED
int COMPUTER_WEARABLE
int HEALTH_BLOOD_PRESSURE
int HEALTH_DATA_DISPLAY
int HEALTH_GLUCOSE
int HEALTH_PULSE_OXIMETER
int HEALTH_PULSE_RATE
int HEALTH_THERMOMETER
int HEALTH_UNCATEGORIZED
int HEALTH_WEIGHING
int PHONE_CELLULAR
int PHONE_CORDLESS
int PHONE_ISDN
int PHONE_MODEM_OR_GATEWAY
int PHONE_SMART
int PHONE_UNCATEGORIZED
int TOY_CONTROLLER
int TOY_DOLL_ACTION_FIGURE
int TOY_GAME
int TOY_ROBOT
int TOY_UNCATEGORIZED
int TOY_VEHICLE
int WEARABLE_GLASSES
int WEARABLE_HELMET
int WEARABLE_JACKET
int WEARABLE_PAGER
int WEARABLE_UNCATEGORIZED
int WEARABLE_WRIST_WATCH
公共構造器
BluetoothClass.Device()
繼承方法
From class java.lang.Object
Object
clone()
創建並返回該對象的復制品.
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize()
對象的內存被虛擬機收回前需要調用該方法
final Class<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
Constants
public static final int AUDIO_VIDEO_CAMCORDER
Since: API Level 5
常量值: 1076 (0x00000434)
public static final int AUDIO_VIDEO_CAR_AUDIO
Since: API Level 5
常量值: 1056 (0x00000420)
public static final int AUDIO_VIDEO_HANDSFREE
Since: API Level 5
常量值: 1032 (0x00000408)
public static final int AUDIO_VIDEO_HEADPHONES
Since: API Level 5
常量值: 1048 (0x00000418)
public static final int AUDIO_VIDEO_HIFI_AUDIO
Since: API Level 5
常量值: 1064 (0x00000428)
public static final int AUDIO_VIDEO_LOUDSPEAKER
Since: API Level 5
常量值: 1044 (0x00000414)
public static final int AUDIO_VIDEO_MICROPHONE
Since: API Level 5
常量值: 1040 (0x00000410)
public static final int AUDIO_VIDEO_PORTABLE_AUDIO
Since: API Level 5
常量值: 1052 (0x0000041c)
public static final int AUDIO_VIDEO_SET_TOP_BOX
Since: API Level 5
常量值: 1060 (0x00000424)
public static final int AUDIO_VIDEO_UNCATEGORIZED
Since: API Level 5
常量值: 1024 (0x00000400)
public static final int AUDIO_VIDEO_VCR
Since: API Level 5
常量值: 1068 (0x0000042c)
public static final int AUDIO_VIDEO_VIDEO_CAMERA
Since: API Level 5
常量值: 1072 (0x00000430)
public static final int AUDIO_VIDEO_VIDEO_CONFERENCING
Since: API Level 5
常量值: 1088 (0x00000440)
public static final int AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER
Since: API Level 5
常量值: 1084 (0x0000043c)
public static final int AUDIO_VIDEO_VIDEO_GAMING_TOY
Since: API Level 5
常量值: 1096 (0x00000448)
public static final int AUDIO_VIDEO_VIDEO_MONITOR
Since: API Level 5
常量值: 1080 (0x00000438)
public static final int AUDIO_VIDEO_WEARABLE_HEADSET
Since: API Level 5
常量值: 1028 (0x00000404)
public static final int COMPUTER_DESKTOP
Since: API Level 5
常量值: 260 (0x00000104)
public static final int COMPUTER_HANDHELD_PC_PDA
Since: API Level 5
常量值: 272 (0x00000110)
public static final int COMPUTER_LAPTOP
Since: API Level 5
常量值: 268 (0x0000010c)
public static final int COMPUTER_PALM_SIZE_PC_PDA
Since: API Level 5
常量值: 276 (0x00000114)
public static final int COMPUTER_SERVER
Since: API Level 5
常量值: 264 (0x00000108)
public static final int COMPUTER_UNCATEGORIZED
Since: API Level 5
常量值: 256 (0x00000100)
public static final int COMPUTER_WEARABLE
Since: API Level 5
常量值: 280 (0x00000118)
public static final int HEALTH_BLOOD_PRESSURE
Since: API Level 5
常量值: 2308 (0x00000904)
public static final int HEALTH_DATA_DISPLAY
Since: API Level 5
常量值: 2332 (0x0000091c)
public static final int HEALTH_GLUCOSE
Since: API Level 5
常量值: 2320 (0x00000910)
public static final int HEALTH_PULSE_OXIMETER
Since: API Level 5
常量值: 2324 (0x00000914)
public static final int HEALTH_PULSE_RATE
Since: API Level 5
常量值: 2328 (0x00000918)
public static final int HEALTH_THERMOMETER
Since: API Level 5
常量值: 2312 (0x00000908)
public static final int HEALTH_UNCATEGORIZED
Since: API Level 5
常量值: 2304 (0x00000900)
public static final int HEALTH_WEIGHING
Since: API Level 5
常量值: 2316 (0x0000090c)
public static final int PHONE_CELLULAR
Since: API Level 5
常量值: 516 (0x00000204)
public static final int PHONE_CORDLESS
Since: API Level 5
常量值: 520 (0x00000208)
public static final int PHONE_ISDN
Since: API Level 5
常量值: 532 (0x00000214)
public static final int PHONE_MODEM_OR_GATEWAY
Since: API Level 5
常量值: 528 (0x00000210)
public static final int PHONE_SMART
Since: API Level 5
常量值: 524 (0x0000020c)
public static final int PHONE_UNCATEGORIZED
Since: API Level 5
常量值: 512 (0x00000200)
public static final int TOY_CONTROLLER
Since: API Level 5
常量值: 2064 (0x00000810)
public static final int TOY_DOLL_ACTION_FIGURE
Since: API Level 5
常量值: 2060 (0x0000080c)
public static final int TOY_GAME
Since: API Level 5
常量值: 2068 (0x00000814)
public static final int TOY_ROBOT
Since: API Level 5
常量值: 2052 (0x00000804)
public static final int TOY_UNCATEGORIZED
Since: API Level 5
常量值: 2048 (0x00000800)
public static final int TOY_VEHICLE
Since: API Level 5
常量值: 2056 (0x00000808)
public static final int WEARABLE_GLASSES
Since: API Level 5
常量值: 1812 (0x00000714)
public static final int WEARABLE_HELMET
Since: API Level 5
常量值: 1808 (0x00000710)
public static final int WEARABLE_JACKET
Since: API Level 5
常量值: 1804 (0x0000070c)
public static final int WEARABLE_PAGER
Since: API Level 5
常量值: 1800 (0x00000708)
public static final int WEARABLE_UNCATEGORIZED
Since: API Level 5
常量值: 1792 (0x00000700)
public static final int WEARABLE_WRIST_WATCH
Since: API Level 5
常量值: 1796 (0x00000704)
public static class
BluetoothClass.Device.Major
extends Object
java.lang.Object
↳ android.bluetooth.BluetoothClass.Device.Major
Class Overview
定義所有的主要設備類函數
Summary
常量
int AUDIO_VIDEO
int COMPUTER
int HEALTH
int IMAGING
int MISC
int NETWORKING
int PERIPHERAL
int PHONE
int TOY
int UNCATEGORIZED
int WEARABLE
公共構造器
BluetoothClass.Device.Major()
繼承方法
From class java.lang.Object
Object
clone()
創建並返回該對象的復制品.
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize()
對象的內存被虛擬機收回前需要調用該方法
final Class<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
Constants
public static final int AUDIO_VIDEO
Since: API Level 5
常量值: 1024 (0x00000400)
public static final int COMPUTER
Since: API Level 5
常量值: 256 (0x00000100)
public static final int HEALTH
Since: API Level 5
常量值: 2304 (0x00000900)
public static final int IMAGING
Since: API Level 5
常量值: 1536 (0x00000600)
public static final int MISC
Since: API Level 5
常量值: 0 (0x00000000)
public static final int NETWORKING
Since: API Level 5
常量值: 768 (0x00000300)
public static final int PERIPHERAL
Since: API Level 5
常量值: 1280 (0x00000500)
public static final int PHONE
Since: API Level 5
常量值: 512 (0x00000200)
public static final int TOY
Since: API Level 5
常量值: 2048 (0x00000800)
public static final int UNCATEGORIZED
Since: API Level 5
常量值: 7936 (0x00001f00)
public static final int WEARABLE
常量值: 1792 (0x00000700)
Public Constructors
public BluetoothClass.Device.Major ()
public static final class
BluetoothClass.Service
extends Object
java.lang.Object
↳ android.bluetooth.BluetoothClass.Service
Class Overview
定義所有的服務類常量
任意BluetoothClass由0或多個服務類編碼。
Summary
常量
int AUDIO
int CAPTURE
int INFORMATION
int LIMITED_DISCOVERABILITY
int NETWORKING
int OBJECT_TRANSFER
int POSITIONING
int RENDER
int TELEPHONY
公共構造器
BluetoothClass.Service()
繼承方法
From class java.lang.Object
Object
clone()
創建並返回該對象的復制品.
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize()
對象的內存被虛擬機收回前需要調用該方法
final Class<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
Constants
public static final int AUDIO
Since: API Level 5
常量值: 2097152 (0x00200000)
public static final int CAPTURE
Since: API Level 5
常量值: 524288 (0x00080000)
public static final int INFORMATION
Since: API Level 5
常量值: 8388608 (0x00800000)
public static final int LIMITED_DISCOVERABILITY
Since: API Level 5
常量值: 8192 (0x00002000)
public static final int NETWORKING
Since: API Level 5
常量值: 131072 (0x00020000)
public static final int OBJECT_TRANSFER
Since: API Level 5
常量值: 1048576 (0x00100000)
public static final int POSITIONING
Since: API Level 5
常量值: 65536 (0x00010000)
public static final int RENDER
Since: API Level 5
常量值: 262144 (0x00040000)
public static final int TELEPHONY
Since: API Level 5
常量值: 4194304 (0x00400000)
Public Constructors
public BluetoothClass.Service ()
public final class
BluetoothDevice
extends Object
implements Parcelable
java.lang.Object
↳ android.bluetooth.BluetoothDevice
Class Overview
代表一個遠程藍牙設備。讓你創建一個帶有各自設備的BluetoothDevice或者查詢其皆如名稱、地址、類和連接狀態等信息。
對於藍牙硬件地址而言,這個類僅僅是一個瘦包裝器。這個類的對象是不可改變的。這個類上的操作會使用這個用來創建BluetoothDevice類的BluetoothAdapter類執行在遠程藍牙硬件上。
為了獲得BluetoothDevice,類,使用BluetoothAdapter.getRemoteDevice(String)方法去創建一個表示已知MAC地址的設備(用戶可以通過帶有BluetoothAdapter類來完成對設備的查找)或者從一個通過BluetoothAdapter.getBondedDevices()得到返回值的有聯系的設備集合來得到該設備。
NOTE:需要BLUETOOTH類的許可
Summary
常量
String
ACTION_ACL_CONNECTED
廣播活動:指明一個與遠程設備建立的低級別(ACL)連接
String
ACTION_ACL_DISCONNECTED
廣播活動:指明一個來自於遠程設備的低級別(ACL)連接的斷開
String
ACTION_ACL_DISCONNECT_REQUESTED
廣播活動:指明一個為遠程設備提出的低級別(ACL)的斷開連接請求,並即將斷開連接。
String
ACTION_BOND_STATE_CHANGED
廣播活動:指明一個遠程設備的連接狀態的改變
String
ACTION_CLASS_CHANGED
廣播活動:一個已經改變的遠程設備的藍牙類。
String
ACTION_FOUND
廣播活動:發現遠程設備
String
ACTION_NAME_CHANGED
廣播活動:指明一個遠程設備的昵稱第一次找到,或者自從最後一次找到該昵稱開始已經改變。
int BOND_BONDED
指明遠程設備已經匹配
int BOND_BONDING
指明和遠程設備的匹配正在進行中
int BOND_NONE
指明遠程設備並未匹配
Creator<BluetoothDevice>
CREATOR
int ERROR
該類的錯誤標志值
String
EXTRA_BOND_STATE
作為一個ACTION_BOND_STATE_CHANGED的整型附加域
String
EXTRA_CLASS
作為一個ACTION_FOUND and和ACTION_CLASS_CHANGED的Parcelabe BluetoothClass附加域。
String
EXTRA_DEVICE
每次通過該類進行廣播時,作為Parcelable BluetoothDevice的附加域
String
EXTRA_NAME
作為ACTION_NAME_CHANGED和ACTION_FOUND的字符串附加域
String
EXTRA_PREVIOUS_BOND_STATE
作為ACTION_BOND_STATE_CHANGED的整型附加域
String
EXTRA_RSSI
作為ACTION_FOUND的可選短整型附加域
繼承常量
來自接口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)"等函數的結果。
Public Methods
BluetoothSocket
createRfcommSocketToServiceRecord(UUID uuid)
創建一個RFCOMM 以准備開始一個對使用uuid的SDP查找的遠程設備進行安全而友好的連接。
int describeContents()
描述了包含在Parcelable's marshalled representation中的特殊對象的種類。
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
String
getAddress()
返回該藍牙設備的硬件地址
BluetoothClass
getBluetoothClass()
獲得遠程設備的藍牙類
int getBondState()
獲得遠程設備的連接狀態
String
getName()
獲得遠程設備的藍顏昵稱
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<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
From interface android.os.Parcelable
abstract int describeContents()
描述了包含在Parcelable's marshalled representation中的特殊對象的種類。
abstract void writeToParcel(Parcel dest, int flags)
將類的數據寫入外部提供的Parcel中
Constants
public static final String ACTION_ACL_CONNECTED
Since: API Level 5
指明一個與遠程設備建立的低級別(ACL)連接
總是包含EXTRA_DEVICE.附加域
ACL連接通過Android藍牙棧自動進行管理
需要BLUETOOTH去獲取
常量值: "android.bluetooth.device.action.ACL_CONNECTED"
public static final String ACTION_ACL_DISCONNECTED
Since: API Level 5
廣播活動:指明一個來自於遠程設備的低級別(ACL)連接的斷開
總是包含EXTRA_DEVICE.附加域
ACL連接通過Android藍牙棧自動進行管理
需要BLUETOOTH去獲取
常量值: "android.bluetooth.device.action.ACL_DISCONNECTED"
public static final String ACTION_ACL_DISCONNECT_REQUESTED
Since: API Level 5
指明一個為遠程設備提出的低級別(ACL)的斷開連接請求,並即將斷開連接。
對於友好的斷開連接,該常量是有作用的。應用程序可以用它作為暗示去馬上中斷對遠程設備的高級別的連接(RFCOMM,L2CAP,或者其它連接)。
總是包含EXTRA_DEVICE.附加域
需要BLUETOOTH去獲取
常量值: "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED"
public static final String ACTION_BOND_STATE_CHANGED
Since: API Level 5
指明一個遠程設備的連接狀態的改變。
比如,當一個設備已經被匹配。
總是包含EXTRA_DEVICE, EXTRA_BOND_STATE和 EXTRA_PREVIOUS_BOND_STATE.這些附加域
需要BLUETOOTH去獲取
常量值: "android.bluetooth.device.action.BOND_STATE_CHANGED"
public static final String ACTION_CLASS_CHANGED
Since: API Level 5
廣播活動:一個已經改變的遠程設備的藍牙類。
總是包含EXTRA_DEVICE和EXTRA_BOND_STATE這些附加域
需要BLUETOOTH去獲取
See Also
ERROR(BluetoothClass} [email protected] BluetoothClass})
常量值: "android.bluetooth.device.action.CLASS_CHANGED"
public static final String ACTION_FOUND
Since: API Level 5
廣播活動:發現遠程設備
當一個遠程設備在查找過程中被發現時,發送該常量值。
總是包含EXTRA_DEVICE和EXTRA_CLASS.這些附加域。如果可用的話,也可包含EXTRA_NAME和/或EXTRA_RSSI這些附加域。
需要BLUETOOTH去接收
常量值: "android.bluetooth.device.action.FOUND"
public static final String ACTION_NAME_CHANGED
Since: API Level 5
廣播活動:指明一個遠程設備的昵稱第一次找到,或者自從最後一次找到該昵稱開始已經改變。
總是包含EXTRA_DEVICE和EXTRA_NAME這些附加域
需要BLUETOOTH去接收
常量值: "android.bluetooth.device.action.NAME_CHANGED"
public static final int BOND_BONDED
Since: API Level 5
指明遠程設備已經匹配。
一個共享的連接鍵為了遠程設備而存在於本地,因而設備間的通訊可以被認證和加密。
和遠程設備的匹配並不意味著設備間已經成功連接。它只意味著匹配過程已經在稍早之前完成,並且連接鍵已經存儲在本地,准備在下次連接的時候使用。
常量值: 12 (0x0000000c)
public static final int BOND_BONDING
Since: API Level 5
指明和遠程設備的匹配正在進行中
常量值: 11 (0x0000000b)
public static final int BOND_NONE
Since: API Level 5
指明遠程設備未被匹配。
There is no shared link key with the remote device, so communication (if it is allowed at all) will be unauthenticated and unencrypted.
不存在為了遠程設備而已經共享的連接鍵,因而設備間的通訊(如果完全被允許)不可被認證和加密。
常量值: 10 (0x0000000a)
public static final Creator<BluetoothDevice> CREATOR
Since: API Level 5
public static final int ERROR
Since: API Level 5
該類的錯誤標志值. 標記該類的錯誤值。確保和該類中的任意其它整數常量不相等。它為需要一個標記錯誤值的函數提供了便利。例如: Intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)
常量值: -2147483648 (0x80000000)
public static final String EXTRA_BOND_STATE
Since: API Level 5
作為一個ACTION_BOND_STATE_CHANGED的整型附加域。包含了遠程設備的匹配狀態。
可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
常量值: "android.bluetooth.device.extra.BOND_STATE"
public static final String EXTRA_CLASS
Since: API Level 5
作為一個ACTION_FOUND and和ACTION_CLASS_CHANGED的Parcelabe BluetoothClass附加域。
常量值: "android.bluetooth.device.extra.CLASS"
public static final String EXTRA_DEVICE
Since: API Level 5
每次通過該類進行廣播時,作為Parcelable BluetoothDevice的附加域。它包含了該常量適用的BluetoothDevice類。
常量值: "android.bluetooth.device.extra.DEVICE"
public static final String EXTRA_NAME
Since: API Level 5
作為ACTION_NAME_CHANGED和ACTION_FOUND的字符串附加域。它包含了這個藍牙昵稱。
常量值: "android.bluetooth.device.extra.NAME"
public static final String EXTRA_PREVIOUS_BOND_STATE
Since: API Level 5
作為ACTION_BOND_STATE_CHANGED的整型附加域。包含了遠程設備以前的匹配狀態。
可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
常量值: "android.bluetooth.device.extra.PREVIOUS_BOND_STATE"
public static final String EXTRA_RSSI
Since: API Level 5
作為ACTION_FOUND的可選短整型附加域。包含了被藍牙硬件通知的遠程設備的RSSI(Receive Signal Strength Indication,接收信號強度指示)值。
常量值: "android.bluetooth.device.extra.RSSI"
Public Methods
public BluetoothSocket createRfcommSocketToServiceRecord (UUID uuid)
Since: API Level 5
創建一個RFCOMM 以准備開始一個對使用uuid的SDP查找的遠程設備進行安全而友好的連接。
This is designed to be used with listenUsingRfcommWithServiceRecord(String, UUID) for peer-peer Bluetooth applications.
該方法是為了使用帶有listenUsingRfcommWithServiceRecord(String, UUID)方法來進行對等的藍牙應用而設計的
使用connect()初始化這個外界連接。它也將執行一個已給與UUID的SDP查找,從而確定連接到哪個通道上。
遠程設備將被認證,在這個端口上的通訊會被加密。
需要BLUETOOTH去接收
參數
uuid 查詢RFCOMM通道的服務記錄UUID
返回值
一個准備好外界連接的RFCOMM藍牙服務端口
異常拋出
IOException
出現錯誤,比如藍牙模塊不可用,或者許可無效。
public int describeContents ()
Since: API Level 5
描述了包含在Parcelable's marshalled representation中的特殊對象的種類。
Returns
一個指示被Parcelabel所排列的特殊對象類型集合的位屏蔽。
public boolean equals (Object o)
Since: API Level 5
比較帶有特定目標的常量。如果他們相等則標示出來。 為了保證其相等,o必須代表相同的對象,該對象作為這個使用類依賴比較的常量。通常約定,該比較既要可移植又需靈活
當且僅當o是一個作為接收器(使用==操作符來做比較)的精確相同的對象是,這個對象的實現才返回true值。子類通常實現equals(Object)方法,這樣它才會重視這兩個對象的類型和狀態。
通常約定,對於equals(Object)和hashCode() 方法,如果equals對於任意兩個對象返回真值,那麼hashCode()必須對這些對象返回相同的紙。這意味著對象的子類通常都覆蓋或者都不覆蓋這兩個方法。
參數
o 需要對比常量的對象
返回值
如果特定的對象和該對象相等則返回true,否則返回false。
public String getAddress ()
Since: API Level 5
返回該藍牙設備的硬件地址
例如: "00:11:22:AA:BB:CC".
返回值
字符串類型的藍牙硬件地址
public BluetoothClass getBluetoothClass ()
Since: API Level 5
獲取遠程設備的藍牙類
需要BLUETOOTH類
返回值
藍牙類對象,出錯時返回空值、
public int getBondState ()
Since: API Level 5
獲取遠程設備的連接狀態。
連接狀態的可能值有: BOND_NONE, BOND_BONDING, BOND_BONDED.
需要BLUETOOTH類
返回值
連接狀態。
public String getName ()
Since: API Level 5
獲取遠程設備的藍牙昵稱。
當執行設備掃描的時候,本地適配器將自動尋找遠程名稱。該方法只返回來自存儲器中該設備的名稱。
需要BLUETOOTH類
返回值
藍牙昵稱,如果出現問題則返回控制。
public int hashCode ()
Since: API Level 5
返回該對象的一個整型哈希值. 通常約定,如果equals對於任意兩個對象返回真值,那麼hashCode()必須對這些對象返回相同的值。這意味著對象的子類通常都覆蓋或者都不覆蓋這兩個方法。
返回值
該對象的哈希值
public String toString ()
Since: API Level 5
返回該藍牙設備的字符串表達式。
這是一個藍牙硬件地址,例如"00:11:22:AA:BB:CC".然而,如果用戶明確需要藍牙硬件地址以防以後toString()表達式會改變的話,用戶總是需要使用getAddress()方法。
返回值
該藍牙設備的字符串表達式。
public void writeToParcel (Parcel out, int flags)
Since: API Level 5
將類的數據寫入外部提供的Parcel中
Parameters
out 對象需要被寫入的Parcel
flags 和對象需要如何被寫入有關的附加標志。可能是0,或者可能是PARCELABLE_WRITE_RETURN_VALUE。
public final class
BluetoothServerSocket
extends Object
implements Closeable
java.lang.Object
↳ android.bluetooth.BluetoothServerSocket
Class Overview
一個藍牙監聽端口
藍牙端口監聽接口和TCP端口類似:Socket和ServerSocket類。在服務器端,使用BluetoothServerSocket類來創建一個監聽服務端口。當一個連接被BluetoothServerSocket所接受,它會返回一個新的BluetoothSocket來管理該連接。在客戶端,使用一個單獨的BluetoothSocket類去初始化一個外接連接和管理該連接。
最通常使用的藍牙端口是RFCOMM,它是被Android API支持的類型。RFCOMM是一個面向連接,通過藍牙模塊進行的數據流傳輸方式,它也被稱為串行端口規范(Serial Port Profile,SPP)。
為了創建一個對准備好的新來的連接去進行監聽BluetoothServerSocket類,使用BluetoothAdapter.listenUsingRfcommWithServiceRecord()方法。然後調用accept()方法去監聽該鏈接的請求。在連接建立之前,該調用會被阻斷,也就是說,它將返回一個BluetoothSocket類去管理該連接。每次獲得該類之後,如果不再需要接受連接,最好調用在BluetoothServerSocket類下的close()方法。關閉BluetoothServerSocket類不會關閉這個已經返回的BluetoothSocket類
BluetoothSocket類線程安全。特別的,close()方法總會馬上放棄外界操作並關閉服務器端口。
Note: 需要BLUETOOTH類的許可。
Summary
公共方法
BluetoothSocket
accept()
阻塞直到一個連接已經建立
BluetoothSocket
accept(int timeout)
阻塞直到一個帶有超時的連接已經建立
void close()
馬上關閉端口,並釋放所有相關的資源。
繼承方法
From class java.lang.Object
Object
clone()
創建並返回該對象的復制品.
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize()
對象的內存被虛擬機收回前需要調用該方法
final Class<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
From interface java.io.Closeable
abstract void close()
關閉對象並且釋放任意該對象持有的系統資源。
Public Methods
public BluetoothSocket accept ()
Since: API Level 5
阻塞直到一個連接已經建立
在一個成功建立的連接上返回一個已連接的BluetoothSocket類。
每當該調用返回的時候,它可以在此調用去接收以後新來的連接。
close()方法可以用來放棄從另一線程來的調用。
返回值
已連接的 BluetoothSocket
異常拋出
IOException
出現錯誤,比如該調用被放棄,或者超時。
public BluetoothSocket accept (int timeout)
Since: API Level 5
阻塞直到一個帶超時的連接已經建立
在一個成功建立的連接上返回一個已連接的BluetoothSocket類。
每當該調用返回的時候,它可以在此調用去接收以後新來的連接。
close()方法可以用來放棄從另一線程來的調用。
返回值
已連接的 BluetoothSocket
異常拋出
IOException
出現錯誤,比如該調用被放棄,或者超時。
public void close ()
Since: API Level 5
馬上關閉端口,並釋放所有相關的資源。
在其他線程的該端口中引起阻塞,從而使系統馬上拋出一個IO異常。
關閉BluetoothServerSocket不會關閉接受自accept()的任意BluetoothSocket。
異常拋出
IOException
public final class
BluetoothSocket
extends Object
implements Closeable
java.lang.Object
↳ android.bluetooth.BluetoothSocket
Class Overview
藍牙端口監聽接口和TCP端口類似:Socket和ServerSocket類。在服務器端,使用BluetoothServerSocket類來創建一個監聽服務端口。當一個連接被BluetoothServerSocket所接受,它會返回一個新的BluetoothSocket來管理該連接。在客戶端,使用一個單獨的BluetoothSocket類去初始化一個外接連接和管理該連接。
最通常使用的藍牙端口是RFCOMM,它是被Android API支持的類型。RFCOMM是一個面向連接,通過藍牙模塊進行的數據流傳輸方式,它也被稱為串行端口規范(Serial Port Profile,SPP)。
為了創建一個BluetoothSocket去連接到一個已知設備,使用方法BluetoothDevice.createRfcommSocketToServiceRecord()。然後調用connect()方法去嘗試一個面向遠程設備的連接。這個調用將被阻塞指導一個連接已經建立或者該鏈接失效。
為了創建一個BluetoothSocket作為服務端(或者“主機”),查看BluetoothServerSocket文檔。
每當該端口連接成功,無論它初始化為客戶端,或者被接受作為服務器端,通過getInputStream()和getOutputStream()來打開IO流,從而獲得各自的InputStream和OutputStream對象
BluetoothSocket類線程安全。特別的,close()方法總會馬上放棄外界操作並關閉服務器端口。
Note: 需要BLUETOOTH類的許可。
Summary
公共方法
void close()
馬上關閉該端口並且釋放所有相關的資源。
void connect()
嘗試連接到遠程設備。
InputStream
getInputStream()
通過連接的端口獲得輸入數據流
OutputStream
getOutputStream()
通過連接的端口獲得輸出數據流.
BluetoothDevice
getRemoteDevice()
獲得該端口正在連接或者已經連接的遠程設備。
繼承方法
From class java.lang.Object
Object
clone()
創建並返回該對象的復制品.
boolean equals(Object o)
比較帶有特定目標的常量。如果他們相等則標示出來。
void finalize()
對象的內存被虛擬機收回前需要調用該方法
final Class<? extends Object>
getClass()
返回一個唯一的Class常量,該常量代表這個對象類
int hashCode()
返回該對象的一個整型哈希碼
final void notify()
產生一個在該對象監測器中等待被喚醒(通過wait() 方法進行調用)的線程
final void notifyAll()
產生在對象監測器中等待被喚醒(通過wait() 方法進行調用)的所有線程
String
toString()
返回這個對象的字符串,該字符串包含精確且可讀的介紹
final void wait(long millis, int nanos)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait(long millis)
產生一個調用線程,該線程將等待,直到另一個線程調用了notify()或notifyAll()方法,或者直到產生一個精確的超時。
final void wait()
產生一個調用線程,該線程將等待,直到另一個線程調用了在該對象中的notify()或notifyAll()方法。
From interface java.io.Closeable
abstract void close()
關閉對象並且釋放任意該對象持有的系統資源。
Public Methods
public void close ()
Since: API Level 5
馬上關閉該端口並且釋放所有相關的資源。
在其它線程的該端口中引起阻塞,從而使系統馬上拋出一個IO異常。
異常拋出
IOException
public void connect ()
Since: API Level 5
嘗試連接到遠程設備。
該方法將阻塞,指導一個連接建立或者失效。如果該方法沒有返回異常值,則該端口現在已經建立。
當設備查找正在進行的時候,創建對遠程藍牙設備的新連接不可被嘗試。在藍牙適配器上,設備查找是一個重量級過程,並且肯定會降低一個設備的連接。使用cancelDiscovery()方法去取消一個外界的查詢。查詢並不由活動所管理,而作為一個系統服務來運行,所以即使它不能直接請求一個查詢,應用程序也總會調用cancelDiscovery()方法。。
close()方法可以用來放棄從另一線程而來的調用。
異常拋出
IOException
on error, for example connection failure
public InputStream getInputStream ()
Since: API Level 5
通過連接的端口獲得輸入數據流
即使該端口未連接,該輸入數據流也會返回。不過在該數據流上的操作將拋出異常,直到相關的連接已經建立。
返回值
輸入流
異常拋出
IOException
public OutputStream getOutputStream ()
Since: API Level 5
通過連接的端口獲得輸出數據流
即使該端口未連接,該輸出數據流也會返回。不過在該數據流上的操作將拋出異常,直到相關的連接已經建立。
返回值
輸出流
異常拋出
IOException
public BluetoothDevice getRemoteDevice ()
Since: API Level 5
獲得該端口正在連接或者已經連接的遠程設備。
返回值
遠程設備
Android平台有三種網絡接口可以使用,他們分別是:java.net.*(標准Java接口)、Org.apache接口和Android.net.*(Androi
Google為ndroid平台開發Web Service提供了支持,提供了Ksoap2-android相關架包 1.下載該夾包可以直接登錄http://code.
Android有一個內置的麥克風,通過它可以捕獲音頻和存儲,或在手機進行播放。有很多方法可以做到這一點,但最常見的方法是通過MediaRecorder類。Android提
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩