我使用 GoogleApiClient 获取位置信息。我的要求是找到准确的位置信息。
在位置请求中,我将优先级设置为PRIORITY_HIGH_ACCURACY,然后当我在门时,我在室内时没有获得任何位置更新。我需要返回位置对象,它可能是最后已知的位置。
我也尝试过PRIORITY_LOW_POWER。但它从未使用GPS获取位置信息。我认为使用它可能有点不准确。
我在外面使用GPS时需要更好的位置信息,还有我在室内时要返回的最后已知位置信息。那么哪个优先级适合我?
并且始终将海拔高度和方位设为0.总是得到融合的提供者。我认为GoogleApiClient不提供提供位置信息的提供商详细信息。
添加了澄清:
我有以下实现:
//Request for location update
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationrequest,
mLocationUpdatePendingIntent);
//Intent service where i receive the location information
public LocationIntentService() {
super("LocationService");
}
protected void onHandleIntent(Intent locationIntentObj) {
}
//Stop Location Update
LocationServices.FusedLocationApi.removeLocationUpdates(
mGoogleApiClient, mLocationUpdatePendingIntent);
在我的情况下,如何从API获取最新的已知位置信息。
请帮我解决这个问题。
答案 0 :(得分:3)
[...]当我在门口时,我在室内时没有得到任何位置更新。 [...]并且始终将海拔高度和方位设为0。
您无法访问室内GPS卫星。这些值将由GPS提供。
我建议您使用方法setInterval(...)
和setFastestInterval(...)
。你这样说:
我希望任何位置至少每
interval
毫秒,但如果您的位置比我能够更快地处理它{{1}毫秒。
当融合在fastestInterval
毫秒内未连接到GPS时,它应该在后台回退到网络提供商(同时应该从Wi-Fi获得准确的位置)。
欢迎您在设置定期收听之前使用interval
方法。这将立即返回,但准确性可能会有所不同。
编辑:如果以上不起作用...... 在我的项目中,我一直在后台使用融合提供商,具有均衡的电源优先级。然后我要求额外的标准GPS提供商。
答案 1 :(得分:0)
是的,我可以使用以下代码段获取最后一个已知位置。
/**
* Remove the user location update
*/
public void removeLocationUpdate() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
//Remove the location update
LocationServices.FusedLocationApi.removeLocationUpdates(
mGoogleApiClient, mLocationUpdatePendingIntent);
//A status message updated to the UI
mAppUtilInstance.broadcastStatusMessage(mContext,
Constants.STATUS_MSG_116, Constants.STATUS_CODE_116);
}
if (Constants.locationInformationEntity == null) {
//Getting the last known location
Location mLocationIntentObject = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
if (mLocationIntentObject != null) {
//Storing as entity
mAppUtilInstance.setLocationInformationEntity(mContext,
mLocationIntentObject);
}
}
}
当我删除位置更新时,检查api是否在室内时提供位置信息。如果API未能提供,则在删除位置请求时获取最后的已知位置信息。
希望这个能帮助那些在融合地点工作的人。