需要實現乙個過濾條件為devicename的功能。
1.藍芽掃瞄的時候有兩種方法。
1.1mbluetoothadapter.startlescan(mlescancallback);(這個方法已經過時)
bluetoothmanager bm = (bluetoothmanager) getsystemservice(context.bluetooth_service);
bluetoothadapter mbluetoothadapter = bm.getadapter();
mbluetoothadapter.startlescan(mlescancallback);
1.2
bluetoothmanager bm = (bluetoothmanager) getsystemservice(context.bluetooth_service);
bluetoothadapter mbluetoothadapter = bm.getadapter();
bluetoothlescanner bluetoothlescanner = mbluetoothadapter.getbluetoothlescanner();
bluetoothlescanner有兩個方法:
方法1:
@requirespermission(manifest.permission.bluetooth_admin)
public void startscan(final scancallback callback)
startscan(null, new scansettings.builder().build(), callback);
}
方法2:@requirespermission(manifest.permission.bluetooth_admin)
public void startscan(listfilters, scansettings settings,
final scancallback callback)
方法2的掃瞄方法
private void startscan(listfilters, scansettings settings,
final scancallback callback, list> resultstorages)
第乙個引數(scanfilter):篩選條件,可以通過設定過濾器的mdevicename、mdeviceaddress、mserviceuuid等作為過濾條件進行過濾。
第二個引數(scansettings):設定,可以設定掃瞄的mscanmode 、mcallbacktype 、mscanresulttype 等。
具體使用方法如下:
listblescanfilters = new arraylist<>();
blescanfilters.add(new scanfilter.builder().setdevicename("my_device_name").build());
scansettings blescansettings = mblescansettingsbuilder.build();
mbluetoothlescanner.startscan(blescanfilters, blescansettings, mblescancallback);
當時以為這個方法能夠作為過濾條件(只能掃瞄到似這種devicename的裝置)。嘗試後發現scanfilter匹配原碼如下:
public boolean matches(scanresult scanresult)
// local name match.
if (mdevicename != null && !mdevicename.equals(scanrecord.getdevicename()))
// 此處原碼省略
}
設定的devicename,但是最後mdevicename.equals(scanrecord.getdevicename()),匹配的是相等,這種嘗試失敗了。
在這裡想請教大家有什麼想法或者建議的可以提出來,謝謝。
android 藍芽重複掃瞄
我想在service內讓藍芽可以一直執行掃瞄,之前在activity內可以重複掃瞄,但移植到服務後就不能了請問要怎麼解決?public class search beacon extends service implements locationlistener override public vo...
經典藍芽與低功耗藍芽掃瞄
初始化ble設配器 bluetoothmanager manager bluetoothmanager getsystemservice context.bluetooth service bluetoothadapter mbluetoothadapter manager.getadapter 判...
Android藍芽掃瞄和連線
最近在做藍芽簽到功能時,了解了藍芽的一部分知識,雖然不夠深入,但是感覺良好,他的整體思路如下 在指定時間內,開啟藍芽,掃瞄周邊藍芽訊號,如果有指定的藍芽,則由使用者確認連線藍芽,最終簽到成功.首先,我們先寫乙個工具類,來判斷當前時間是否在指定時間之內 判斷時間是否在時間段內 param date 當...