次のコードは、Android 5.1.1(LMY48Mのビルド)を実行しているNexus 9ではうまく動作しますが、Android 6.0(Build MPA44l)を実行するNexus 9では動作しません。Bluetooth LE ScanFiltersがAndroid Mで動作しない
List<ScanFilter> filters = new ArrayList<ScanFilter>();
ScanSettings settings = (new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)).build();
ScanFilter.Builder builder = new ScanFilter.Builder();
builder.setManufacturerData((int) 0x0118, new byte[]{(byte) 0xbe, (byte) 0xac}, new byte[]{(byte) 0xff, (byte)0xff});
ScanFilter scanFilter = builder.build();
filters.add(scanFilter);
mBluetoothLeScanner.startScan(filters, settings, new ScanCallback() {
...
});
Android 5.xでは、上記のコードは、スキャンフィルタに一致する製造元の広告が表示されたときにコールバックを生成します。 (下記のLogcatの出力例を参照してください).Nexus 9 with MPA44lでは、コールバックは受信されません。あなたはスキャンフィルタをコメントアウトした場合、コールバックは9
09-22 00:07:28.050 1748-1796/org.altbeacon.beaconreference D/BluetoothLeScanner﹕ onScanResult() - ScanResult{mDevice=00:07:80:03:89:8C, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=null, mManufacturerSpecificData={280=[-66, -84, 47, 35, 68, 84, -49, 109, 74, 15, -83, -14, -12, -111, 27, -87, -1, -90, 0, 1, 0, 1, -66, 0]}, mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=null], mRssi=-64, mTimestampNanos=61272522487278}
誰が見ていScanFiltersは、Android M上で動作ネクサス上で正常に受信されていますか?
NETWORK_PROVIDERとGPS_PROVIDERの両方が必要ですか?または単にNETWORK_PROVIDER。詳細はこちらhttps://developer.android.com/guide/topics/connectivity/bluetooth-le.html –