diff --git a/app/build.gradle b/app/build.gradle index c0f072b..857a0a6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,8 +22,8 @@ android { applicationId "com.zcshou.gogogo" minSdkVersion 27 targetSdkVersion 32 - versionCode 192 - versionName '1.9.2' // 语义化版本 https://semver.org/lang/zh-CN/ + versionCode 1100 + versionName '1.10.0' // 语义化版本 https://semver.org/lang/zh-CN/ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resConfigs 'zh', 'zh-rCN', 'en', 'en-rUS' // 仅保留中文和英文 ndk { diff --git a/app/libs/BaiduLBS_Android.jar b/app/libs/BaiduLBS_Android.jar index 0377c58..259a2e1 100644 Binary files a/app/libs/BaiduLBS_Android.jar and b/app/libs/BaiduLBS_Android.jar differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_4_2.so b/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_4_2.so deleted file mode 100644 index b4d95f8..0000000 Binary files a/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_4_2.so and /dev/null differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_5_0.so b/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_5_0.so new file mode 100644 index 0000000..71cebac Binary files /dev/null and b/app/libs/arm64-v8a/libBaiduMapSDK_base_v7_5_0.so differ diff --git a/app/libs/arm64-v8a/libBaiduMapSDK_map_v7_4_2.so b/app/libs/arm64-v8a/libBaiduMapSDK_map_v7_5_0.so similarity index 55% rename from app/libs/arm64-v8a/libBaiduMapSDK_map_v7_4_2.so rename to app/libs/arm64-v8a/libBaiduMapSDK_map_v7_5_0.so index 3d9265f..8b1b578 100644 Binary files a/app/libs/arm64-v8a/libBaiduMapSDK_map_v7_4_2.so and b/app/libs/arm64-v8a/libBaiduMapSDK_map_v7_5_0.so differ diff --git a/app/libs/arm64-v8a/liblocSDK8a.so b/app/libs/arm64-v8a/liblocSDK8a.so deleted file mode 100644 index cd47e16..0000000 Binary files a/app/libs/arm64-v8a/liblocSDK8a.so and /dev/null differ diff --git a/app/libs/arm64-v8a/liblocSDK8b.so b/app/libs/arm64-v8a/liblocSDK8b.so new file mode 100644 index 0000000..9bd868a Binary files /dev/null and b/app/libs/arm64-v8a/liblocSDK8b.so differ diff --git a/app/src/main/java/com/zcshou/gogogo/GoApplication.java b/app/src/main/java/com/zcshou/gogogo/GoApplication.java index 5d1cef3..c913314 100644 --- a/app/src/main/java/com/zcshou/gogogo/GoApplication.java +++ b/app/src/main/java/com/zcshou/gogogo/GoApplication.java @@ -2,8 +2,11 @@ package com.zcshou.gogogo; import android.app.Application; +import com.baidu.location.LocationClient; +import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; +import com.baidu.mapapi.common.BaiduMapSDKException; import com.elvishew.xlog.LogConfiguration; import com.elvishew.xlog.LogLevel; import com.elvishew.xlog.XLog; @@ -25,9 +28,19 @@ public class GoApplication extends Application { public void onCreate() { super.onCreate(); - // 百度地图 SDK 初始化 - SDKInitializer.initialize(getApplicationContext()); - // + // 百度地图 7.5 开始,要求必须同意隐私政策,默认为false + SDKInitializer.setAgreePrivacy(this, true); + // 百度定位 7.5 开始,要求必须同意隐私政策,默认为false(官方说可以统一为以上接口,但实际测试并不行,定位还是需要单独设置) + LocationClient.setAgreePrivacy(true); + + try { + // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext + SDKInitializer.initialize(this); + SDKInitializer.setCoordType(CoordType.BD09LL); + } catch (BaiduMapSDKException e) { + e.printStackTrace(); + } + initXlog(); } diff --git a/app/src/main/java/com/zcshou/gogogo/MainActivity.java b/app/src/main/java/com/zcshou/gogogo/MainActivity.java index 8c01719..cc20843 100644 --- a/app/src/main/java/com/zcshou/gogogo/MainActivity.java +++ b/app/src/main/java/com/zcshou/gogogo/MainActivity.java @@ -546,102 +546,106 @@ public class MainActivity extends BaseActivity //开启地图的定位图层 private void initBaiduLocation() { - // 定位初始化 - mLocClient = new LocationClient(this); - mLocClient.registerLocationListener(new BDAbstractLocationListener() { - @Override - public void onReceiveLocation(BDLocation bdLocation) { - if (bdLocation == null || mMapView == null) {// mapview 销毁后不在处理新接收的位置 - return; - } + try { + // 定位初始化 + mLocClient = new LocationClient(this); + mLocClient.registerLocationListener(new BDAbstractLocationListener() { + @Override + public void onReceiveLocation(BDLocation bdLocation) { + if (bdLocation == null || mMapView == null) {// mapview 销毁后不在处理新接收的位置 + return; + } - mCurrentCity = bdLocation.getCity(); - mCurrentLat = bdLocation.getLatitude(); - mCurrentLon = bdLocation.getLongitude(); - MyLocationData locData = new MyLocationData.Builder() - .accuracy(bdLocation.getRadius()) - .direction(mCurrentDirection)// 此处设置开发者获取到的方向信息,顺时针0-360 - .latitude(bdLocation.getLatitude()) - .longitude(bdLocation.getLongitude()).build(); - mBaiduMap.setMyLocationData(locData); - MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null); - mBaiduMap.setMyLocationConfiguration(configuration); + mCurrentCity = bdLocation.getCity(); + mCurrentLat = bdLocation.getLatitude(); + mCurrentLon = bdLocation.getLongitude(); + MyLocationData locData = new MyLocationData.Builder() + .accuracy(bdLocation.getRadius()) + .direction(mCurrentDirection)// 此处设置开发者获取到的方向信息,顺时针0-360 + .latitude(bdLocation.getLatitude()) + .longitude(bdLocation.getLongitude()).build(); + mBaiduMap.setMyLocationData(locData); + MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null); + mBaiduMap.setMyLocationConfiguration(configuration); - if (isMove) { - isMove = false; - mBaiduMap.clear(); - mMarkLatLngMap = null; + if (isMove) { + isMove = false; + mBaiduMap.clear(); + mMarkLatLngMap = null; - if (GoUtils.isWifiEnabled(MainActivity.this)) { - GoUtils.showDisableWifiDialog(MainActivity.this); + if (GoUtils.isWifiEnabled(MainActivity.this)) { + GoUtils.showDisableWifiDialog(MainActivity.this); + } + } + + /* 如果出现错误,则需要重新请求位置 */ + int err = bdLocation.getLocType(); + if (err == BDLocation.TypeCriteriaException || err == BDLocation.TypeNetWorkException) { + mLocClient.requestLocation(); /* 请求位置 */ + } else { + if (isFirstLoc) { + isFirstLoc = false; + // 这里记录百度地图返回的位置 + mMarkLatLngMap = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude()); + MapStatus.Builder builder = new MapStatus.Builder(); + builder.target(mMarkLatLngMap).zoom(18.0f); + mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); + + XLog.i("First Baidu LatLng: " + mMarkLatLngMap); + + // 这里将百度地图位置转换为 GPS 坐标 + double[] latLng = MapUtils.bd2wgs(mMarkLatLngMap.longitude, mMarkLatLngMap.latitude); + mCurLng = latLng[0]; + mCurLat = latLng[1]; + } } } - - /* 如果出现错误,则需要重新请求位置 */ - int err = bdLocation.getLocType(); - if (err == BDLocation.TypeCriteriaException || err == BDLocation.TypeNetWorkException) { - mLocClient.requestLocation(); /* 请求位置 */ - } else { - if (isFirstLoc) { - isFirstLoc = false; - // 这里记录百度地图返回的位置 - mMarkLatLngMap = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude()); - MapStatus.Builder builder = new MapStatus.Builder(); - builder.target(mMarkLatLngMap).zoom(18.0f); - mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); - - XLog.i("First Baidu LatLng: " + mMarkLatLngMap); - - // 这里将百度地图位置转换为 GPS 坐标 - double[] latLng = MapUtils.bd2wgs(mMarkLatLngMap.longitude, mMarkLatLngMap.latitude); - mCurLng = latLng[0]; - mCurLat = latLng[1]; - } + /** + * 错误的状态码 + * http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/error-code + *

+ * 回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题 + * + * @param locType 当前定位类型 + * @param diagnosticType 诊断类型(1~9) + * @param diagnosticMessage 具体的诊断信息释义 + */ + public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) { + XLog.i("Baidu ERROR: " + locType + "-" + diagnosticType + "-" + diagnosticMessage); } - } - /** - * 错误的状态码 - * http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/error-code - *

- * 回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题 - * - * @param locType 当前定位类型 - * @param diagnosticType 诊断类型(1~9) - * @param diagnosticMessage 具体的诊断信息释义 - */ - public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) { - XLog.i("Baidu ERROR: " + locType + "-" + diagnosticType + "-" + diagnosticMessage); - } - }); - LocationClientOption locationOption = new LocationClientOption(); - //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 - locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); - //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll; - locationOption.setCoorType("bd09ll"); - //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的 - locationOption.setScanSpan(1000); - //可选,设置是否需要地址信息,默认不需要 - locationOption.setIsNeedAddress(true); - //可选,设置是否需要设备方向结果 - locationOption.setNeedDeviceDirect(false); - //可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 - locationOption.setLocationNotify(true); - //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 - locationOption.setIgnoreKillProcess(true); - //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” - locationOption.setIsNeedLocationDescribe(false); - //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 - locationOption.setIsNeedLocationPoiList(false); - //可选,默认false,设置是否收集CRASH信息,默认收集 - locationOption.SetIgnoreCacheException(true); - //可选,默认false,设置是否开启Gps定位 - locationOption.setOpenGps(true); - //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用 - locationOption.setIsNeedAltitude(false); - //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用 - mLocClient.setLocOption(locationOption); - //开始定位 - mLocClient.start(); + }); + LocationClientOption locationOption = new LocationClientOption(); + //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 + locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); + //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll; + locationOption.setCoorType("bd09ll"); + //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的 + locationOption.setScanSpan(1000); + //可选,设置是否需要地址信息,默认不需要 + locationOption.setIsNeedAddress(true); + //可选,设置是否需要设备方向结果 + locationOption.setNeedDeviceDirect(false); + //可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 + locationOption.setLocationNotify(true); + //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 + locationOption.setIgnoreKillProcess(true); + //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” + locationOption.setIsNeedLocationDescribe(false); + //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 + locationOption.setIsNeedLocationPoiList(false); + //可选,默认false,设置是否收集CRASH信息,默认收集 + locationOption.SetIgnoreCacheException(true); + //可选,默认false,设置是否开启Gps定位 + locationOption.setOpenGps(true); + //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用 + locationOption.setIsNeedAltitude(false); + //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用 + mLocClient.setLocOption(locationOption); + //开始定位 + mLocClient.start(); + } catch (Exception e) { + e.printStackTrace(); + } } //地图上各按键的监听 diff --git a/app/src/main/java/com/zcshou/gogogo/WelcomeActivity.java b/app/src/main/java/com/zcshou/gogogo/WelcomeActivity.java index 04f3d1a..1e6bd0a 100644 --- a/app/src/main/java/com/zcshou/gogogo/WelcomeActivity.java +++ b/app/src/main/java/com/zcshou/gogogo/WelcomeActivity.java @@ -36,7 +36,6 @@ public class WelcomeActivity extends AppCompatActivity { private static final int SDK_PERMISSION_REQUEST = 127; private static final ArrayList ReqPermissions = new ArrayList<>(); - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);