【发布时间】:2022-11-17 06:47:46
【问题描述】:
我正在尝试实现 CompanionDeviceService 以便与我们的 BLE 设备进行交互。根据文档
只要附近有相关设备,系统就会保持此服务绑定,确保应用程序保持活动状态
但这不是我所看到的
17:47:48.563 MyCompanionDeviceService: onDeviceAppeared FF:FF:6D:10:F1:16 17:47:48.565 MyCompanionDeviceService: onUnbind 17:47:48.568 MyCompanionDeviceService: onDestroy大约 1 分钟后,再次调用
onDeviceAppeared,结果相同。
FF:FF:6D:10:F1:16未绑定。createBond永远不会在BleDevice上调用。我还没有发现这是否相关。我在运行最新可用 Android 12 版本的 Pixel 4a 上运行
编辑:添加更多代码以供参考
显现
<uses-permission android:name="android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND" /> <uses-permission android:name="android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND" /> <uses-permission android:name="android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE" /> <service android:name="com.mycompany.MyCompanionDeviceService" android:exported="true" android:permission="android.permission.BIND_COMPANION_DEVICE_SERVICE"> <intent-filter> <action android:name="android.companion.CompanionDeviceService" /> </intent-filter> </service>startObservingDevicePresence 成功,否则我的服务根本不会被调用
与服务无关
@RequiresApi(Build.VERSION_CODES.S) internal class MyCompanionDeviceService : CompanionDeviceService() { override fun onCreate() { appComponent.inject(this) super.onCreate() } override fun onUnbind(intent: Intent?): Boolean { Timber.d("onUnbind") return super.onUnbind(intent) } override fun onDeviceAppeared(address: String) { Timber.d("onDeviceAppeared $address") } override fun onDeviceDisappeared(address: String) { Timber.tag("companionservice").d("onDeviceDisappeared $address") } override fun onDestroy() { super.onDestroy() Timber.d("onDestroy") } }
【问题讨论】:
-
也许你可以发布你的代码?
-
感谢您查看,我添加了一些代码
-
是否有其他原因导致您的应用程序退出(例如崩溃?)这会导致您描述的行为。
-
我在日志上没有看到任何内容。我最终启动了一个前台服务,这很糟糕,因为我相信它可以随时被杀死。无论如何,目前它似乎工作正常,虽然我们还没有在 Play 商店上推出该功能。
-
据我了解文档,系统应该绑定到我们的服务,这应该让它保持活力。然后,只要我们不再感兴趣,我们就会手动终止该服务。我很高兴你有同样的问题,我不再感到孤独:-D 你能给这个问题加注星标issuetracker.google.com/issues/207485313吗?
标签: android android-ble android-12 android-companion-device