其实我的问题有时候我可以获得位置,有时我无法获得Android真实设备上的位置。我使用以下代码获取位置,
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
我需要在应用程序启动时获取位置。我不知道为什么有时会失败。如何解决这个问题?
答案 0 :(得分:1)
@jsmith 评论了我的问题,
提高您的电源要求,并确保您可以在哪里进行测试 获得网络或GPS信号。如果这有帮助,那么它只是一个例子 传感器接收不足以了解位置。
这是我的问题的正确答案。现在它的工作正常。
答案 1 :(得分:0)
您忘记申请“位置更新”,在声明LocationManager
后使用此功能:
locationManager.requestLocationUpdates(provider, 0, 0, this);
然后你必须让类实现LocationListener
然后添加这个函数:
public void onLocationChanged(Location location) {
//get the location here
}
如果您不想重复获取该位置,在获得该位置后,您必须以这种方式停止“位置更新”:
locationManager.removeUpdates(this);
如果您希望应用程序始终收听“位置更新”,则最好在onResume()
中请求更新并删除onPause()
中的更新。 onDestroy()
祝你好运