package com.jaf.biubiu; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.jaf.jcore.Application; /** * Created by jarrah on 2015/4/14. */ public class LocationManager { public static LocationManager sLocationManager; LocationClient mLocationClient; public LocationManager() { SDKInitializer.initialize(Application.getInstance().getApplicationContext()); LocationClientOption option = new LocationClientOption(); option.setIsNeedAddress(true); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); option.setOpenGps(true); //是否打开GPS option.setCoorType("bd09ll"); //设置返回值的坐标类型。 option.setProdName("LocationDemo"); //设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。 option.setScanSpan(1000); mLocationClient = new LocationClient(Application.getInstance().getApplicationContext()); mLocationClient.setLocOption(option); } public synchronized static LocationManager getInstance() { if (sLocationManager == null) { sLocationManager = new LocationManager(); } return sLocationManager; } public void requestLocation(JLsn l) { mLocationClient.registerLocationListener(l); mLocationClient.start(); mLocationClient.requestLocation(); } public static class JLsn implements BDLocationListener { @Override public void onReceiveLocation(BDLocation bdLocation) { if(bdLocation == null) { L.dbg("baidu sdk no location info "); onNoResult(bdLocation); return; } L.dbg("baidu sdk addr:%s city:%s", bdLocation.getAddrStr(), bdLocation.getCity()); onResult(bdLocation.getLatitude(), bdLocation.getLongitude(), bdLocation); Application.getInstance().getAppExtraInfo().lat = bdLocation.getLatitude(); Application.getInstance().getAppExtraInfo().lon = bdLocation.getLongitude(); Application.getInstance().getAppExtraInfo().addrStr = bdLocation.getAddrStr(); LocationManager.getInstance().mLocationClient.stop(); LocationManager.getInstance().mLocationClient.unRegisterLocationListener(this); } public void onNoResult(BDLocation bdLocation) { } public void onResult(double latitude, double longitude, BDLocation location) { } } }