Android 藍牙2.0的使用方法詳解
本文為大家分享了Android操作藍牙2.0的使用方法,供大家參考,具體內(nèi)容如下
1.Android操作藍牙2.0的使用流程
(1)找到設備uuid
(2)獲取藍牙適配器,使得藍牙處于可發(fā)現(xiàn)模式,獲取下位機的socket,并且與上位機建立建立連接,獲取獲取輸入流和輸出流,兩個流都不為空時,表示連接成功。否則是連接失敗。
(3).與下位機的socket開始通信。
(4).通信結束后,斷開連接(關閉流,關閉socket)
2接下來接直接上代碼:
2.1找到設備uuid(一般廠商都會給開發(fā)者提供)
2.2與藍牙設備建立連接
BluetoothAdapter myBluetoothAdapter = null;//藍牙適配器 BluetoothServerSocket mBThServer = null;//上位機<span style="font-family: Arial, Helvetica, sans-serif;">ServerSocket</span> BluetoothSocket mBTHSocket = null;//下位機的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();//獲取適配器下的所有藍牙設備
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();//將適配器設置可用
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);// 使得藍牙處于可發(fā)現(xiàn)模式,持續(xù)時間150s
discoverableIntent
.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
150);
mBTHSocket = device
.createRfcommSocketToServiceRecord(MY_UUID);//獲取下位機的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)聽可用的設備
mBTHSocket.connect(); // 建立連接
mmInStream = mBTHSocket.getInputStream();// 獲取輸入流
mmOutStream = mBTHSocket.getOutputStream();// 獲取輸出流
} catch (IOException e) {
ett.setText("設備連接異常!");
}
if ((mmInStream != null) && (mmInStream != null))// 二者不為空時,表示連接成功,否則連接失敗
{
ett.setText("設備連接成功!");
} else {
ett.setText("設備連接失?。?);
}
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ù)的步驟。很簡單吧
2.4斷開連接
if ((mmInStream == null) || (mmInStream == null)) {
return;
}
//關閉流和socket
mmOutStream.close();
mmInStream.close();
mBTHSocket.close();
mBThServer.close();
最后總結一下,基本就3大步,第一建立連接,第二發(fā)送數(shù)據(jù)讀取數(shù)據(jù),第三步斷開連接。今天就這些了,以后會寫關于藍牙4.0 ble 在Android中的使用,這兩個還是有很多不同的,大家請期待。
- native.js獲取手機硬件基本信息實例代碼android版
- Dcloud的native.js直接撥打電話Android實例代碼
- DCloud的native.js調(diào)用系統(tǒng)分享實例Android版代碼
- Android藍牙開發(fā)深入解析
- 詳解Android——藍牙技術 帶你實現(xiàn)終端間數(shù)據(jù)傳輸
- Android Bluetooth藍牙技術使用流程詳解
- Android單片機與藍牙模塊通信實例代碼
- 分享Android 藍牙4.0(ble)開發(fā)的解決方案
- android實現(xiàn)藍牙文件發(fā)送的實例代碼,支持多種機型
- Android手機通過藍牙連接佳博打印機的實例代碼
- Android系統(tǒng)中的藍牙連接程序編寫實例教程
- Android藍牙通信聊天實現(xiàn)發(fā)送和接受功能
- Android適配安卓6.0藍牙通訊實現(xiàn)過程
- Android編程之藍牙測試實例
- Android 獲取藍牙Mac地址的正確方法
- Android實現(xiàn)藍牙客戶端與服務器端通信示例
- Android 藍牙連接 ESC/POS 熱敏打印機打印實例(藍牙連接篇)
- Android 取消藍牙配對框實現(xiàn)自動配對功能
- Android提高之藍牙傳感應用實例
- Android開發(fā)實現(xiàn)實時檢測藍牙連接狀態(tài)的方法【附源碼下載】
- Native.js獲取監(jiān)聽開關等操作Android藍牙設備實例代碼
相關文章
PopupWindow?RecyclerView實現(xiàn)下拉選擇Spinner示例解析
這篇文章主要介紹了PopupWindow?RecyclerView實現(xiàn)下拉選擇Spinner示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
詳解Android數(shù)據(jù)存儲—使用SQLite數(shù)據(jù)庫
本篇文章主要介紹了詳解Android數(shù)據(jù)存儲—使用SQLite數(shù)據(jù)庫,具有一定的參考價值,有興趣的可以了解一下。2017-03-03
Android SwipereFreshLayout下拉刷新
這篇文章主要介紹了Android SwipereFreshLayout下拉刷新的相關資料,需要的朋友可以參考下2017-06-06

