藍芽掃瞄過濾

2021-08-14 16:43:10 字數 2122 閱讀 3578

需要實現乙個過濾條件為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 當...