Utilisation du GPS en arrière plan.
Dans l'application GPS que je développe, je souhaite que mon GPS continue à me délivrer ses informations même si l'application n'est plus au premier plan.
Mais j'ai l'impression que je ne reçois plus ses informations quand mon application passe au second plan.
Mon smartphone est un Samsung A41 avec android 10.
Pourtant, je pense que j'ai fait ce qu'il faut. Voici ce que j'ai fait :
Dans le fichier "build.gradle (Module GPSNav.app) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.example.gpsnav"
minSdkVersion 23
targetSdkVersion 29
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
//noinspection GradleCompatible
implementation 'com.android.support:support-v4:24.2.1'
} |
Dans le fichier "androidManifest.xml" j'ai :
Code:
1 2 3
| <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />" |
Dans mon application, j'ai :
Code:
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
|
private static final int PERMISSION_REQUEST_GPS = 100;
...
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Main.this, new String[]{
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_GPS);
return;
}
...
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_GPS) {
if (grantResults[0] == PackageManager.PERMISSION_DENIED) { // Ferme l'application
Toast.makeText(Main.this, "Désolé !!! vous ne pouvez pas utiliser cette application sans permission", Toast.LENGTH_LONG).show();
finish();
}
}
} |
Apparemment, ça ne suffit pas.
Que faut-il faire ?
Cordialement.
Pierre.