Android提高之藍芽感測應用執行個體_Android

來源:互聯網
上載者:User

前面文章介紹了Android利用麥克風採集並顯示類比訊號的實現方法,這種採集手段適用於無IO控制、單純讀取訊號的情況。如果感應器本身需要包含控制電路(例如採集血氧訊號需要紅外和紅外線交替發射),那麼感應器本身就需要帶一片主控IC,片內採集並輸出數字訊號了。Android手機如何在不改硬體電路的前提下與這類數字感應器互動呢?可選的通訊方式就有USB和藍芽,兩種方式各有好處:USB方式可以給感應器供電,藍芽方式要自備電源;USB介面標準不一,藍芽普遍支援SPP協議。本文就選擇藍芽方式做介紹,介紹Android的藍芽API以及藍芽用戶端的用法。

自從Android 2.0起,官方終於發布了藍芽API(2.0以下系統的非官方的藍芽API可以參考這裡:http://code.google.com/p/android-bluetooth/)。Android手機一般以用戶端的角色主動串連SPP協議裝置(接上藍芽模組的數字感應器),串連流程是:

1.使用registerReceiver註冊BroadcastReceiver來擷取藍芽狀態、搜尋裝置等訊息;

2.使用BlueAdatper的搜尋;

3.在BroadcastReceiver的onReceive()裡取得搜尋所得的藍牙裝置資訊(如名稱,MAC,RSSI);

4.通過裝置的MAC地址來建立一個BluetoothDevice對象;

5.由BluetoothDevice衍生出BluetoothSocket,準備SOCKET來讀寫裝置;

6.通過BluetoothSocket的createRfcommSocketToServiceRecord()方法來選擇串連的協議/服務,這裡用的是SPP(UUID:00001101-0000-1000-8000-00805F9B34FB);

7.Connect之後(如果還沒配對則系統自動提示),使用BluetoothSocket的getInputStream()和getOutputStream()來讀寫藍牙裝置。

先來看看本文程式啟動並執行效果圖,所選的SPP協議裝置是一款單導聯心電採集表:

由於本文的代碼較多,讀者可以點此下載完整代碼。

本文程式包含兩個Activity,即testBlueTooth和WaveDiagram,testBlueTooth是搜尋建立藍芽串連。BluetoothAdapter、BluetoothDevice和BluetoothSocket的使用很簡單,除了前三者提供的功能外,還可以通過給系統發送訊息來控制、擷取藍芽資訊,例如:

註冊BroadcastReceiver:

IntentFilter intent = new IntentFilter();intent.addAction(BluetoothDevice.ACTION_FOUND);// 用BroadcastReceiver來取得搜尋結果intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);intent.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);intent.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);registerReceiver(searchDevices, intent);

在BroadcastReceiver的onReceive()枚舉所有訊息的內容:

String action = intent.getAction();Bundle b = intent.getExtras();Object[] lstName = b.keySet().toArray();// 顯示所有收到的訊息及其細節for (int i = 0; i < lstName.length; i++) { String keyName = lstName[i].toString(); Log.e(keyName, String.valueOf(b.get(keyName)));}

在DDMS裡面可以看到BluetoothDevice.ACTION_FOUND返回的訊息:

程式另外一個Activity,即WaveDiagram用於讀取藍芽資料並繪製波形圖,這裡要注意一下JAVA的byte的取值範圍是跟C/C++不一樣的,Android接收到的byte資料要做"& 0xFF"處理,轉為C/C++等值的資料。

最後,希望本文所述執行個體能夠對大家進行Android開發起到協助與借鑒作用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.