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.
J'ai essayer de suivre la même logique pour les informations de géolocalisation avec LocationManager et un BroadcastReceiver.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'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 : Sélectionner tout - Visualiser dans une fenêtre à part
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"); }
Partager