1

メソッド startSightManagement() が私のプログラムで 2 回呼び出されるため、2 つのロケーション マネージャー オブジェクトがあります。

    private void startSightManagement() {

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

    // Get the GPS provider and request location updates
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    provider = locationManager.getBestProvider(criteria, true);
    locationManager.requestLocationUpdates(provider, 2000, 2, this);

    // Obtain last known location and update the UI accordingly
    Location location = locationManager.getLastKnownLocation(provider);
    updateWithNewLocation(location);

    sightManager = new SightManager(this);

    // Set up the first sight
    setSight();

}

my onPause() Activity with removeUpdates(this) --> これは 1 つのインスタンスのみを削除します。他のインスタンスを削除するにはどうすればよいですか??

protected void onPause() {

    myLocationOverlay.disableMyLocation();
    locationManager.removeUpdates(this);
    locationManager=null;
    // TODO Auto-generated method stub
    super.onPause();



    //Shutdown TTS everytime when activity is paused(Tolga)
    if (mTts != null) {
        mTts.stop();

    }
    // Unregister the proximity intent receiver. This also prevents the app from 
    // leaking when it is closed.

    if (proximityIntentReceiver!=null) {
        unregisterReceiver(proximityIntentReceiver);            
    }
}

2 つ目の問題は、起動時に GPS が有効になっていない場合にアプリがクラッシュし、GPS を有効にするかどうか尋ねられたときに [はい] をクリックすることです。これらの2行を削除すると、すべて正常に動作します:

locationManager.removeUpdates(this);
    locationManager=null;

開始時に gps が有効になっていない場合の buildAlert メソッドは次のとおりです。

    private void buildAlertMessageNoGps() {

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);  
    builder.setMessage("GPS ist deaktiviert. Standorteinstellungen anzeigen?")
    .setCancelable(false)
    .setPositiveButton("Ja", new DialogInterface.OnClickListener() {
        public void onClick(final DialogInterface dialog, final int id) {
            startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), ENABLE_GPS_SUB);
        }
    })
    .setNegativeButton("Nein", new DialogInterface.OnClickListener() {
        public void onClick(final DialogInterface dialog, final int id) {
            dialog.cancel();
            finish();
        }
    });
    final AlertDialog alert = builder.create();
    alert.show();
}
4

0 に答える 0