- 在控制台创建一个应用,选择好服务,配置APP key的SHA1值.
- 下载开发包后开始配置:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
libs:
arm64-v8a
armeabi
x86_64
BaiduLBS_Android.jar
sourceSets {
main {
jniLibs.srcDirs = ['libs']
jni.srcDirs = []
}
}
dependencies {
implementation files('libs\\BaiduLBS_Android.jar')
}
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="I2RkUi0iUtub0G0qpGizQDc" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
</application>
- 官方Demo中有个工具类用起来非常方便:
public class LocationService {
private static LocationClient client = null;
private static LocationClientOption mOption;
private static LocationClientOption DIYoption;
private Object objLock;
public LocationService(Context locationContext) {
objLock = new Object();
synchronized (objLock) {
if (client == null) {
client = new LocationClient(locationContext);
client.setLocOption(getDefaultLocationClientOption());
}
}
}
public boolean registerListener(BDAbstractLocationListener listener) {
boolean isSuccess = false;
if (listener != null) {
client.registerLocationListener(listener);
isSuccess = true;
}
return isSuccess;
}
public void unregisterListener(BDAbstractLocationListener listener) {
if (listener != null) {
client.unRegisterLocationListener(listener);
}
}
public String getSDKVersion() {
if (client != null) {
String version = client.getVersion();
return version;
}
return null;
}
public static boolean setLocationOption(LocationClientOption option) {
boolean isSuccess = false;
if (option != null) {
if (client.isStarted()) {
client.stop();
}
DIYoption = option;
client.setLocOption(option);
}
return isSuccess;
}
public void enableAssistanLocation(WebView webView) {
if (client != null) {
client.enableAssistantLocation(webView);
}
}
public void disableAssistantLocation() {
if (client != null) {
client.disableAssistantLocation();
}
}
public LocationClientOption getDefaultLocationClientOption() {
if (mOption == null) {
mOption = new LocationClientOption();
mOption.setLocationMode(LocationMode.Hight_Accuracy);
mOption.setCoorType( "bd09ll" );
mOption.setScanSpan(3000);
mOption.setIsNeedAddress(true);
mOption.setIsNeedLocationDescribe(true);
mOption.setNeedDeviceDirect(false);
mOption.setLocationNotify(false);
mOption.setIgnoreKillProcess(true);
mOption.setIsNeedLocationDescribe(true);
mOption.setIsNeedLocationPoiList(true);
mOption.SetIgnoreCacheException(false);
mOption.setOpenGps(true);
mOption.setIsNeedAltitude(false);
}
return mOption;
}
public LocationClientOption getOption() {
if (DIYoption == null) {
DIYoption = new LocationClientOption();
}
return DIYoption;
}
public void start() {
synchronized (objLock) {
if (client != null && !client.isStarted()) {
client.start();
}
}
}
public void requestLocation() {
if (client != null) {
client.requestLocation();
}
}
public void stop() {
synchronized (objLock) {
if (client != null && client.isStarted()) {
client.stop();
}
}
}
public boolean isStart() {
return client.isStarted();
}
public boolean requestHotSpotState() {
return client.requestHotSpotState();
}
}
public class MyApplication extends DaggerApplication {
public LocationService locationService;
@Override
public void onCreate() {
locationService = new LocationService(getApplicationContext());
}
}
public class VideoPlayerActivity extends BaseMvvmActivity<ActivityVideoPlayerBinding, VideoVM> {
private LocationService locationService;
private BDAbstractLocationListener mBDAbstractLocationListener = new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
mCountry = bdLocation.getCountry();
ToastUtils.showLong("中国");
if (BuildConfig.DEBUG) {
LogUtils.e("查看获取到的国家", mCountry);
}
}
};
@Override
protected void onCreate(@androidx.annotation.Nullable Bundle savedInstanceState) {
locationService = ((MyApplication) getApplication()).locationService;
locationService.registerListener(mBDAbstractLocationListener);
locationService.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
locationService.unregisterListener(mBDAbstractLocationListener);
locationService.stop();
}
}