Android LocationManager.RequestLocationUpdate是否添加或更新?
我正在寻找LocationManager,以获得定期报告位置的最佳位置。我对LocationManager.requestLocationUpdates方法很好奇。如果我使用不同的minTime和MindInstance多次调用此方法而不调用RemoveUpdate,会发生什么情况? 它会添加新请求还是只更新现有请求?Android LocationManager.RequestLocationUpdate是否添加或更新?,android,locationmanager,Android,Locationmanager,我正在寻找LocationManager,以获得定期报告位置的最佳位置。我对LocationManager.requestLocationUpdates方法很好奇。如果我使用不同的minTime和MindInstance多次调用此方法而不调用RemoveUpdate,会发生什么情况? 它会添加新请求还是只更新现有请求? 我正在尝试测试这一点,目前还不容易。您的答复将不胜感激。它将更新现有请求。您可以多次注册。 请参阅下面的代码 package com.test.locationmanager;
我正在尝试测试这一点,目前还不容易。您的答复将不胜感激。它将更新现有请求。您可以多次注册。 请参阅下面的代码
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);
}
}
为android使用新的位置,他们使其更加精确,并且消耗更少的电池效率。这段代码有效吗?你能用这个代码得到纬度和经度吗?你在设备上测试过吗?我问这个问题的原因是,我一直在努力寻找LocationManager.GPS\u提供商的工作示例。看到我的问题了吗是的。。这是一个实时项目。我试过你的代码。只有网络位置在工作。Gps一号不来了@Blganesh101它对我有用。。你在试哪部电话?打开/关闭gps,您可以看到正在调用gps提供程序回调。当位置锁定时,您将获得gps更新..谢谢大家回答我。这是一个很老的问题,但我今天读到:)我们错过了一些来源!那就太好了。然而,我可以证实这个答案是正确的。