日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 蓝牙 setscanmode,蓝牙LE扫描在后台无法在Android M上运行

發布時間:2025/3/20 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 蓝牙 setscanmode,蓝牙LE扫描在后台无法在Android M上运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下代碼適用于運行Android 5.1.1(Build LMY48M)的Nexus 9,但不適用于運行Android 6.0的Nexus 9(Build MPA44l)

List filters = new ArrayList();

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輸出.)在帶有MPA44l的Nexus 9上,沒有收到回調.如果您注釋掉掃描過濾器,則會在Nexus 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上工作?

解決方法:

我的應用程序連接到藍牙也有類似的問題.不是LE ScanFilter,但它就像OP一樣是權限問題.

根本原因是從SDK 23開始,您需要使用Activity的requestPermissions()方法在運行時提示用戶獲取權限.

這對我有用:

>將以下兩行之一添加到根節點內的AndroidManifest.xml中:

>在您的Activity中,在嘗試連接到藍牙之前,請調用Activity的requestPermissions()方法,該方法打開系統對話框以提示用戶獲取權限.權限對話框在另一個線程中打開,因此在嘗試連接到藍牙之前一定要等待結果.

>覆蓋Activity的onRequestPermissionsResult()來處理結果.如果用戶拒絕授予權限,該方法實際上只需要做一些事情,告訴用戶應用程序無法進行藍牙活動.

This blog post有一些示例代碼,它使用AlertDialogs告訴用戶發生了什么.這是一個很好的起點,但有一些缺點:

>它不處理等待requestPermissions()線程完成

>包含對requestPermissions()的調用的AlertDialog對我來說似乎是無關緊要的.對requestPermissions()的裸調用就足夠了.

總結

以上是生活随笔為你收集整理的android 蓝牙 setscanmode,蓝牙LE扫描在后台无法在Android M上运行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。