Android 上的 Qt 位置定位#

关于在 Android 上使用 Qt 位置定位的说明

从 Android 服务中使用 Qt 位置定位#

从服务中使用 Qt 位置定位需要采取一些额外的操作,具体取决于 Android 版本。以下各节提供了有关这些操作更详细的说明。

注意

自 Android 8(API 级别 26)以来,操作系统限制了在后台运行的应用程序获取用户当前位置的频率。应用通常每小时只能接收几次位置更新。有关更多信息,请参阅后台位置限制

使用前台服务#

自 Android 8(API 级别 26)以来,当应用进入后台时,Android 操作系统可能会终止后台服务。这通常在后台运行大约一分钟之后发生。为保持位置服务的运行,该服务应实现为前台服务。这种服务会显示状态栏通知,直到服务停止或从前台移除之前无法取消。这使用户能够始终了解重要的后台活动。

注意

自 Android 9(API 级别 28)以来,前台服务需要特殊 FOREGROUND_SERVICE 权限。有关实现前台服务的更多详细信息,请参阅 Android 文档。

使用后台位置权限#

自 Android 10(API 级别 29)以来,服务 必须 请求 ACCESS_BACKGROUND_LOCATION 权限。它应按如下方式添加到 AndroidManifest.xml 文件中

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

注意

一旦将权限添加到 AndroidManifest.xml,还必须明确定义应用程序有权访问位置服务的常量。要这样做,应导航到设置 -> 应用,选择合适的应用程序,打开其权限,并为位置指定允许一直访问的权限(请参阅下面的截图)。

../_images/permissions.png

有关更多信息,请参阅后台访问位置的 Android 文档。