2011-10-26 7 views
0

これは完全に機能しています。Android GPSをアクティビティとして

public class GPSActivity extends Activity { 
LocationManager locmgr = null; 
String android_id; 
DbAdapter db; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    db = new DbAdapter(getBaseContext()); 
    db.open(); 

    android_id = Secure.getString(getBaseContext().getContentResolver(), Secure.ANDROID_ID); 
    locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this.onLocationChange); 
    Toast.makeText(getBaseContext(), "Waiting for location..." , Toast.LENGTH_SHORT).show(); 
} 

    LocationListener onLocationChange=new LocationListener() { 
     public void onLocationChanged(Location loc) { 
      String latlong = "Lat: " + loc.getLatitude() + " Long: " + loc.getLongitude(); 
      Toast.makeText(getBaseContext(), latlong, Toast.LENGTH_SHORT).show(); 
      try{ 
       db.insertGPSCoordinates(android_id, Double.toString(loc.getLatitude()), Double.toString(loc.getLongitude())); 
      } 
      catch(Exception e){ 
      } 
     } 
     public void onProviderDisabled(String provider) { 
     } 

     public void onProviderEnabled(String provider) { 
     } 

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

    //pauses listener while app is inactive 
    @Override 
    public void onPause() { 
     super.onPause(); 
     locmgr.removeUpdates(onLocationChange); 
    } 

    //reactivates listener when app is resumed 
    @Override 
    public void onResume() { 
     super.onResume(); 
     locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, onLocationChange); 
    } 
    } 

これはどのようにしてBroadcast Receiverから使用できますか?私はBOOT_COMPLETE時に座標を収集したいと思っています。そして、それはそのlocmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this.onLocationChange);設定に応じて実行し続けます。私はそれを定期的に維持する方法を混乱させています。

+0

サービス中にLocationListenerが必要ですか? – user533844

答えて

0

このものは使用しないでください。 Serviceを使用してください。ここにあなたがしていることがあります。 BOOT_COMPLETEブロードキャストを受信するブロードキャストレシーバを用意してください。放送を受信するとサービスを開始します。このサービスでは、場所を記録するためのコードをすべて入れます。 stopSelfを呼び出すまで、サービスはstopSelf()を呼び出すまで停止しません。

関連する問題