Android 藍(lán)牙2.0的使用方法詳解
本文為大家分享了Android操作藍(lán)牙2.0的使用方法,供大家參考,具體內(nèi)容如下
1.Android操作藍(lán)牙2.0的使用流程
(1)找到設(shè)備uuid
(2)獲取藍(lán)牙適配器,使得藍(lán)牙處于可發(fā)現(xiàn)模式,獲取下位機(jī)的socket,并且與上位機(jī)建立建立連接,獲取獲取輸入流和輸出流,兩個(gè)流都不為空時(shí),表示連接成功。否則是連接失敗。
(3).與下位機(jī)的socket開始通信。
(4).通信結(jié)束后,斷開連接(關(guān)閉流,關(guān)閉socket)
2接下來(lái)接直接上代碼:
2.1找到設(shè)備uuid(一般廠商都會(huì)給開發(fā)者提供)
2.2與藍(lán)牙設(shè)備建立連接
BluetoothAdapter myBluetoothAdapter = null;//藍(lán)牙適配器 BluetoothServerSocket mBThServer = null;//上位機(jī)<span style="font-family: Arial, Helvetica, sans-serif;">ServerSocket</span> BluetoothSocket mBTHSocket = null;//下位機(jī)的socket InputStream mmInStream = null;//輸入流 OutputStream mmOutStream = null;//輸出流 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//獲取適配器 Set<BluetoothDevice> pairedDevices = myBluetoothAdapter .getBondedDevices();//獲取適配器下的所有藍(lán)牙設(shè)備 if (pairedDevices.size() > 0) { for (Iterator<BluetoothDevice> iterator = pairedDevices .iterator(); iterator.hasNext();) { BluetoothDevice device = (BluetoothDevice) iterator .next(); if (DEVICE_NAME1.equals(device.getName()) || DEVICE_NAME2.equals(device.getName()) || DEVICE_NAME3.equals(device.getName()) || DEVICE_NAME4.equals(device.getName())) { try { myBluetoothAdapter.enable();//將適配器設(shè)置可用 Intent discoverableIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);// 使得藍(lán)牙處于可發(fā)現(xiàn)模式,持續(xù)時(shí)間150s discoverableIntent .putExtra( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 150); mBTHSocket = device .createRfcommSocketToServiceRecord(MY_UUID);//獲取下位機(jī)的socket int sdk = Integer.parseInt(Build.VERSION.SDK); if (sdk >= 10) { mBTHSocket = device .createInsecureRfcommSocketToServiceRecord(MY_UUID); } else { mBTHSocket = device .createRfcommSocketToServiceRecord(MY_UUID); } mBThServer = myBluetoothAdapter .listenUsingRfcommWithServiceRecord( "myServerSocket", MY_UUID);監(jiān)聽可用的設(shè)備 mBTHSocket.connect(); // 建立連接 mmInStream = mBTHSocket.getInputStream();// 獲取輸入流 mmOutStream = mBTHSocket.getOutputStream();// 獲取輸出流 } catch (IOException e) { ett.setText("設(shè)備連接異常!"); } if ((mmInStream != null) && (mmInStream != null))// 二者不為空時(shí),表示連接成功,否則連接失敗 { ett.setText("設(shè)備連接成功!"); } else { ett.setText("設(shè)備連接失?。?); } break; } } }
2.3開始發(fā)送數(shù)據(jù),并且讀取數(shù)據(jù)(字節(jié)數(shù)組)
if ((mmInStream == null) || (mmInStream == null)) { Readflage = -2;// 連接異常 return; } mmOutStream.write(cmd_find);//寫入查找指令 Thread.sleep(200); int datalen = mmInStream.read(recData);//讀取數(shù)據(jù)
注意:cmd_find和recData都是字節(jié)數(shù)組byte[].
以上代碼就一次發(fā)送指令和讀取數(shù)據(jù)的步驟。很簡(jiǎn)單吧
2.4斷開連接
if ((mmInStream == null) || (mmInStream == null)) { return; } //關(guān)閉流和socket mmOutStream.close(); mmInStream.close(); mBTHSocket.close(); mBThServer.close();
最后總結(jié)一下,基本就3大步,第一建立連接,第二發(fā)送數(shù)據(jù)讀取數(shù)據(jù),第三步斷開連接。今天就這些了,以后會(huì)寫關(guān)于藍(lán)牙4.0 ble 在Android中的使用,這兩個(gè)還是有很多不同的,大家請(qǐng)期待。
- native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版
- Dcloud的native.js直接撥打電話Android實(shí)例代碼
- DCloud的native.js調(diào)用系統(tǒng)分享實(shí)例Android版代碼
- Android藍(lán)牙開發(fā)深入解析
- 詳解Android——藍(lán)牙技術(shù) 帶你實(shí)現(xiàn)終端間數(shù)據(jù)傳輸
- Android Bluetooth藍(lán)牙技術(shù)使用流程詳解
- Android單片機(jī)與藍(lán)牙模塊通信實(shí)例代碼
- 分享Android 藍(lán)牙4.0(ble)開發(fā)的解決方案
- android實(shí)現(xiàn)藍(lán)牙文件發(fā)送的實(shí)例代碼,支持多種機(jī)型
- Android手機(jī)通過(guò)藍(lán)牙連接佳博打印機(jī)的實(shí)例代碼
- Android系統(tǒng)中的藍(lán)牙連接程序編寫實(shí)例教程
- Android藍(lán)牙通信聊天實(shí)現(xiàn)發(fā)送和接受功能
- Android適配安卓6.0藍(lán)牙通訊實(shí)現(xiàn)過(guò)程
- Android編程之藍(lán)牙測(cè)試實(shí)例
- Android 獲取藍(lán)牙Mac地址的正確方法
- Android實(shí)現(xiàn)藍(lán)牙客戶端與服務(wù)器端通信示例
- Android 藍(lán)牙連接 ESC/POS 熱敏打印機(jī)打印實(shí)例(藍(lán)牙連接篇)
- Android 取消藍(lán)牙配對(duì)框?qū)崿F(xiàn)自動(dòng)配對(duì)功能
- Android提高之藍(lán)牙傳感應(yīng)用實(shí)例
- Android開發(fā)實(shí)現(xiàn)實(shí)時(shí)檢測(cè)藍(lán)牙連接狀態(tài)的方法【附源碼下載】
- Native.js獲取監(jiān)聽開關(guān)等操作Android藍(lán)牙設(shè)備實(shí)例代碼
相關(guān)文章
Android實(shí)現(xiàn)單頁(yè)面浮層可拖動(dòng)view的示例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)單頁(yè)面浮層可拖動(dòng)view的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10android 6.0下webview的定位權(quán)限設(shè)置方法
今天小編就為大家分享一篇android 6.0下webview的定位權(quán)限設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Android自定義view 你所需要知道的基本函數(shù)總結(jié)
這篇文章主要介紹了Android自定義view 你所需要知道的基本函數(shù)的相關(guān)資料,需要的朋友可以參考下2017-02-02Android Studio報(bào)錯(cuò)Manifest merger failed with multiple errors
這篇文章主要介紹了Android Studio報(bào)錯(cuò)Manifest merger failed with multiple errors2017-10-10Android實(shí)現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能
這篇文章主要介紹了Android實(shí)現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能,文中還給大家?guī)?lái)四種方法,大家可以根據(jù)自己需要參考下2018-07-07Android中WebView加載網(wǎng)頁(yè)設(shè)置進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android中WebView加載網(wǎng)頁(yè)設(shè)置進(jìn)度條的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04windows10安裝adb/fastboot驅(qū)動(dòng)超詳細(xì)圖文教程
這篇文章主要介紹了windows10安裝adb/fastboot超詳細(xì)圖文教程,安裝方法也很簡(jiǎn)單,只要adb安裝成功,fastboot就安裝好了,文中給大家介紹了問(wèn)題分析及解決方法,需要的朋友可以參考下2023-01-01Grow heap (frag case) 堆內(nèi)存過(guò)大的深入解析
本篇文章是對(duì)Grow heap (frag case) 堆內(nèi)存過(guò)大的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06