android客户端学习-使用高德地图api每5秒向服务端传回配送员所在位置
首先后台运行,使用service,因为只需要获取经纬度,所以使用了Android系统定位apipublic class MapService extends Service {private UpService upService;@Overridepublic void onCreate() {loginService = new Logi...
·
首先后台运行,使用service,因为只需要获取经纬度,所以使用了Android系统定位api
public class MapService extends Service { private upService upService; private AMapLocationClient mlocationClient; @Override public void onCreate() { upService = new upService(); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { timerhandler(); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } private void timerhandler(){ final Handler mHandler = new Handler(); Runnable r = new Runnable() { @Override public void run() { initLocationOption(); //每隔10s循环执行run方法 mHandler.postDelayed(this, 10000); } }; //主线程中调用: mHandler.postDelayed(r, 100);//延时100毫秒 } /** * 使用高德地图api **/ private void initLocationOption() { //初始化定位 mlocationClient = new AMapLocationClient(this); //初始化定位参数 AMapLocationClientOption mLocationOption = new AMapLocationClientOption(); //设置定位回调监听 mlocationClient.setLocationListener(new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { double lat = aMapLocation.getLatitude();//获取纬度 double lng = aMapLocation.getLongitude(); upService.setDeliveryManLocation(employid,lat,lng); if(null != mlocationClient){ mlocationClient.onDestroy(); } } }); //设置为高精度定位模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 mlocationClient.startLocation();//启动定位 } }
更多推荐
已为社区贡献3条内容
所有评论(0)