我正在尝试使用 LocationManager 和 LocationListener 在 android 中获取当前位置,如 http://developer.android.com/guide/topics/location/obtaining-user-location.html 中所述
但是,永远不会调用 LocationListener 的 onLocationChanged 方法。我使用了一部真正的 Android 手机/也使用了模拟器,并使用 telnet 更改了模拟位置,如上面的链接所述。
这是我的代码:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new CustomLocationListener(
getApplicationContext());
// Location Providers
String locationProvider = LocationManager.NETWORK_PROVIDER;
// LocationProvider locationProvider = LocationManager.GPS_PROVIDER;
mlocManager
.requestLocationUpdates(locationProvider, 0, 0, mlocListener);
}
}
和我的 LocationListener:
public class CustomLocationListener implements LocationListener {
private Context m_context;
public CustomLocationListener(Context context) {
m_context = context;
}
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
String Text = latitude + " " + longitude;
Toast.makeText(m_context, Text, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
// TODO
}
@Override
public void onProviderEnabled(String provider) {
// TODO
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
}
因此永远不会调用 onLocationChanged。 谁能看出问题?? 非常感谢
最佳答案
您还可以让您的手机确定最佳提供商,而不仅仅是设置
String locationProvider = LocationManager.NETWORK_PROVIDER;
试试这个:
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String locationProvider = mlocManager.getBestProvider(criteria, true);
此外,您是否通过将设备移动到新位置进行了测试?否则“onlocationchanged”事件可能不会触发。几年前,当我想出这些东西时,我放了一些“ toast ”来提醒我在街区周围走动以验证事件正在触发时的纬度/经度坐标。
关于android - LocationManager requestLocationUpdates 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921853/