来自 Android OS 8 或更高版本的连续 android 位置背景

Posted

技术标签:

【中文标题】来自 Android OS 8 或更高版本的连续 android 位置背景【英文标题】:Continuous android location background from Android OS 8 or higher 【发布时间】:2022-01-18 14:47:33 【问题描述】:

我正在尝试通过在背景中运行位置服务来获取用户确切位置,但仅在onLocationChanged事件中当应用在前台时触发。一旦应用程序进入后台或被杀死,我的位置服务就不会从服务中触发 onLocationChanged 事件,因此我无法获取用户的确切位置。

我在我的位置服务中使用 FusedLocationProviderClient API。根据https://developer.android.com/training/location/background,位置背景有一些限制。它在文件中的什么地方说:

如果后台位置访问对您的应用至关重要,请记住,Android 通过在运行 Android 8.0(API 级别 26)及更高版本的设备上设置后台位置限制来延长设备电池寿命。在这些版本的 Android 上,如果您的应用在后台运行,它每小时只能接收几次位置更新

请帮助我实现我的功能。任何指南/帮助/代码示例/链接/提示将不胜感激。

【问题讨论】:

使用foreground service 连续获取位置,即使应用程序处于后台也是如此 【参考方案1】:

通过调用 startForegroundService() 在您的应用中启动前台服务。当此类前台服务处于活动状态时,它会在通知区域中显示为持续通知。

【讨论】:

我已经在做同样的事情,但是像 Oppo、Vivo、Samsung、Mi 这样的设备定位服务中的 OEM 品牌没有触发 onLocationChanged 事件。只有当应用程序处于前台时它才能工作并为我提供准确的 GPS 数据。但不是在后台或当用户按下设备电源按钮并关闭屏幕时 @Arno den Hond 使用前台服务。我在启动前台服务时犯了一个愚蠢的错误。

以上是关于来自 Android OS 8 或更高版本的连续 android 位置背景的主要内容,如果未能解决你的问题,请参考以下文章

Android 8或更高版本使用Firebase Performance SDK在Android Oreo上崩溃的应用程序

csharp 检测OS(XP或更高版本)

Android N 要求 IDE 运行 Java 1.8 或更高版本?

Android Studio 错误: -source 1.7 中不支持静态接口方法 (请使用 -source 8 或更高版本以启用静态接口方法)

markdown Ruby on Rails的安装环境(Mac OS X 10.9或更高版本)

QtCreator:`clang:-stdlib=libc++ 的无效部署目标(需要 OS X 10.7 或更高版本)`