Android开发googleMap+GPS定位中的关于Criteria一知半解问题

 

正在做一个有关googleMap+GPS的应用,之前有一个困扰近一个月的莫名问题,就是程序对googlemap初始化时出现异常之后应用便很“优雅”的挂掉,但值得注意的问题是在模拟器上跑这个应用,嘛问题也没有,在真机上,多数的真机“挂机”,只有少数的真机正常。这个对于java程序员来说,绝不亚于uncatch exception异常的打击。

今天仔细看书,看到如下一段代码:

  1. LocationManager locationManager = (LocationManager)SH.getSystemService(Context.LOCATION_SERVICE);  
  2.               
  3.                   
  4.                 Criteria criteria = new Criteria();  
  5.                 criteria.setAccuracy(Criteria.ACCURACY_COARSE);  
  6.                 criteria.setAltitudeRequired(false);  
  7.                 criteria.setBearingRequired(false);  
  8.                 criteria.setCostAllowed(true);  
  9.                 criteria.setPowerRequirement(Criteria.POWER_LOW);  
  10.                 String provider = locationManager.getBestProvider(criteria, true);  
  11.                   
  12.                 Location location = locationManager.getLastKnownLocation(provider);  

主要说说这个Criteria是个什么玩意,Criteria直译很明显是“精确度”的意思,那么在android的GPS开发中Criteria类提供若干个查询条件:

(1) public void setAccuracy( int accuracy )

位置解析的精度,高或低,参数: Criteria. ACCURACY_FINE,精确模式; Criteria. ACCURACY_COARSE,模糊模式;

(2) public void setAltitudeRequired(boolean altitudeRequired )

是否提供海拔高度信息,是或否

(3) public void setBearingRequired( boolean bearingRequired )

是否提供方向信息,是或否

(4) public void setCostAllowed( boolean costAllowed )

是否允许运营商计费,是或否

(5) public void setPowerRequirement( int level )

电池消耗,无、低、中、高,参数 Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria. POWER_MEDIUM, or Criteria. POWER_HIGH,

(6) public void setSpeedRequired( boolean speedRequired )

是否提供速度信息,是或否

 

好,说说“ 神奇 ”的问题,早上刚打开eclipse,上面所示代码便映入眼帘,或许是灵光突现,想想之前莫名的错误,直接便把

  1. criteria.setAccuracy(Criteria.ACCURACY_FINE);  
  2. criteria.setAltitudeRequired(false);  
  3. criteria.setBearingRequired(false);  
  4. criteria.setCostAllowed(true);  
  5. criteria.setPowerRequirement(Criteria.POWER_LOW);  

这段选中给“Ctrl+/”掉,之后再几部android测试手机上挨个跑一次,竟全部顺利通过!

挨行解掉注释行之后发现问题是出在criteria.setAccuracy(ACCURACY_FINE)这个方法上,于是索性尝试一下将 ACCURACY_FINE更改为 Criteria.ACCURACY_COARSE,问题迎刃而解,可见问题就是在这“精确度”的问题上,把精确度设置为模糊,所有手机跑起来了。同时未解的问题来了,android手机一般都是支持精确定位的(AGPS ),这个我在各个论坛中看到有人说过,但就是不说该如何系统设置这种GPS定位模式,你们知道吗?

http://blog.csdn.net/tiewantn/article/details/6093592

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值