定位问题[获取当前可用的最精确的位置]

humanpally 2013-05-29 01:41:36
我在做一个定位的服务,需要每隔1分钟将当前所在的位置发送到服务器上,我原先的做法只使用了GPS_PROVIDER,然后在listener的onLocationChanged中,用了个异步发送信息到服务器,一般情况下,只需要使用GPS信息就行,但是有时候在室内GPS不可用时,需要使用其它的定位方式,像Google Map一样,当手机的GPS定位不可用时会采用另外一种方式定位(虽然有时候误差比较大)
我在网上看到一段代码,是给每个provider都增加了一个listener,

public boolean testProviders() {
Log.e(LOG_TAG, "testProviders");
String location_context = Context.LOCATION_SERVICE;
locationmanager = (LocationManager) getSystemService(location_context);
List<String> providers = locationmanager.getProviders(true);
for (String provider : providers) {
Log.e(LOG_TAG, "registering provider " + provider);
listener = new LocationListener() {
public void onLocationChanged(Location location) {
// keep checking the location - until we have
// what we need
//if (!checkLoc(location)) {
Log.e(LOG_TAG, "onLocationChanged");
locationDetermined = checkLoc(location);
//}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
};
locationmanager.requestLocationUpdates(provider, 0,
0, listener);//设置成1分钟
}
Log.e(LOG_TAG, "getting updates");
return true;
}

现在的问题是有多个listener,每一个listener都是独立的,在onLocationChanged里面上传数据的方法不太适合。我的想法是,用一个List来存储这些信息,每个listener往list里面增加信息,然后用一个线程1分钟检查list一次,取里面最精确的值上传。但是我总感觉这个方法代价有点大,是否真的有必要监听每一个设备,不知道有没有更简便的方法,求助于各位。
...全文
175 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
海绵宝宝_ 2013-05-29
  • 打赏
  • 举报
回复
GPS+GPRS+WIFI。精准度依次是减少的。。。。。。。 为了精准度用一个List来存储这些信息,每个listener往list里面增加信息,然后用一个线程1分钟检查list一次,取里面最精确的值上传。 这个方法目前确实是最好的。。。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧