Android 藍芽遊戲開發(一)

2021-06-27 02:09:31 字數 2788 閱讀 4233

藍芽4.0 據說是超低功耗,隨之而來的是智慧型手錶、手環、同屏對戰塔防等。咱也了解了解相關的技術,做技術儲備。今天需要總結的是藍芽聊天的例子,例子**於android的官網。我們把關鍵的技術理一下。

關於藍芽開發的主題,可以參考android官網的這個鏈結。

1.bluetoothadapter

表示乙個本地裝置的藍芽介面卡。它可以讓你執行一些基本的藍芽任務,比如初始化掃瞄裝置、查詢已經配對的藍芽裝置列表、使用mac位址例項化乙個藍芽裝置、建立乙個藍芽伺服器socket來監聽一些連線、開始掃瞄周圍低功耗的裝置。

在jelly_bean_mr1及以下的版本中,使用getdefaultadapter方法來得到bluetoothadapter;在jelly_bean_mr2及以上的版本中通過getsystemservice來拿到其實例。到目前為此最新的版本是lollipop,在5.0及以後的版本中會有一些新的改變。

我們用它的開啟藍芽資料開關、掃瞄周圍藍芽裝置等等。在掃瞄的時候碰到乙個藍芽裝置讓誰能夠掃瞄到的問題。如圖:

在測試藍芽連線的時候,怎麼都發現不了周圍的藍芽裝置。後來發現原來藍芽開關不止是說開發就能讓周圍的裝置掃瞄到你,還要如上圖中設定成讓附近所有的藍芽裝置均可檢測到

2.bluetoothdevice

表示乙個遠端的藍芽裝置。我們可以用它來建立乙個與遠端裝置的連線來查詢裝置的資訊,如名稱、位址、類別、繫結狀態。這個類只是乙個小小的藍芽硬體位址的包裝器。我們從bluetoothadapter中獲取bluetoothdevice物件。

3.bluetoothserversocket

當我們拿到乙個bluetoothdevice物件,就等於拿到乙個遠端藍芽裝置了。接下來我們需要與它發生關係。我們要連線它。那既然要連線,那它必須處於監聽狀態。這個時候就來到了伺服器socket。bluetoothserversocket實際上是乙個用於監聽的藍芽socket。藍芽socket的介面類似於tcp的socket介面。在伺服器端,使用乙個bluetoothserversocket來建立乙個伺服器socket。當接受乙個連線的時候,它會返回乙個bluetoothsocket物件來管理這個連線。在客戶端,只需要使用簡單的bluetoothsocket來連線和管理與伺服器的socket。

如何使用這個類?我們使用bluetoothadapter.listenusingrfcommwithservicerecord()方法來建立乙個監聽。然後呼叫accept()方法來監聽到來的連線請求。accept方法會被阻塞,直到有乙個連線建立起來。這個時候會返回乙個bluetoothsocket物件來管理連線。一旦bluetoothsocket建立起來而且只需要一對一的連線時,我們最好關掉bluetoothserversocket物件,不再監聽別的連線。關閉bluetoothserversocket不會關閉它之前建立的bluetoothsocket物件。當然如果是要一對多的話那就在最後關閉應用的時候關閉bluetoothserversocket。

4.bluetoothsocket

表示乙個已經連線或者正在連線的藍芽socket。最通用的藍芽socket類似是rfcomm,也是android apis支援的型別。rfcomm是乙個基於藍芽的面向連線的流傳輸型別。它也以spp(serial port profile)著稱。

5.inputstream

當我們與一台藍芽裝置建立起連線之後,我們需要做的就是收發資料。我們用乙個執行緒來收資料,這樣確保對方發過來的資料能夠第一時候收到。

@override

public void run()

// read from the inputstream

bytes = minstream.read(buffer);

log.d(tag, "after read bytes is " + bytes);

// send the obtained bytes to the ui activity

mhandler.obtainmessage(constants.message_read, bytes, -1,

buffer).sendtotarget();

} catch (ioexception e)

} }

其中

read()方法會阻塞,直到有一段資料過來。

6.outputstream

當乙個連線建立完成之後,我們想要在什麼地方發什麼都可以了。如:

/**

* write to the connected outstream.

* * @param buffer

* the bytes to write

*/public void write(byte buffer) catch (ioexception e)

}

只要往流裡面寫入位元組資料就完成了傳送。

原始碼在**?大家裝了sdk的話,在\samples\android-19\legacy\bluetoothchat目錄下面,以前的版本在samples\android-17\bluetoothchat目錄下面。

Android 藍芽開發 《一》

關於android藍芽的開發 關於藍芽,官方文件上面提到可以用來 1.掃瞄其他的藍芽裝置 2.查詢當地的藍芽介面卡,對藍芽進行配對 3.建立rfcomn 序列 協議 通道 4.通過服務發現連線其他裝置 5.和其他裝置進行資料傳輸 6.管理多個連線 藍芽基礎 blutoothadapter 藍芽介面卡...

Android藍芽開發

藍芽開發,也就那麼幾個操作,開啟 搜尋 配對 連線 通訊。其他的東西都是建立在這麼幾個之上。下面就來說說這幾個基本操作。使用前,首先加入藍芽的兩個基本許可權。然後他們基本圍繞這麼幾個類來用。這些類是什麼,慢慢來說。bluetoothadapter bluetoothadapter bluetooth...

Android藍芽開發流程

首先,要操作藍芽,先要在androidmanifest.xml裡加入許可權 然後,看下api,android所有關於藍芽開發的類都在android.bluetooth包下,只有八個類 bluetoothadapter,bluetoothclass,bluetoothclass.device,blue...