我正在尋找LocationManager以獲取定期報告位置的最佳位置。我很好奇LocationManager.requestLocationUpdates方法。如果我使用不同的minTime和minDistance多次調用此方法而不調用removeUpdates會發生什麼? 它會添加新的請求還是隻更新現有的請求?
我想測試一下,這一點目前並不容易。您的答覆將不勝感激。LocationManager.requestLocationUpdates添加或更新?
回答
您可以多次註冊。 請參閱下面的代碼。爲Android
package com.test.locationmanager;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.widget.TextView;
public class LocationManagerStatus extends Activity {
private LocationManager locationManager;
private TextView textView;
private final LocationListener gpsLocationListener =new LocationListener(){
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
final String tvTxt = textView.getText().toString();
switch (status) {
case LocationProvider.AVAILABLE:
textView.setText(tvTxt + "GPS available again\n");
break;
case LocationProvider.OUT_OF_SERVICE:
textView.setText(tvTxt + "GPS out of service\n");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
textView.setText(tvTxt + "GPS temporarily unavailable\n");
break;
}
}
@Override
public void onProviderEnabled(String provider) {
textView.setText(textView.getText().toString()
+ "GPS Provider Enabled\n");
}
@Override
public void onProviderDisabled(String provider) {
textView.setText(textView.getText().toString()
+ "GPS Provider Disabled\n");
}
@Override
public void onLocationChanged(Location location) {
locationManager.removeUpdates(networkLocationListener);
textView.setText(textView.getText().toString()
+ "New GPS location: "
+ String.format("%9.6f", location.getLatitude()) + ", "
+ String.format("%9.6f", location.getLongitude()) + "\n");
}
};
private final LocationListener networkLocationListener =
new LocationListener(){
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
final String tvTxt = textView.getText().toString();
switch (status) {
case LocationProvider.AVAILABLE:
textView.setText(tvTxt + "Network location available again\n");
break;
case LocationProvider.OUT_OF_SERVICE:
textView.setText(tvTxt + "Network location out of service\n");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
textView.setText(tvTxt
+ "Network location temporarily unavailable\n");
break;
}
}
@Override
public void onProviderEnabled(String provider) {
textView.setText(textView.getText().toString()
+ "Network Provider Enabled\n");
}
@Override
public void onProviderDisabled(String provider) {
textView.setText(textView.getText().toString()
+ "Network Provider Disabled\n");
}
@Override
public void onLocationChanged(Location location) {
textView.setText(textView.getText().toString()
+ "New network location: "
+ String.format("%9.6f", location.getLatitude()) + ", "
+ String.format("%9.6f", location.getLongitude()) + "\n");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.textview);
locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 5000, 0,
networkLocationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
3000, 0, gpsLocationListener);
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(networkLocationListener);
locationManager.removeUpdates(gpsLocationListener);
}
}
此代碼是否可用?你可以用這段代碼獲得經度和緯度嗎? –
是的,它在工作 – blganesh101
你在設備上測試過嗎?我想問的原因是我一直在嘗試找一個LocationManager.GPS_PROVIDER的工作示例。看到我的問題在這裏http://stackoverflow.com/questions/15627956/getting-current-location-from-gps –
使用新的位置API's,他們已經使人們更準確,消耗電池的效率更低。
- 1. 添加或更新記錄?
- 2. 決定添加或更新
- 3. 更新添加或減法
- 4. Cakephp更新或添加新記錄
- 5. sails.js更新或添加新行
- 6. 添加新字段或添加新值?
- 7. MySQLIntegrityConstraintViolationException:不能添加或更新子行
- 8. DynamoDb putItem ConditionExpression in C++ - 添加或更新
- 9. 面對添加或更新方案
- 10. 無法添加或更新子行
- 11. 從更新或添加的wiki頁面
- 12. Aptana無法更新或添加插件
- 13. 實體框架 - 更新或添加
- 14. fcbkcomplete,如何添加或更新輸入
- 15. 不能添加或更新子行
- 16. #1452 - 不能添加或更新子行
- 17. JavaScript數組添加或更新
- 18. JPA添加或更新對象
- 19. javascript更新或向數組添加值
- 20. MySQL無法添加或更新子行
- 21. locationManager.requestLocationUpdates()導致NullpointerException
- 22. MyLocationOVerlay Vs的LocationManager.requestLocationUpdates
- 23. 添加更多或更少+/-
- 24. 更新面板,添加功能更新
- 25. 更新域(DB)實體時添加列或創建新表?
- 26. 添加,更新或刪除新日期時的Firebase副本tableView
- 27. Eclipse無法更新,刪除或添加任何新插件
- 28. 添加新元素或更新數組中的現有元素
- 29. 添加,更新或刪除後刷新綁定源
- 30. 如何添加或更新臨時表中的新值?
謝謝你們回答我。 – sunghun