Java [Android] LocationListener implementieren

Elcrian

Commander
Registriert
Feb. 2008
Beiträge
2.493
Hallo,
wie implementiere ich einen locationListener (bzw. generell Listener) in anderen Klassen als der Activity/GUI-Klasse bei einer App?

Ich habe eine main.class welche eben die Activity der App darstellt und die GUI aufbaut.
Diese erzeugt eine GPS.class welche mir aktuell nur die "LastKnownLocation" raussucht und via getter/setter-Methoden in der main.class aktualisiert wird.

Code-Kurzform:
Code:
public class NavigationSuiteActivity extends Activity implements OnClickListener {
	
	GPS_Module GPS = null;
	
	private ToggleButton light_button;
	private TextView coordinates_text;
	private TextView height_text;
	private ImageView compass_image;
	
	/** GUI MAIN CLASS *
	 * 
	 * creates main gui for general functions
	 * 
	 * /
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        initGUI();
        initGPS();
        initCoords();
    }

    public void initGPS() {
    	GPS = new GPS_Module(this);
    }
    
    public void initCoords() {        
        if (GPS == null) {
        	setGPSCoordinates(R.string.general_error+"");
        	setGPSHeight(R.string.general_error+"");
        }
        else {
        	setGPSCoordinates(GPS.getLastKnownCoordinates());
        	setGPSHeight(GPS.getLastKnownHeight());
        }
    }

// [...]
Code:
	public GPS_Module(Context GPSContext) {
		Log.v("GPS_Module() ","Starting...");
		this.GPSContext = GPSContext;
		
		gpsManager = (LocationManager)GPSContext.getSystemService(GPSContext.LOCATION_SERVICE);	
		locationListener = new GPSlocationListener();
		
	    if (!gpsManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ) {
	    	setError();
	    }
	    else {
	    	gpsIsEnabled = true;
	    }
	}

	/**
	 * MAIN METHODS
	 */
	
	public String getLastKnownCoordinates(){
		if (gpsIsEnabled) {
		location = gpsManager.getLastKnownLocation(gpsManager.getBestProvider(new Criteria(), true)); 
		
		if (location == null) {
			coordinates = ""; }
		else {
			coordinates = getFormatedCoordinates(location);
		}
		return coordinates;
		}
	 return "";
	}	

// [...]

Kann mir da wer helfen?

Ziel ist es, dass die angezeigten Koordinaten selbstständig auf dem Bildschirm wie bei einem Navi aktualisiert werden.
Habe mir schon überlegt das mit Timer und extra Thread (also manuell) zu machen, aber ein Listener wäre doch cleverer.
 

Ähnliche Themen

Zurück
Oben