?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
BluetoothSocket
版本:Android 2.3 r1
?
結(jié)構(gòu)
繼承關(guān)系
public final class BluetoothSocket extends Object implements Closeable
????????
java.lang.Object
android.bluetooth.BluetoothSocket
?
類概述
???????? 已連接或連接到藍牙套接字(socket)。
???????? 藍牙端口監(jiān)聽接口和TCP端口類似:Socket和ServerSocket類。在服務(wù)器端,使用BluetoothServerSocket類來創(chuàng)建一個 監(jiān)聽服務(wù)端口。當一個連接被BluetoothServerSocket所接受,它會返回一個新的BluetoothSocket來管理該連接。在客戶 端,使用一個單獨的BluetoothSocket類去初始化一個外接連接和管理該連接。
最通常使用的藍牙端口是RFCOMM,它是被Android API支持的類型。RFCOMM是一個面向連接,通過藍牙模塊進行的數(shù)據(jù)流傳輸方式,它也被稱為串行端口規(guī)范(Serial Port Profile,SPP)。
為了創(chuàng)建一個BluetoothSocket去連接到一個已知設(shè)備,使用方法 BluetoothDevice.createRfcommSocketToServiceRecord()。然后調(diào)用connect()方法去嘗試一個 面向遠程設(shè)備的連接。這個調(diào)用將被阻塞指導一個連接已經(jīng)建立或者該鏈接失效。
為了創(chuàng)建一個BluetoothSocket作為服務(wù)端(或者“主機”),查看BluetoothServerSocket文檔。
每當該端口連接成功,無論它初始化為客戶端,或者被接受作為服務(wù)器端,通過getInputStream()和getOutputStream()來打開IO流,從而獲得各自的InputStream和OutputStream對象
BluetoothSocket類線程安全。特別的,close()方法總會馬上放棄外界操作并關(guān)閉服務(wù)器端口。
注意:需要BLUETOOTH
權(quán)限。
參見
???????? BluetoothServerSocket
??? InputStream
??? OutputStream
?
公共方法
??? public void close ()
馬上關(guān)閉該端口并且釋放所有相關(guān)的資源。
在其它線程的該端口中引起阻塞,從而使系統(tǒng)馬上拋出一個IO異常。
異常
IOException
?
??? public void connect ()
嘗試連接到遠程設(shè)備。
該方法將阻塞,指導一個連接建立或者失效。如果該方法沒有返回異常值,則該端口現(xiàn)在已經(jīng)建立。
當設(shè)備查找正在進行的時候,創(chuàng)建對遠程藍牙設(shè)備的新連接不可被嘗試。在藍牙適配器上,設(shè)備查找是一個重量級過程,并且肯定會降低一個設(shè)備的連接。使用
cancelDiscovery()
方法去取消一個外界的查詢。查詢并不由活動所管理,而作為一個系統(tǒng)服務(wù)來運行,所以即使它不能直接請求一個查詢,應用 程序也總會調(diào)用cancelDiscovery()
方法。
close()
方法可以用來放棄從另一線程而來的調(diào)用。
異常
IOException???? 一個錯誤,例如連接失敗。
?
??? public InputStream getInputStream ()
通過連接的端口獲得輸入數(shù)據(jù)流
即使該端口未連接,該輸入數(shù)據(jù)流也會返回。不過在該數(shù)據(jù)流上的操作將拋出異常,直到相關(guān)的連接已經(jīng)建立。
返回值
輸入流
異常
IOException
?
??? public OutputStream getOutputStream ()
通過連接的端口獲得輸出數(shù)據(jù)流
即使該端口未連接,該輸出數(shù)據(jù)流也會返回。不過在該數(shù)據(jù)流上的操作將拋出異常,直到相關(guān)的連接已經(jīng)建立。
返回值
輸出流
異常
IOException
?
??? public BluetoothDevice getRemoteDevice ()
獲得該端口正在連接或者已經(jīng)連接的遠程設(shè)備。
返回值
遠程設(shè)備
?
補充
??? 文章精選
??????? 第四十一講:Android藍牙編程入門
??????? Android藍牙API之BluetoothSocket類
??????? Android藍牙API之BluetoothSocket類(2)
?
?