Skocz do zawartości
hindus

Wyświetlanie pozycji GPS - podstawy

    Rekomendowane odpowiedzi

    hindus

    Witam wszystkich, zdaje się, że to mój pierwszy post :)

    Męczę się z problemem od samego rana i nie mogę dojść do tego, co jest nie tak. Chodzi o zupełnie podstawowe odczytanie pozycji GPS. Postępując zgodnie z większością tutoriali, doszedłem do następującego kodu:

    StalkerPDAActivity.java:

    package com.hindus.stalkerpda;
    
    import android.app.Activity;
    import android.content.Context;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    
    public class StalkerPDAActivity extends Activity {
       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
           LocationListener mlocListener = new MyLocationListener();
    
    
           mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
       }
    }

    MyLocationListener.java:

    package com.hindus.stalkerpda;
    
    import android.location.Location;
    import android.location.LocationListener;
    import android.os.Bundle;
    import android.widget.Toast;
    
    public class MyLocationListener implements LocationListener{
    
    
    @Override
    public void onLocationChanged(Location loc) {
    	// TODO Auto-generated method stub
    	loc.getLatitude();
    	loc.getLongitude();
    
    	String Text = "My current location is: \nLatitud = "+loc.getLatitude()+"Longitud = "+loc.getLongitude();
    	Toast tost = Toast.makeText(StalkerPDAActivity.this, Text, Toast.LENGTH_LONG);
    	tost.show();		
    }
    
    @Override
    public void onProviderDisabled(String arg0) {
    	// TODO Auto-generated method stub
    
    }
    
    @Override
    public void onProviderEnabled(String arg0) {
    	// TODO Auto-generated method stub
    
    }
    @Override
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    	// TODO Auto-generated method stub
    
    }
    
    }
    

    Problem pojawia się w momencie konieczności przekazania Contextu dla "tosta". W obecnej postaci daje błąd: No enclosing instance of the type StalkerPDAActivity is accessible in scope

    Gdy zastosuję (zgodnie z tutorialami) getApplicationContext(), otrzymuję: The method getApplicationContext() is undefined for the type MyLocationListener

    Próbowałem przekazać Context przez konstruktor albo inną metodę, ale przez to, że to musi implementować LocationListener, sypało błędami. Jak w takim razie zaktualizować TextView czy Toasta z aktualną pozycją?

    Rozwiązanie pewnie jest banalne, ale jakoś nie mogę niczego wymyślić.

    Pozdrawiam!

    EDYCJA:

    OK, rozwiązanie znalezione. Wystarczy przekazać klasę w konstruktorze MyLocationListenera (robiłem tak wcześniej):

    LocationListener mlocListener = new MyLocationListener(this);
    

    Złapać ją w MyLocationListenerze:

    private Context con;
    private StalkerPDAActivity klasa;
    
    public MyLocationListener(StalkerPDAActivity klasa){
    	this.con = klasa.getApplicationContext();	
    	this.klasa = klasa;
    }
    

    I dopisać pusty konstruktor (bo inaczej jest zgłaszany jako undefined):

    public MyLocationListener(){}
    

    Edytowane przez hindus
    znaleziono rozwiązanie :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x