summaryrefslogtreecommitdiff
path: root/src/positioning/doc/src/qtpositioning-android.qdoc
blob: 1857574ec8e3895ea45fb267ce510dc8c7b5df32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtpositioning-android.html
\inmodule QtPositioning
\title Qt Positioning on Android
\brief Notes on using Qt Positioning on Android

\section1 Using Qt Positioning from Android Services

Using Qt Positioning from a service requires several extra actions to be taken,
depending on the Android version. The sections below give more details on
these actions.

\note Since Android 8 (API level 26), the OS limits how frequently an
application can retrieve the user's current location while running in the
background. The application will normally be able to receive location updates
only a few times each hour. For more information, see
\l {Background Location Limits}.

\section2 Using Foreground Service

Since Android 8 (API level 26), the background service can be killed by the
Android OS when the application goes to the background. This normally happens
after around a minute of running in the background. To keep the location service
running, the service should be implemented as a \l {Foreground Service}. Such
service shows a status bar notification, which cannot be dismissed until the
service is stopped or removed from the foreground. This allows the user to be
always aware of the important background activities.

\note Since Android 9 (API level 28), foreground services require a special
\c FOREGROUND_SERVICE permission. See the Android documentation for more
details on implementing foreground services.

\section2 Use Background Location Permission

Since Android 10 (API level 29), the service \e must request the
\l {ACCESS_BACKGROUND_LOCATION} permission. It should be added to the
\c AndroidManifest.xml file as follows:

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

\note Once the permission is added to \c {AndroidManifest.xml}, it is still
required to explicitly allow the constant access to the location services
for the application. To do it, one should navigate to \uicontrol Settings ->
\uicontrol {Apps}, select a proper application, open its permissions, and
specify the \uicontrol {Allow all the time} permission for Location
(see the screenshot below).

\image permissions.png

Check \l {Access Location in the Background} Android documentation for more
details.

*/