android - Unity - Android - BLE 蓝牙权限
问题描述
我想知道是否有人知道是否可以将蓝牙低功耗模块连接到 Android 设备而无需请求位置权限或调出配套设备配对屏幕。
我创建了一个尝试连接到 BLE 设备的统一项目,我已经在 IOS 上对此进行了测试,并且连接工作顺利且没有问题,但是当加载到 Android 设备上时,我遇到了 Companion Device Pairing 屏幕,其中显示不同 wifi 和蓝牙设备的完整列表。选择后,将出现另一个请求访问用户位置权限的屏幕。整个过程相当笨拙,尽管我最终能够连接,但应用程序经常退出或反复调出配套设备配对屏幕,并阻止应用程序完全加载或连接到 BLE 设备。
我相信这些是由于包含对这两个函数的引用的 android 清单文件(我在下面包含的)而引起的。但是,当我删除这些时,应用程序无法打开,通常在启动时崩溃或退出。
或者,如果需要这些,可能有人可以就如何在配套设备搜索中实施过滤器提供一些建议(这样我只能列出相关的 BLE 设备,而不是所有 WIFI 和蓝牙设备的长列表)。我在官方 android 开发者网站上找到了对此的参考,但是我在弄清楚如何在我的统一项目中正确实现这一点时遇到了一些麻烦。
配套设备过滤器链接:
https://developer.android.com/guide/topics/connectivity/companion-device-pairing#filter
清单文件:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND"/>
<uses-permission android:name="android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<uses-feature android:name="android.software.companion_device_setup"/>
如果有人能够提供任何建议,将不胜感激。
谢谢!
解决方案
要过滤配套设备配对对话框,请查看来自 google的本指南。
您可以选择设置setSingleDevice()
并true
仅显示一个可供选择的设备,或使用以下类型之一的DeviceFilter过滤列表:
这可能看起来像这样:
BluetoothDeviceFilter deviceFilter = new BluetoothDeviceFilter.Builder()
// Match only Bluetooth devices whose name matches the pattern.
.setNamePattern(Pattern.compile("My device"))
// Match only Bluetooth devices whose service UUID matches this pattern.
.addServiceUuid(new ParcelUuid(new UUID(0x123abcL, -1L)), null)
.build();
推荐阅读
- pandas - 如何在没有“应用”的情况下将函数应用到列上?
- azure-data-factory-2 - 数据工厂数据流源中的动态文件名
- vega-lite - Vega-Lite:“X 中的 1”自定义图例标签
- r - 拆分多个字符串列并充分重命名新列-R
- sql-server - 从应用服务器连接到数据库服务器:(0x80131904):用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败
- html - 衰退消失在视频标题后面
- frida - 我想让 $handle 使用 frida,但它返回 undefined
- php - 一个模型的关系
- formik - 条件验证是的 - 任何一个字段都是必需的(错误:未捕获的错误:循环依赖,节点为:“b”。)
- sql - 使用一个过滤器值搜索并输出多个字段