Collecte d'information de localisation
Bonsoir,
J'ai en projet le développement d'une application qui collecte des informations Wifi/BT/nfc/locate. J'ai pour le moment réussi à collecter les informations wifi et bt avec des WifiManager/BluetoothManager et des BroadcastReceivers.
Code:
1 2 3 4 5
|
IntentFilter filterWifi = new IntentFilter();
filterWifi.addAction(WiMa.WIFI_STATE_CHANGED_ACTION);
filterWifi.addAction(WiMa.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(mReceiverWifi, filterWifi); |
J'ai essayer de suivre la même logique pour les informations de géolocalisation avec LocationManager et un BroadcastReceiver.
J'aimerais qu'au moment où une nouvelle position GPS(ok)/NETWORK(ok)/PASSIVE(quesako?) est détecté, la collecter et ne conserver que la plus récente.
J'ai déjà commencé à voir avec requestLocationUpdates seulement je ne suis pas sur que cette méthode réponde à mon attente. J'aimerai collecter la localisation Network quand je change d'antenne réseaux ou quand je me connecte en wifi et pour les localisations GPS uniquement si une autre application l'utilise, mon application ne doit pas être énergivore donc pas de GPS.
Je débute en Android/Java et plus je progresse plus je pense que mon appli sera un service qui s'active au boot d'où mes contraintes de gestion d’énergie.
J'aimerais avoir vos avis et vos conseils car j'ai passé l'aprem à bouquiner la doc et là je sèche :( .
Actuellement j'ai ça qui ne fonctionne pas comme je voudrais: ( je ne rentre dans onReceive que si j'active ou désactive le GPS et les résultats sont presque tout le temps null )
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 29 30 31 32 33 34 35 36 37
|
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
localisationRES=(TextView) findViewById (R.id.localisationRES);
localisationGPS=(TextView) findViewById (R.id.localisationGPS);
localisationPAS=(TextView) findViewById (R.id.localisationPAS);
LoMa= (LocationManager) this.getSystemService(LOCATION_SERVICE);
IntentFilter filterLo = new IntentFilter();
filterLo.addAction(LocationManager.KEY_LOCATION_CHANGED);
filterLo.addAction(LocationManager.PROVIDERS_CHANGED_ACTION);
registerReceiver( mReceiverLo , filterLo);
}
private class my_ReceiverLo extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (LoMa.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)!=null)
LocalisationRES.setText("Réseaux:"+"Latitude="+LoMa.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLatitude()+"Longitude="+LoMa.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLongitude());
else
localisationRES.setText("Réseaux: null");
if (LoMa.getLastKnownLocation(LocationManager.GPS_PROVIDER)!=null)
localisationGPS.setText("GPS: "+"Latitude="+LoMa.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLatitude()+" Longitude="+LoMa.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLongitude());
else
localisationGPS.setText("GPS: null");
if (LoMa.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER)!=null)
localisationPAS.setText("Passive: "+"Latitude="+LoMa.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER).getLatitude()+"Longitude="+LoMa.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER).getLongitude());
else
localisationPAS.setText("Passive: null");
} |