Bonjour,
j'utilise les localisations gps, et je souhaites relever la position (géolocalisée) toutes les "tempsDeReleve" secondes.
Mon activité principale MapsActivity, implemente LocationListener.
Je défini l'alarme à partir du moment ou je dois commencer le relevé de position :
la méthode static suivante d'une classe (LocationReceiver) héritant de BroadcastReceiver,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // AlamrManager Classe : MapsActivity Intent intent = new Intent(MapsActivity.this,LocationReceiver.class ); pending_intent = PendingIntent.getBroadcast(MapsActivity.this, 0, intent, 0); long REPEAT_TIME = 1000 * tempsDeReleve; alarme_manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarme_manager.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), REPEAT_TIME, pending_intent);
MapsActivity.montexteStatic().setText(strDate); s'exécute bien à REPEAT_TIME secondes.
Je voudrais lancer aussi relevePosition() et faireTacer(), sans avoir à rendre toutes les variables static.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Override public void onReceive(Context context, Intent intent) { Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a"); final String strDate = simpleDateFormat.format(calendar.getTime()); MapsActivity.montexteStatic().setText(strDate); // MapsActivity.relevePosition(); // MapsActivity.faireTracer(); }
Peut-on à partir du Context context retrouver l'instance de l'objet appelant MapsActivity? ou autre ?
--------------------------------------------
résolu en passant par une classe intermédiaire qui crée l'alarm et conserve un pointeur sur la MapActivité, permettant au BroadcastReceiver d'utiliser la méthode de classe static de cette classe intermédiaire
Partager