蓝牙设备的Android 8.0后台服务

时间:2018-07-19 18:31:40

标签: android bluetooth

我正在构建一个蓝牙应用程序,假设该应用程序尚未销毁,它可以在后台跟踪温度。我注意到,在Android Oreo中,我们有article。我需要知道我的项目中是否缺少任何内容。这是我安排项目的方式。

我有一个MainActivity,它有一个蓝牙类BluetoothObject,负责主要活动BluetoothGattCallback()类和我的本地Realm数据库之间的通信。

我现在已经在Service()中实现了BluetoothObject,这是BluetoothObject和我的Realm数据库之间的桥梁。到目前为止,一切似乎都可以进行。我使用background execution limits进行了所有设置。

由于这是绑定服务,我是否需要调用其他任何东西以使该服务在后台保持活动状态?设置好之后,我通过调用

绑定服务。
    val intent = Intent(context, BoundService::class.java)
    context.bindService(intent, myConnection, Context.BIND_AUTO_CREATE)

我还按照示例的指示在清单文件中设置了服务。

我看到的问题是,在打开应用程序且屏幕处于睡眠状态时,蓝牙连接保持连接状态。我遇到的问题是,当我的应用程序转到应用程序堆栈的后面,然后手机进入睡眠状态。连接可能持续一个小时。我该怎么做才能保持这种连接?我需要启用任何权限吗? Android 8+中是否有引起问题的东西?

1 个答案:

答案 0 :(得分:1)

没有问题。专门设置该限制是为了消除可能消耗大量电池(持续不断的插槽,蓝牙连接等)并且对用户不可见的后台服务。

如果您希望服务不间断运行,则需要通过通知来满足Foreground服务的要求。