package com.liyu.fakeweather.location;
import android.content.Context;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClientOption;
/**
* Created by liyu on 2016/11/2.
*/
public class LocationClient {
private com.baidu.location.LocationClient realClient;
private static volatile LocationClient proxyClient;
private LocationClient(Context context) {
realClient = new com.baidu.location.LocationClient(context);
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setCoorType("bd09ll");
option.setIsNeedAddress(true);
//设置百度定位参数
realClient.setLocOption(option);
}
public static LocationClient get(Context context) {
if (proxyClient == null) {
synchronized (com.baidu.location.LocationClient.class) {
if (proxyClient == null) {
proxyClient = new LocationClient(context.getApplicationContext());
}
}
}
return proxyClient;
}
public void locate(final BDLocationListener bdLocationListener) {
final BDLocationListener realListener = new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
bdLocationListener.onReceiveLocation(bdLocation);
//防止内存溢出
realClient.unRegisterLocationListener(this);
stop();
}
};
realClient.registerLocationListener(realListener);
if (!realClient.isStarted()) {
realClient.start();
}
}
public BDLocation getLastKnownLocation() {
return realClient.getLastKnownLocation();
}
public void stop() {
realClient.stop();
}
}