LocationManager Android自动定位使用以及注意事项(个人)

先上局部代码

	/**
	 * 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() {

				@Override
				public void onLocationChanged(Location location) {
					// TODO Auto-generated method stub
					Log.i(BMapApiApplication.SOFTNAME, "location");
					if (location != null) {
						/**
						 * 定位解析以及处理
						 */
						iBinder.sendPacket(new LocationPacket(location, iBinder));
					}
				}

				@Override
				public void onProviderDisabled(String provider) {
					// TODO Auto-generated method stub
					locationManager.requestLocationUpdates(
							LocationManager.NETWORK_PROVIDER, location_time,
							20, locationListener);
					Log.i(BMapApiApplication.SOFTNAME, provider);
				}

				@Override
				public void onProviderEnabled(String provider) {
					// TODO Auto-generated method stub
					locationManager.requestLocationUpdates(
							LocationManager.GPS_PROVIDER, location_time, 20,
							locationListener);
					Log.i(BMapApiApplication.SOFTNAME, provider);
				}

				@Override
				public 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的话就是根据参数来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值