<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                本文來自[http://blog.csdn.net/hellogv/](http://blog.csdn.net/hellogv/) ,引用必須注明出處! ?????? 上次介紹了[Android利用麥克風采集并顯示模擬信號](http://blog.csdn.net/hellogv/archive/2010/11/24/6032046.aspx),這種采集手段適用于無IO控制、單純讀取信號的情況。如果傳感器本身需要包含控制電路(例如采集血氧信號需要紅外和紅外線交替發射),那么傳感器本身就需要帶一片主控IC,片內采集并輸出數字信號了。Android手機如何在不改硬件電路的前提下與這類數字傳感器交互呢?可選的通信方式就有USB和藍牙,兩種方式各有好處:USB方式可以給傳感器供電,藍牙方式要自備電源;USB接口標準不一,藍牙普遍支持SPP協議。本文選擇藍牙方式做介紹,介紹Android的藍牙API以及藍牙客戶端的用法。 ????? 在Android 2.0,官方終于發布了藍牙API(2.0以下系統的非官方的藍牙API可以參考這里:[http://code.google.com/p/android-bluetooth/](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協議設備是一款單導聯心電采集表: ![](https://box.kancloud.cn/2016-06-24_576cb0a0c6cc8.gif) 本文的代碼較多,可以到這里下載:[http://www.pudn.com/downloads305/sourcecode/comm/android/detail1359043.html](http://www.pudn.com/downloads305/sourcecode/comm/android/detail1359043.html) 本文程序包含兩個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返回的消息: ![](https://box.kancloud.cn/2016-06-24_576cb0a0f3984.gif) ? 程序另外一個Activity~~~WaveDiagram用于讀取藍牙數據并繪制波形圖,這里要注意一下JAVA的byte的取值范圍是跟C/C++不一樣的,Android接收到的byte數據要做"& 0xFF"處理,轉為C/C++等值的數據。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看