Приложение принудительно закрывается, когда GPS не включен - PullRequest
0 голосов
/ 09 марта 2011

У меня проблемы с выяснением, почему приложение закрывается, когда GPS не включен.При включении перед запуском все хорошо.Все работало нормально, пока я не добавил LocationListener для обновления текущего местоположения.Я уверен, что это что-то смехотворно простое.

 public class GlenrochieMain extends Activity

 {


   @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.main);      

    //GPS Functionality

    LocationManager locationManager;
    String context = Context.LOCATION_SERVICE;
    locationManager = (LocationManager)getSystemService(context);

    //Criteria for GPS
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    String provider = locationManager.getBestProvider(criteria, true);      

    Location location = locationManager.getLastKnownLocation(provider);
    updateWithNewLocation(location);

    //updates location every 5second+5meters
    locationManager.requestLocationUpdates(provider, 5000, 5,
            locationListener);
  }

private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      updateWithNewLocation(location);
    }

    public void onProviderDisabled(String provider){
      updateWithNewLocation(null);
    }

    public void onProviderEnabled(String provider){ }
    public void onStatusChanged(String provider, int status, 
                                Bundle extras){ }
  };

  private void updateWithNewLocation(Location location) {
    String latLongString;
    TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText);
    if (location != null) {
      double lat = location.getLatitude();
      double lng = location.getLongitude();
      latLongString = "Lat:" + lat + "\nLong:" + lng;
    } else {
      latLongString = "No location found"; 
    }
    myLocationText.setText("Your Current Location is:\n" + 
                           latLongString);
  }   
}

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Вы должны убедиться, что GPS действительно включен. Этот ответ предназначен для Android 1.6, см. Как проверить текущее состояние приемника GPS? для более поздних версий.

0 голосов
/ 09 марта 2011
String provider = locationManager.getBestProvider(criteria, true);  

Если подходящий провайдер не найден, getBestProvider вернет ноль. Вы не рассматривали этот случай.

...