Android开发googleMap+GPS定位中的关于Criteria一知半解问题
2011-07-25 12:18
676 查看
正在做一个有关googleMap+GPS的应用,之前有一个困扰近一个月的莫名问题,就是程序对googlemap初始化时出现异常之后应用便很“优雅”的挂掉,但值得注意的问题是在模拟器上跑这个应用,嘛问题也没有,在真机上,多数的真机“挂机”,只有少数的真机正常。这个对于java程序员来说,绝不亚于uncatch exception异常的打击。
今天仔细看书,看到如下一段代码:
view plaincopy to clipboardprint?LocationManager locationManager = (LocationManager)SH.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
这段选中给“Ctrl+/”掉,之后再几部android测试手机上挨个跑一次,竟全部顺利通过!
挨行解掉注释行之后发现问题是出在criteria.setAccuracy(ACCURACY_FINE)这个方法上,于是索性尝试一下将 ACCURACY_FINE更改为 Criteria.ACCURACY_COARSE,问题迎刃而解,可见问题就是在这“精确度”的问题上,把精确度设置为模糊,所有手机跑起来了。同时未解的问题来了,android手机一般都是支持精确定位的(AGPS ),这个我在各个论坛中看到有人说过,但就是不说该如何系统设置这种GPS定位模式,你们知道吗?
/article/8574396.html
今天仔细看书,看到如下一段代码:
view plaincopy to clipboardprint?LocationManager locationManager = (LocationManager)SH.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
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,上面所示代码便映入眼帘,或许是灵光突现,想想之前莫名的错误,直接便把
view plaincopy to clipboardprint?criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW);
这段选中给“Ctrl+/”掉,之后再几部android测试手机上挨个跑一次,竟全部顺利通过!
挨行解掉注释行之后发现问题是出在criteria.setAccuracy(ACCURACY_FINE)这个方法上,于是索性尝试一下将 ACCURACY_FINE更改为 Criteria.ACCURACY_COARSE,问题迎刃而解,可见问题就是在这“精确度”的问题上,把精确度设置为模糊,所有手机跑起来了。同时未解的问题来了,android手机一般都是支持精确定位的(AGPS ),这个我在各个论坛中看到有人说过,但就是不说该如何系统设置这种GPS定位模式,你们知道吗?
/article/8574396.html
相关文章推荐
- Android开发googleMap+GPS定位中的关于Criteria一知半解问题
- Android开发googleMap+GPS定位中的关于Criteria一知半解问题
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
- android google map 开发中的常见问题及解决(无法获取 google map apiKey 和Couldn't get connection factory client)
- android google map 开发中的常见问题及解决(无法获取 google map apiKey 和Couldn't get connection factory client)
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
- Android移动开发-通过自定义算法代码来纠偏地图由GPS定位到的经纬度在地图上显示或解析位置时出现偏移的问题
- Android应用百度地图开发定位的问题,新手求大神帮忙看下
- android上的GPS定位的问题
- 关于搭建Android开发平台问题总结
- android 关于使用androidStudio开发串口问题
- 关于Android开发中手机底部虚拟键的隐藏问题
- 关于android开发出现“你的手机上未安装应用程序”问题
- 彻底解决Android GPS没法定位这一顽固问题
- android开发中关于Bugly热更新的问题
- 关于Android开发中有关权限的问题
- 使用Google Map Api在Android平台上开发地图应用1
- 关于android开发时在v7包下无法加载recyclerview的问题
- 使用Google Map Api在Android平台上开发地图应用2