Остановка GPS, onPause () - PullRequest
       18

Остановка GPS, onPause ()

0 голосов
/ 29 апреля 2011

В моем приложении, когда я начинаю использовать GPS, я не могу остановить его, не имеет значения, нажимаю ли я кнопку «назад» или «домой», появляется тост (я ставлю 0, 0 при вызове requestLocationUpdate, чтобы проверить, так ли это)

Похоже, что метод onPause (в который, когда я нажимаю кнопку возврата / возврата домой), вызов removeUpdates ничего не делает.Или в чем-то еще проблема?пожалуйста, помогите мне вызвать в течение последних 3 дней, я застрял с этой проблемой.Логика приложения: у меня есть кнопка, которую я нажимаю, затем она проверяет, какой провайдер активен. Метод whatIsEnabled ()

Мой код:

public class Map extends MapActivity {
private MapView mapView;
private MapController mc;
private GeoPoint p;
private Context context;
private Drawable drawable;
private Bundle instanceState;
private EditText et;
private ImageButton connect, layers, location;
private int i = 1;
//private Settings settings;
private LocationManager locationManager;
private LocationListener locationListener;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    instanceState = savedInstanceState;
    setContentView(R.layout.main);
    context = getApplicationContext();

    //settings = new Settings();

    //to zoom
    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setBuiltInZoomControls(true);

    et = (EditText) findViewById(R.id.address);

    connect = (ImageButton) findViewById(R.id.connect_icon);
    connect.setOnClickListener(connect_button);


    layers = (ImageButton) findViewById(R.id.layers);  
    layers.setOnClickListener(layer_button);

    //locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //locationListener = new Coordonates(drawable, mapView, Map.this);
    location = (ImageButton) findViewById(R.id.location_icon);
    location.setOnClickListener(location_button);



    //markers
    drawable = this.getResources().getDrawable(R.drawable.blue_pin);

}

private OnClickListener connect_button = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent myIntent = new Intent(Map.this, Connection.class);
        Map.this.startActivity(myIntent);
    }
};

private OnClickListener layer_button = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if(i%2 != 0) {
            mapView.setStreetView(true);
            mapView.setSatellite(false);
        }
        else {
            mapView.setSatellite(true);
            mapView.setStreetView(false);
        }
        i++;
    }
};

private OnClickListener location_button = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        //registerLocListener();

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationListener = new Coordonates(drawable, mapView, Map.this);

        switch(Settings.whatIsEnabled()) {
        case 1: {
            Toast.makeText(context, "Location services disabled",Toast.LENGTH_LONG).show();
            break;
        }
        case 2: {
            Toast.makeText(context, "Location obtained via GPS satellites",Toast.LENGTH_LONG).show();
            Toast.makeText(context, "Waiting for location",Toast.LENGTH_LONG).show();
            System.out.println("1");
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationListener);//50
            if(Coordonates.getLatitude() == 0)  
                Toast.makeText(context, "No GPS signal",Toast.LENGTH_LONG).show();
            System.out.println("2");
            break;
        }
        case 3: {
            Toast.makeText(context, "Location obtained via Wi-Fi/mobile network",Toast.LENGTH_LONG).show();
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);//1000
            if(Coordonates.getLatitude() == 0)  
                Toast.makeText(context, "No Wi-Fi/mobile network signal",Toast.LENGTH_LONG).show();
            break;
        }/*
        case 4: {
            Toast.makeText(context, "Location obtained via the best provider available",Toast.LENGTH_LONG).show();
            locationManager.
            break;
        }*/
        }
    }
};
/*
protected void onResume() {

    super.onResume();
}*/

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    System.out.println("a intrat in onPause()");
    if(locationManager != null) {
        locationManager.removeUpdates(locationListener);
    }
    locationListener = null;
    locationManager = null;
    super.onPause();
}

1 Ответ

0 голосов
/ 28 октября 2011

Я разработал подобное приложение, но я поместил

locationManager.removeUpdates(locationListener);

в метод onCreate () после того, как я получил местоположение, а не в onPause ().Проблема с включением его в onPause () заключается в том, что он будет вызываться, когда вы покидаете (приостанавливаете) действие.Поскольку я не отслеживаю движение пользователя, я останавливаю слушателя, как только узнаю его местоположение.

Это может быть бесполезно, если вы разрабатываете приложение для функций, отличных от меня.

Удачи!

...