【问题标题】:CompanionDeviceService unbinds immediatelyCompanionDeviceService 立即解除绑定
【发布时间】: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


【解决方案1】:

MyCompanionDeviceService: onUnbind 表示系统解绑你的 MyCompanionDeviceService。 unbind这里与你的设备绑定无关。

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 2011-02-02
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多