Accès à une variable - Classe, Thread - Développement Android
Bonjour je débute en java, et j'éssaye de récupérer la position gps d'un téléphone sous android.
Mon principale problème est que j'ai besoin de récupérer la variable object (de type JSONObject) dans ma fonction onLocationChanged, mais je n'y parviens pas, voici mon code :
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 27 28
|
// Objet dont j'ai besoin et que j'éssaye aussi de passer dans le LocationListener sans y parvenir
JSONObject object = new JSONObject();
object.put("server_id", server_id);
object.put("action", "map");
object.put("test", "variable test pour voir si l'objet est bien passe");
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// Si on ne peut pas avoir la position instantanément
// car le gps doit se lancer, on attend, on enverra la reponse plus tard
/ On doit creer un thread, il me semble, meme si ca ne me facilite pas les choses car le reste de mon code à besoin de ces données pour continuer.
// Je prefererais que ca freeze (avec à la limite une durée maximale, si jamais le gps est pas capable de donné quoi que ce soit au bout d'une minute), cette fonction est utilisé par un service cela ne se verrais pas
if(location == null) {
// Sinon on fera une requete spéciale plus tard
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.d("Bipack", "Bipack - GEOLOCATION CHANGE !");
Log.d("Bipack", "Bipack - OBJECT TEST: "+ object.getString("test"));
object.put("lat", location.getLatitude());
object.put("lng", location.getLongitude());
}
});
return;
}
object.put("lat", location.getLatitude());
object.put("lng", location.getLongitude()); |
j'ai tenté ceci, sans succès :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener(object) {
private JSONObject object;
// j'ai éssaye ceci pour passer mon objet en parametre
public void LocationListener(JSONObject object) {
this.object = object;
}
@Override
public void onLocationChanged(Location location) {
Log.d("Bipack", "Bipack - GEOLOCATION CHANGE !");
Log.d("Bipack", "Bipack - OBJECT TEST: "+ object.getString("test"));
object.put("lat", location.getLatitude());
object.put("lng", location.getLongitude());
}
}); |
Merci d'avance pour vos réponses,
Sinon, java veux m'obliger à rajouter dans la fonction new Internationaliste(), ceci, sinon il me met des erreurs (mais je ne souhaite rien mettre dans ces fonction, ça alourdi mon code, pourquoi me met-il ça ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
} |
Merci d'avance pour vos réponses ! =D
Pierre.