LocationManager Android自动定位使用以及注意事项(个人)
16lz
2021-01-23
先上局部代码
/** * android 定位 */void initGoogleLocation() {if (locationListener == null) {locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);if (locationManager == null) {return;}Location lastlocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);if (lastlocation != null) {BMapApiApplication.userVo.setLatitude((int) (lastlocation.getLatitude() * 1e6));BMapApiApplication.userVo.setLongitude((int) (lastlocation.getLongitude() * 1e6));}locationListener = new android.location.LocationListener() {@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stubLog.i(BMapApiApplication.SOFTNAME, "location");if (location != null) {/** * 定位解析以及处理 */iBinder.sendPacket(new LocationPacket(location, iBinder));}}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stublocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, location_time,20, locationListener);Log.i(BMapApiApplication.SOFTNAME, provider);}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stublocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, location_time, 20,locationListener);Log.i(BMapApiApplication.SOFTNAME, provider);}@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {// TODO Auto-generated method stub}};/** * 请求定位 */locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, location_time, 20,locationListener);} else {if (locationManager != null) {locationManager.removeUpdates(locationListener);locationListener = null;}}}
此代码为目前使用正常,不过有时候 怎么都不能触发,后来发现重启手机即可,具体原因不详。 注意事项:我一请求就是GPS,而不是网络,经调试发现,如果开始请求为网络,如果软件中途开启GPS,则不能监听到GPS的开启,所以需要先GPS监听无GPS后启用网络,而如果再开启GPS的话还是能监听到的再转换GPS监听位置。网络定位经常不是受参数影响,说是 最小时间最小距离,就是说 有可能大于这个距离与时间,,网络定位无论怎么请求都不会有,它自动在大于这个参数时间距离 后随机触发,GPS的话就是根据参数来的
更多相关文章
- 2010.11.27———android 展示网络上的图片和播放视频
- Android 5.0以上移动网络开关
- Android网络应用接口
- 【Android】入门级连接网络示例: 网页浏览和播放网络MP3
- android 关于tts的一些参数
- ListView实用参数
- Android build.gradle 中 使用 buildConfigField 动态设置参数,de
- 判断android网络连接
- Android检测网络是否可用