Android Studio 下有一个名为BluetoothLeGatt的公共项目,用于检测低功耗蓝牙设备并显示它们的服务和特性。Arduino IDE下还有一个ESP32项目,也是public的,位于Примеры/ESP BLE Arduino/BLE_server_multiconnect——这里创建了一个服务器,在里面创建了一个服务,一个特性,它启动了advertising。
我编译apk了该文件并将其安装在 Android 版本 4.4.1 的手机中 - 一切正常 - 应用程序显示找到的设备“ESP32”,您可以看到它的服务和特征。
具有较早版本 Android(8.1 和 9.0)的手机在扫描时看不到设备。同时,如果你进入手机和蓝牙设备的系统设置,ESP32 设备将在那里可见。
我了解 Android Studio 上的项目有问题。所有必要的权限都在 AndroidManifest.xml 文件中设置。
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
如何解决问题,以便在较年轻的 Android 机型上检测到该设备?
需要在手机上首次启动应用程序后,到
Системные настройки телефона/Приложения/Все приложения/Наше приложение/Разрешения приложений/此处打开该位置。