編輯:Android開發實例
前面文章介紹了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開發起到幫助與借鑒作用。
正弦波大家在數學中都學過,但是在Android開發中如何繪制正弦波呢?本文將給出一個開發實
本文實例講述了Android編程使用Fragment界面向下跳轉並一級級返回的實現方法。分享給大家供大家參考,具體如下: 1.首先貼上項目結構圖: 2.先添加一
有時候,不希望圖片突然出現在屏幕上,而要應用某種形式的動畫顯示圖片時,從一個圖像轉換到另一個。這是在Android中支持的ImageSwitcher圖像切換器允許通過它們
今天看到一個ios寫的圖靈機器人,直接去官網(http://www.tuling123.com/openapi/)看了下API接入,太簡單了,就一個get請求~於