android中的位置
我用GPS测量旅行距离。问题是GPS有时很长一段时间不更新位置变化 有什么解决办法吗android中的位置,android,geolocation,gps,location,android-location,Android,Geolocation,Gps,Location,Android Location,我用GPS测量旅行距离。问题是GPS有时很长一段时间不更新位置变化 有什么解决办法吗 locationListen = new LocationListener() { public void onLocationChanged(Location currentLocation) { if (prevLocation != null){ test = currentLocation.distanceTo(prevL
locationListen = new LocationListener() {
public void onLocationChanged(Location currentLocation) {
if (prevLocation != null){
test = currentLocation.distanceTo(prevLocation);
distance+=test;
}
prevLocation = currentLocation;
}
public void onStatusChanged(String provider, int status, Bundle b) {
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
Toast.makeText(MainActivity.this,
"Status Changed: Out of Service " + provider,
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Toast.makeText(
MainActivity.this,
"Status Changed: Temporarily Unavailable "
+ provider, Toast.LENGTH_SHORT).show();
break;
case LocationProvider.AVAILABLE:
Toast.makeText(MainActivity.this,
"Status Changed: Available " + provider,
Toast.LENGTH_SHORT).show();
break;
}
}
public void onProviderDisabled(String s) {
}
public void onProviderEnabled(String s) {
}
};
startOperation.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View but) {
if (startOperation.getText().equals("Start Calculating Fare")) {
mHandler.post(run);
myManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 1000, 10,
locationListen);
startOperation.setText("Stop the calculations");
} else {
mHandler.removeCallbacks(run);
myManager.removeUpdates(locationListen);
finalInfos();
}
}
});
我的位置侦听器代码。它只是使用GPS进行更新。正如我所说的,GPS有时太长,无法检测位置您在代码中明确请求仅限GPS的位置提供程序。这迫使Android只能依靠GPS,但有其所有的缺点(例如,GPS需要清晰的天空视图才能工作) 要获得更可靠的设备跟踪,您必须使用更可靠、更灵活的定位策略,根据更改的外部场景(室内/室外等)更改当前位置提供程序。更好的是,您可以同时使用一整套不同的定位提供商(即“混合”定位系统) 请看一下之前回答的这些问题: Android文档的以下页面:
可能那个地方没有GPS,或者可能是纬度和经度没有改变…@SilentKiller我也这么认为,如何改进这一点?有什么想法吗?@hardikjoshi就在那里。@Xelamae在这种情况下,你可以从TelephonyManager API获取CEllID,然后从该CEllID执行反向API调用,该调用将返回该CEllID的长度。请看这个@Lucifer是否给出了准确的结果…??我可以使用getBestProvider()吗?是和否。getBestProvider只为您提供当前最符合您标准的位置提供商。这些条件是静态的:一旦声明,它们始终保持不变,结果位置提供程序也是如此。相反,您需要一种方法来动态地适应不断变化的场景。这就是为什么您必须在代码中处理这些更改。