2012-01-11 16 views
0

私はアプリケーションを開始するGps location.whenを停止して起動しようとしています。私のブロードキャスト受信機でGpsを停止し、再度起動する必要があります.GPSは停止していません誰でも助けてください。Gpsを再起動できません

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    latituteField = (TextView) findViewById(R.id.TextView02); 
    longitudeField = (TextView) findViewById(R.id.TextView04); 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    // Define the criteria how to select the locatioin provider -> use 
    // default 
    Criteria criteria = new Criteria(); 
    Log.i("ConnTest",locationManager.toString()); 
provider = locationManager.getBestProvider(criteria, false); 
Location location = locationManager.getLastKnownLocation(provider); 

// Initialize the location fields 
if (location != null) { 
    System.out.println("Provider " + provider + " has been selected."); 
    float lat = (float) (location.getLatitude()); 
    float lng = (float) (location.getLongitude()); 
    latituteField.setText(String.valueOf(lat)); 
    longitudeField.setText(String.valueOf(lng)); 
    final double a=(int) (location.getLatitude() * 1E6); 
final double b=(int) (location.getLongitude() * 1E6); 
str = Double.toString(a); 
str2=Double.toString(b); 

} else { 
    latituteField.setText("provider not available"); 
    longitudeField.setText("provider not available"); 
} 

    txtNetworkInfo = (TextView)findViewById(R.id.txtNetworkInfo); 

    receiver = new ConnectivityReceiver(); 

      registerReceiver(receiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 


} 
@Override 
protected void onResume() { 
    super.onResume(); 
    //locationManager.requestLocationUpdates(provider,1000, 1, this); 
    locationManager.requestLocationUpdates(
      provider, 
      MINIMUM_TIME_BETWEEN_UPDATES, 
      MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
      this 
    ); 
} 

/* Remove the locationlistener updates when Activity is paused */ 
@Override 
protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    float lat = (float) (location.getLatitude()); 
    float lng = (float) (location.getLongitude()); 
    longitudeField.setText(String.valueOf(lng)); 
    latituteField.setText(String.valueOf(lat)); 


} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Enabled new provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Disenabled provider " + provider, 
      Toast.LENGTH_SHORT).show(); 

} 
protected void Display(Cursor c) { 
    Toast.makeText(this, "rowid: " + c.getString(0) + "\n" + 
    "Latitude: " + c.getString(1) + "\n" + "Longitude: " + c.getString(2) + "\n" + 
    Toast.LENGTH_LONG, 0).show();  
} 

@Override 
    protected void onDestroy() { 
      unregisterReceiver(receiver); 

      super.onDestroy(); 
    } 

private String getNetworkStateString(NetworkInfo.State state){ 
    String stateString = "Unknown"; 

    switch(state) 
    { 
      case CONNECTED:   stateString = "Connected";break; 
      case CONNECTING:  stateString = "Connecting";break; 
      case DISCONNECTED:  stateString = "Disconnected"; break; 
      case DISCONNECTING:  stateString = "Disconnecting";break; 
      case SUSPENDED:   stateString = "Suspended"; break; 
      default:      stateString = "Unknown";break; 
    } 

    return stateString; 
} 

    private class ConnectivityReceiver extends BroadcastReceiver{ 

      private Timer mTimer; 
      private TimerTask mTimerTask; 

      @Override 
      public void onReceive(Context context, Intent intent) { 
        NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 

        if(null != info) 
        { 
          String state = getNetworkStateString(info.getState()); 
          if(state.equals("Connected")){ 
           mTimer = new Timer(); 
           mTimerTask = new TimerTask() { 
            @Override 
            public void run() { 
             MainActivity.this.runOnUiThread(new Runnable() { 

              @Override 
              public void run() { 
               locationManager.removeUpdates(this); 
               stop(); 
              } 
             }); 

            } 
           }; 
           mTimer.scheduleAtFixedRate(mTimerTask,180000,180000); 
          } 


          } 
      } 
        } 

      } 
    private void stop() { 
     mTimer = new Timer(); 
     mTimerTask = new TimerTask() { 
      @Override 
      public void run() { 
       MainActivity.this.runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 

          locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
        } 
       }); 

      } 
     }; 
     mTimer.scheduleAtFixedRate(mTimerTask,180000,180000); 

    } 
    } 

答えて

0

onPause()が呼び出されたときに更新を無効にする必要があります。あなたが戻ってあなたのGPSが無効になっていない? GPSを使用している別のアプリやサービスが実行されているのでしょうか?

+0

アプリケーションを実行しているのは1つだけです – Mercy

+0

これを押してもGPSは無効になりませんか?また、あなたはどんなサービスを実行していますか? – MikeIsrael

関連する問題