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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class LocalisationGPSActivity extends AppCompatActivity {
//Déclaration des variables (porté + type)
private Button button;
private Button buttonStop;
private TextView text;
private BroadcastReceiver broadcastReceiver;
//Pour enregistrer notre broadcaster recoorectement on utilise la fonction onResume()
@Override
protected void onResume() {
super.onResume();
//Si le receiver "broadcastReceiver" n'existe pas, on en crée un nouveau
if(broadcastReceiver == null){
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
text.append("\n" +intent.getExtras().get("coordinates"));
}
};
}
//On appel la méthode "registerReceiver() après avoir vérifier que notre "receiver" existe bien
registerReceiver(broadcastReceiver,new IntentFilter("location_update"));
}
@Override
protected void onDestroy() {
super.onDestroy();
if(broadcastReceiver != null){
unregisterReceiver(broadcastReceiver);
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.geolocalisation);
//Affectation des valeurs à nos variables
//On pointe vers les champs de nos vues XML via leur id
button = (Button) findViewById(R.id.button);
buttonStop = (Button) findViewById(R.id.buttonStop);
text = (TextView) findViewById(R.id.textView);
if(!runtime_permissions());
enabled_buttons();
//
}
private void enabled_buttons() {
//Boutton pour activé l'envoie des données (longitude et lattitude) de notre GPS
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Instanciation d'un Intent (i) auquel on lui affecte les coordonnées GPS
Intent i =new Intent(getApplicationContext(),GPS_Service.class);
//On envoie les données de notre intent précèdemment instancié avec startService en passant en paramètre notre intent
startService(i);
}
});
//Boutton pour désactivé l'envoie des données (longitude et lattitude) de notre GPS
buttonStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),GPS_Service.class);
stopService(i);
}
});
}
//Pour les version SDK, si la version SDK est > ou = à la version 23 de SDK
private boolean runtime_permissions() {
if(Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},100);
return true;
}
return false;
}
/**@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 10:
configure_button();
break;
default:
break;
}
}**/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 100){
if( grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
enabled_buttons();
}else {
runtime_permissions();
}
}
}
} |
Partager