【问题标题】:Android 8.0 background services for bluetooth device适用于蓝牙设备的 Android 8.0 后台服务
【发布时间】:2018-07-19 18:31:39
【问题描述】:

假设应用程序没有被破坏,我正在构建一个在后台跟踪温度的蓝牙应用程序。我注意到在 Android Oreo 中我们有background execution limits。我需要知道我是否遗漏了我的项目中的任何内容。这是我如何布置项目的。

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

我现在在BluetoothObject 中实现了一个Service(),它是BluetoothObject 和我的Realm 数据库之间的桥梁。到目前为止,一切似乎都奏效了。我使用this example 设置了所有内容。

既然这是一个绑定服务,我是否需要调用其他任何东西来让服务在后台保持活跃?设置好后,我通过调用绑定服务:

    val intent = Intent(context, BoundService::class.java)
    context.bindService(intent, myConnection, Context.BIND_AUTO_CREATE)

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

我看到的问题是蓝牙连接在应用打开且屏幕处于睡眠状态时保持连接。我遇到的问题是当我的应用程序进入应用程序堆栈的后面,然后手机就睡着了。连接可能会持续一个小时。我能做些什么来保持这种联系?我需要启用任何权限吗? Android 8+ 中是否存在导致问题的内容?

【问题讨论】:

  • 如果您使用的是startService,则需要将其更改为startForegroundService。此外,您需要在服务中创建通知。
  • @SusmitAgrawal 似乎你和你和 Pawel 有相同的答案。我会回来报告,看看它是否有效,谢谢。

标签: android bluetooth


【解决方案1】:

没有问题。该限制专门用于终止可能会消耗大量电池(正在进行的插座、蓝牙连接等)且用户无法直接看到的后台服务。

如果您希望您的服务不间断地运行,您需要接受Foreground 服务并发出通知。

【讨论】:

  • 谢谢,我会试试这个,然后会报告。
猜你喜欢
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 2013-05-31
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多