Android藍芽API之BluetoothAdapter類

來源:互聯網
上載者:User
使用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 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);
  接下來系統會提示使用者是否允許,對話方塊如下:

本文轉自www.35java.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.