Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android藍牙API之BluetoothAdapter類(1)

Android藍牙API之BluetoothAdapter類(1)

編輯:Android開發實例

   使用BluetoothAdapter類,你能夠在Android設備上查找周邊的藍牙設備然後配對(綁定),藍牙通訊是基於唯一地址MAC來相互傳輸的,考慮到安全問題Bluetooth通訊時需要先配對。然後開始相互連接,連接後設備將會共享同一個RFCOMM通道以便相互傳輸數據,目前這些實現在Android 2.0或更高版本SDK上實現。

  一、查找發現 findding/discovering devices

  對於Android查找發現藍牙設備使用BluetoothAdapter類的startDiscovery()方法就可以執行一個異步方式獲取周邊的藍牙設備,因為是一個異步的方法所以我們不需要考慮線程被阻塞問題,整個過程大約需要12秒時間,這時我們緊接著注冊一個BroadcastReceiver 對象來接收查找到的藍牙設備信息,我們過濾ACTION_FOUND這個 Intent動作來獲取每個遠程設備的詳細信息,通過附加參數在Intent字段EXTRA_DEVICE 和 EXTRA_CLASS, 中包含了每個BluetoothDevice 對象和對象的該設備類型 BluetoothClass ,示例代碼

private final BroadcastReceiver cwjReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction(); 
           if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
             BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
             myArrayAdapter.add(device.getName() + " android123 " + device.getAddress()); //獲取設備名稱和mac地址
        }
    }
};
// 注冊這個 BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(cwjReceiver, filter);

 最後android123提醒大家需要注意的是,記住在Service或Activity中重寫onDestory()方法,使用unregisterReceiver方法反注冊這個BroadcastReceiver對象保證資源被正確回收。

 一些其他的狀態變化有 ACTION_SCAN_MODE_CHANGED 額外參數 EXTRA_SCAN_MODE 和 EXTRA_PREVIOUS_SCAN_MODE以及SCAN_MODE_CONNECTABLE_DISCOVERABLE、SCAN_MODE_CONNECTABLE和SCAN_MODE_NONE,

   二、配對綁定 bnded/paired device

  在Android中配對一個藍牙設備可以調用BluetoothAdapter類的getBondedDevices()方法可以獲取已經配對的設備,該方法將會返回一個BluetoothDevice數組來區分每個已經配對的設備,示例代碼如下:

Set<BluetoothDevice> pairedDevices = cwjBluetoothAdapter.getBondedDevices();

if (pairedDevices.size() > 0)  //如果獲取的結果大於0,則開始逐個解析
 {
    
    for (BluetoothDevice device : pairedDevices) {
 
        myArrayAdapter.add(device.getName() + " android123 " + device.getAddress());  //獲取每個設備的名稱和MAC地址添加到數組適配器myArrayAdapter中。
    }
}

 很多網友不明白如何讓自己的手機被其他藍牙設備發現如何設置,下面我們就一起來說說

  三、允許發現 enabling discoverability

  如果需要用戶確認操作,不需要獲取底層藍牙服務實例,可以通過一個Intent來傳遞ACTION_REQUEST_DISCOVERABLE參數,這裡通過startActivityForResult來強制獲取一個結果,重寫startActivityForResult()方法獲取執行結果,返回結果有RESULT_OK和RESULT_CANCELLED分別代表開啟和取消(失敗),當然最簡單的方法是直接執行,示例代碼如下

Intent cwjIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
cwjIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(cwjIntent);

  接下來系統會提示用戶是否允許,對話框如下

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved