資源描述:
《android藍(lán)牙開(kāi)發(fā)簡(jiǎn)介》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、對(duì)于一般的軟件開(kāi)發(fā)人員來(lái)說(shuō),藍(lán)牙是很少用到的,尤其是Android的藍(lán)牙開(kāi)發(fā),國(guó)內(nèi)的例子很少????Android對(duì)于藍(lán)牙開(kāi)發(fā)從2.0版本的sdk才開(kāi)始支持,而且模擬器不支持,測(cè)試至少需要兩部手機(jī),所以制約了很多技術(shù)人員的開(kāi)發(fā),剛巧這段時(shí)間公司有藍(lán)牙開(kāi)發(fā)的需求,我看了很多國(guó)內(nèi)、國(guó)外的資料,又研究了一下J2ME的藍(lán)牙開(kāi)發(fā)(為了找找思路),雖然我想要的功能還沒(méi)實(shí)現(xiàn)(我曾經(jīng)在很多論壇里問(wèn)了很多遍,苦于沒(méi)有高人解答..),我要實(shí)現(xiàn)的功能是連接一個(gè)硬件設(shè)備,凡是跟硬件沾上邊的,都讓軟件人員開(kāi)發(fā)頭疼..好了,
2、廢話不說(shuō)了,鑒于很多開(kāi)發(fā)人員現(xiàn)在也有藍(lán)牙開(kāi)發(fā)的需求,也為了大家少走些彎路,先將我積攢的一點(diǎn)點(diǎn)在Android藍(lán)牙開(kāi)發(fā)經(jīng)驗(yàn)與大家分享一下!首先,要操作藍(lán)牙,先要在AndroidManifest.xml里加入權(quán)限然后,看下api,Android所有關(guān)
3、于藍(lán)牙開(kāi)發(fā)的類都在android.bluetooth包下,如下圖,只有8個(gè)類??????????而我們需要用到了就只有幾個(gè)而已:??1.BluetoothAdapter顧名思義,藍(lán)牙適配器,直到我們建立bluetoothSocket連接之前,都要不斷操作它????BluetoothAdapter里的方法很多,常用的有以下幾個(gè):????cancelDiscovery()根據(jù)字面意思,是取消發(fā)現(xiàn),也就是說(shuō)當(dāng)我們正在搜索設(shè)備的時(shí)候調(diào)用這個(gè)方法將不再繼續(xù)搜索????disable()關(guān)閉藍(lán)牙????ena
4、ble()打開(kāi)藍(lán)牙,這個(gè)方法打開(kāi)藍(lán)牙不會(huì)彈出提示,更多的時(shí)候我們需要問(wèn)下用戶是否打開(kāi),一下這兩行代碼同樣是打開(kāi)藍(lán)牙,不過(guò)會(huì)提示用戶:Intemtenabler=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enabler,reCode);//同startActivity(enabler);????getAddress()獲取本地藍(lán)牙地址????getDefaultAdapter()獲取默認(rèn)Bluet
5、oothAdapter,實(shí)際上,也只有這一種方法獲取BluetoothAdapter????getName()獲取本地藍(lán)牙名稱????getRemoteDevice(Stringaddress)根據(jù)藍(lán)牙地址獲取遠(yuǎn)程藍(lán)牙設(shè)備????getState()獲取本地藍(lán)牙適配器當(dāng)前狀態(tài)(感覺(jué)可能調(diào)試的時(shí)候更需要)????isDiscovering()判斷當(dāng)前是否正在查找設(shè)備,是返回true????isEnabled()判斷藍(lán)牙是否打開(kāi),已打開(kāi)返回true,否則,返回false????listenUsingR
6、fcommWithServiceRecord(Stringname,UUIDuuid)根據(jù)名稱,UUID創(chuàng)建并返回BluetoothServerSocket,這是創(chuàng)建BluetoothSocket服務(wù)器端的第一步????startDiscovery()開(kāi)始搜索,這是搜索的第一步??2.BluetoothDevice看名字就知道,這個(gè)類描述了一個(gè)藍(lán)牙設(shè)備????createRfcommSocketToServiceRecord(UUIDuuid)根據(jù)UUID創(chuàng)建并返回一個(gè)BluetoothSocke
7、t這個(gè)方法也是我們獲取BluetoothDevice的目的——?jiǎng)?chuàng)建BluetoothSocket這個(gè)類其他的方法,如getAddress(),getName(),同BluetoothAdapter??3.BluetoothServerSocket如果去除了Bluetooth相信大家一定再熟悉不過(guò)了,既然是Socket,方法就應(yīng)該都差不多,這個(gè)類一種只有三個(gè)方法兩個(gè)重載的accept(),accept(inttimeout)兩者的區(qū)別在于后面的方法指定了過(guò)時(shí)時(shí)間,需要注意的是,執(zhí)行這兩個(gè)方法的時(shí)候,
8、直到接收到了客戶端的請(qǐng)求(或是過(guò)期之后),都會(huì)阻塞線程,應(yīng)該放在新線程里運(yùn)行!還有一點(diǎn)需要注意的是,這兩個(gè)方法都返回一個(gè)BluetoothSocket,最后的連接也是服務(wù)器端與客戶端的兩個(gè)BluetoothSocket的連接????close()這個(gè)就不用說(shuō)了吧,翻譯一下——關(guān)閉!??4.BluetoothSocket,跟BluetoothServerSocket相對(duì),是客戶端一共5個(gè)方法,不出意外,都會(huì)用到????close(),關(guān)閉????connect()連接????getI