Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android 9上的过滤扫描无法使用UUID过滤器找到信标_Android_Bluetooth Lowenergy_Ibeacon_Altbeacon - Fatal编程技术网

android 9上的过滤扫描无法使用UUID过滤器找到信标

android 9上的过滤扫描无法使用UUID过滤器找到信标,android,bluetooth-lowenergy,ibeacon,altbeacon,Android,Bluetooth Lowenergy,Ibeacon,Altbeacon,我目前正在尝试扫描BLE设备,我正在使用Galaxy S9+和android 9.0。 似乎未过滤的扫描不适用于galaxy s9+,所以我添加了这样的过滤器 String serviceUuidString = "51525354-5556-5758-5950-abbccddeeff0"; //uuid i wanna scan String serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF"; ParcelUuid p

我目前正在尝试扫描BLE设备,我正在使用Galaxy S9+和android 9.0。 似乎未过滤的扫描不适用于galaxy s9+,所以我添加了这样的过滤器

String serviceUuidString = "51525354-5556-5758-5950-abbccddeeff0"; //uuid i wanna scan
String serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
ParcelUuid parcelUuid = ParcelUuid.fromString(serviceUuidString); 
ParcelUuid parcelUuidMask = ParcelUuid.fromString(serviceUuidMaskString);

ScanFilter filter1 = new ScanFilter.Builder().setServiceUuid(parcelUuid, parcelUuidMask).build();
filters.add(filter1);
这不起作用,但当我添加这个

ScanFilter filter = new ScanFilter.Builder().setDeviceAddress("D8:09:1A:58:41:39").build();
filters.add(filter);
手机锁定后,它开始检测信标。不过,我不认为添加每一个mac都是一个好方法。为uuid添加过滤器时是否有错误

这就是我构建设置的方式

settings = scanSettingsBuilder.build();

仔细检查以确保过滤器中的服务UUID是正确的。当检测到服务广告数据包(不带过滤器)时,从操作系统打印LogCat行并将其张贴在此处可能会有所帮助

值得一提的是,Android Beacon库中存在非常类似的代码,可以使用以下代码在后台扫描Eddystone服务UUID,我已经验证了它在Galaxy S9上的工作情况(尽管Android 9.0还没有)。以下代码与现有代码的主要区别在于,它将16位UUID格式化为128位UUID。但我认为这不太可能有什么不同

            ScanFilter.Builder builder = new ScanFilter.Builder();
            String serviceUuidString = String.format("0000%04X-0000-1000-8000-00805f9b34fb", sfd.serviceUuid);
            String serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
            ParcelUuid parcelUuid = ParcelUuid.fromString(serviceUuidString);
            ParcelUuid parcelUuidMask = ParcelUuid.fromString(serviceUuidMaskString);
            builder.setServiceUuid(parcelUuid, parcelUuidMask);
            ScanFilter scanFilter = builder.build();
            scanFilters.add(scanFilter);

我试过uuid过滤器,但不起作用。但它与带有0x004c的制造数据过滤器一起工作!