0

Ich möchte die Standortverfolgung dynamisch steuern (Registrierung/Aufheben der Registrierung des Standort-Broadcast-Empfängers). So plane ich es zu tun. Ich habe zwei Fragen:Der richtige Weg, um die Standortverfolgung dynamisch zu steuern (Registrieren/Aufheben der Registrierung des Standort-Broadcast-Empfängers)

  1. Was unter den Fehler bei der Umsetzung sind, weil alle dieses Konzept mir noch sehr theoretisch ist, wie ich bin sehr neu/java Entwickler auf Android. Baue immer noch Konzepte!

  2. Wie übergebe ich EXTRA_INFO von meiner Standortbibliothek Klasse an den Standort Empfänger.

UMSETZUNG:

Ich habe eine Bibliothek Klasse LocationLibrary.java, die aus zwei Methoden besteht. Sie tun, wie der Name vermuten lässt. Die Standortverfolgung sollte starten, wenn ich startTracking() aufruft. Beachten Sie die extraInfo, die an myLocationReceiver übergeben werden muss. Die Verfolgung sollte aufhören, wenn stopTracking() aufgerufen wird.

-Code-Schnipsel:

public class LocationLibraray 
{ 
    private static BroadcastReceiver myLocationReceiver; 

    public LocationLibraray(Context context) 
    { 
     this.ctx = context; 
     myLocationReceiver = new MyLocationReceiver(); 
    } 

    public void startTracking(Context context, String extraInfo) 
    { 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("com.app.android.tracker.LOCATION_READY"); 
     context.registerReceiver(myLocationReceiver, filter); 

     // NEED TO PASS extraInfo to myLocationReceiver for some processing, but HOW? 
    } 

    public void stopTracking(Context context) 
    { 
     context.unregisterReceiver(locationReceiver); 
    } 

}

MyLocationReceiver.java

public class MyLocationReceiver extends BroadcastReceiver { 

    public void onReceive(final Context context, Intent intent) { 
     if ((intent.getAction() != null) && 
       (intent.getAction().equals("com.app.android.tracker.LOCATION_READY"))) 
     { 
      //GET THAT EXTRA INFO FROM LocationLibrary class and process it here 
     } 
    } 
} 

Bitte helfen Sie mir. Thnx!

Antwort

1

Warum nicht einen Konstruktor zu MyLocationReceiver hinzufügen?

public class MyLocationReceiver extends BroadcastReceiver { 
String info = ""; 

public MyLocationReceiver(String extraInfo) 
{ 
    this.info = extraInfo; 

} 
........ 
public void onReceive(final Context context, Intent intent) { 
    if ((intent.getAction() != null) && 
       (intent.getAction().equals("com.app.android.tracker.LOCATION_READY"))) 
     { 
      if (info.contains("Hi")) 
       //do some stuff 
     } 
    } 


} 

Und Sie würden es so instanziiert:

myLocationReceiver = new MyLocationReceiver(new String("Hello!")); 
+0

Hoppla! Das war ein Mist: P. Natürlich wird ein Konstrukteur den Job machen. Wie habe ich das vermisst? Danke Jack :)! –