? 一、查找發(fā)現(xiàn)findding/discovering devices
??? 對(duì)於Android查找發(fā)現(xiàn)藍(lán)牙設(shè)備使用BluetoothAdapter類的startDiscovery()方法就可以執(zhí)行一個(gè)異步方式獲取周邊的藍(lán)牙設(shè)備,因?yàn)槭且粋€(gè)異步的方法所以我們不需要考慮線程被阻塞問(wèn)題,整個(gè)過(guò)程大約需要12秒時(shí)間,這時(shí)我們緊接著註冊(cè)一個(gè)BroadcastReceiver 對(duì)象來(lái)接收查找到的藍(lán)牙設(shè)備信息,我們過(guò)濾ACTION_FOUND這個(gè)Intent動(dòng)作來(lái)獲取每個(gè)遠(yuǎn)程設(shè)備的詳細(xì)信息,透過(guò)附加參數(shù)在Intent欄位EXTRA_DEVICE 和EXTRA_CLASS, 中包含了每個(gè)BluetoothDevice 物件和物件的該裝置類型BluetoothClass ,範(fàn)例程式碼
private final BroadcastReceiver cwjReceiver = new BroadcastReceiver() {
??????? String action = intent.getAction();
?????????? if (Blue?othDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) ;
???????????? myArrayAdapter.add(device.getName() + " android123 " + device.getAddress()); //取得裝置名稱及mac?>;
// 註冊(cè)這個(gè)BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(cwjReceiver, filter);
?最後要注意123,最後需要注意的是提醒大家注意的是最後一個(gè)提醒大家在Service或Activity中重寫(xiě)onDestory()方法,使用unregisterReceiver方法反註冊(cè)這個(gè)BroadcastReceiver物件保證資源被正確回收。
?一些其他的狀態(tài)變化有 ACTION_SCAN_MODE_CHANGED 額外參數(shù) EXTRA_SCAN_MODE 和 EXTRA_PREVIOUS_SCAN_MODE以及SCAN_MODE_CONNECTABLE_DISCOVERABLE、 SCAN_MODE_CONNECBLE和SCAN_MODE_NONE