亚洲高清在线观看_精品超碰_天天插天天干_欧美精品区_黄毛片视频_精品一区视频

Android應用之藍牙傳感應用

來源:網絡

點擊:2432

A+ A-

所屬頻道:新聞中心

關鍵詞: Android,藍牙傳感

        如果傳感器本身需要包含控制電路(例如采集血氧信號需要紅外和紅外線交替發射),那么傳感器本身就需要帶一片主控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:

    view plaincopy to clipboardprint?
    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); 
      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()枚舉所有消息的內容:

    view plaincopy to clipboardprint?
    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)));  
                } 
    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++等值的數據。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 日韩专区在线播放 | 免费看欧美日韩一区二区三区 | 欧美精品亚洲网站 | 国产在线精选免费视频8x | 亚洲欧美激情另类 | 亚洲欧美日韩在线一区 | 精品欧美一区二区三区在线 | 天堂精品高清1区2区3区 | 国产精品一区二区在线观看 | 91久久偷偷看嫩草影院无费 | 蜜臀一区 | 欧美综合一区 | 日韩国产在线 | 国产91成人精品亚洲精品 | 亚洲国产成人久久综合一区 | 久久久一区二区三区不卡 | 国产精品视频第一页 | 真实的国产乱xxxx在线 | 亚洲国产日韩欧美一区二区三区 | 亚洲视频一区二区三区 | 欧美一区二区三区不卡免费 | 91欧美激情一区二区三区成人 | 日本国产最新一区二区三区 | 亚洲国产欧美自拍 | 久久免费国产精品一区二区 | 另类欧美日韩 | 欧美日韩福利 | 欧美日韩亚洲一区二区三区在线观看 | 国产丰满眼镜女在线观看 | 亚洲欧美中文日韩在线 | 亚洲视频二 | 精品视频一区二区三区四区 | 亚洲一区二区三区免费 | 国产精品视频3p | 亚洲精品午夜国产va久久成人 | 伊人久久精品久久亚洲一区 | 青青国产成人久久91网 | 成人国内精品久久久久影院 | 欧美精品国产日韩综合在线 | 国产91在线 | 中文 | 欧美亚洲日本国产 |