fix: 修改导航功能横竖屏切换

This commit is contained in:
2023-01-29 15:07:05 +08:00
18 changed files with 229 additions and 157 deletions

View File

@@ -12,8 +12,8 @@ android {
applicationId "com.navinfo.outdoor" applicationId "com.navinfo.outdoor"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 30 targetSdkVersion 30
versionCode 42 versionCode 43
versionName "8.230110" versionName "8.230113"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk { ndk {
@@ -133,16 +133,16 @@ dependencies {
//腾讯地图 //腾讯地图
// 地图库 // 地图库
implementation 'com.tencent.map:tencent-map-vector-sdk:4.5.4' implementation 'com.tencent.map:tencent-map-vector-sdk:4.5.10'
// 地图组件库,包括小车平移、点聚合等组件功能,详见开发指南。 // // 地图组件库,包括小车平移、点聚合等组件功能,详见开发指南。
implementation 'com.tencent.map:sdk-utilities:1.0.6' // implementation 'com.tencent.map:sdk-utilities:1.0.6'
// 导航库 // 导航库
implementation "com.tencent.map:tencent-map-nav-sdk:5.3.8.1" implementation ("com.tencent.map:tencent-map-nav-sdk:5.4.2.3")
// 导航依赖库 // 导航依赖库
implementation 'com.tencent.map:tencent-map-nav-surport:1.0.2.9' implementation ("com.tencent.map:tencent-map-nav-surport:1.1.0.1")
// //腾讯地图 定位 // //腾讯地图 定位
// implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.6' // implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.4.9'
// 权限请求框架https://github.com/getActivity/XXPermissions // 权限请求框架https://github.com/getActivity/XXPermissions
implementation 'com.github.getActivity:XXPermissions:11.6' implementation 'com.github.getActivity:XXPermissions:11.6'

View File

@@ -60,7 +60,7 @@
tools:targetApi="n"> tools:targetApi="n">
<!-- <activity--> <!-- <activity-->
<!-- android:name=".NaviActivity"--> <!-- android:name=".NaviActivity"-->
<!-- android:exported="true">--> <!-- android:exported="false">-->
<!-- <meta-data--> <!-- <meta-data-->
<!-- android:name="android.app.lib_name"--> <!-- android:name="android.app.lib_name"-->
<!-- android:value="" />--> <!-- android:value="" />-->
@@ -92,7 +92,8 @@
<!-- android:value="EWWBZ-2PB62-6JXUL-CEX7G-N7UE6-XRB4V" /> --> <!-- android:value="EWWBZ-2PB62-6JXUL-CEX7G-N7UE6-XRB4V" /> -->
<meta-data <meta-data
android:name="TencentMapSDK" android:name="TencentMapSDK"
android:value="7UEBZ-TWAYK-5JFJM-A5SJI-FA4U6-3IBMX" /> <!-- 今日头屏幕适配 --> android:value="7UEBZ-TWAYK-5JFJM-A5SJI-FA4U6-3IBMX" />
<!-- 今日头屏幕适配 -->
<meta-data <meta-data
android:name="design_width_in_dp" android:name="design_width_in_dp"
android:value="360" /> android:value="360" />
@@ -155,13 +156,13 @@
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".activity.NaviCarActivity" android:name=".activity.NaviCarActivity"
android:screenOrientation="landscape" /> android:screenOrientation="sensor" />
<activity <activity
android:name=".activity.NaviRideActivity" android:name=".activity.NaviRideActivity"
android:screenOrientation="landscape" /> android:screenOrientation="sensor" />
<activity <activity
android:name=".activity.NaviWalkActivity" android:name=".activity.NaviWalkActivity"
android:screenOrientation="landscape" /> android:screenOrientation="sensor" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"

View File

@@ -109,6 +109,7 @@ import com.tencent.map.navi.TencentNaviManager;
import com.tencent.map.navi.TencentRouteSearchCallback; import com.tencent.map.navi.TencentRouteSearchCallback;
import com.tencent.map.navi.data.AttachedLocation; import com.tencent.map.navi.data.AttachedLocation;
import com.tencent.map.navi.data.CalcRouteResult; import com.tencent.map.navi.data.CalcRouteResult;
import com.tencent.map.navi.data.IdleRangeInfo;
import com.tencent.map.navi.data.NaviPoi; import com.tencent.map.navi.data.NaviPoi;
import com.tencent.map.navi.data.NaviTts; import com.tencent.map.navi.data.NaviTts;
import com.tencent.map.navi.data.ParallelRoadStatus; import com.tencent.map.navi.data.ParallelRoadStatus;
@@ -1134,6 +1135,11 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic
public int onVoiceBroadcast(NaviTts naviTts) { public int onVoiceBroadcast(NaviTts naviTts) {
return 0; return 0;
} }
@Override
public void onEnterIdleSection(IdleRangeInfo idleRangeInfo) {
}
}); });
} }
return polyline; return polyline;

View File

@@ -32,6 +32,7 @@ import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiDatabase;
import com.navinfo.outdoor.util.BackHandlerHelper; import com.navinfo.outdoor.util.BackHandlerHelper;
import com.navinfo.outdoor.util.LocationLifeCycle; import com.navinfo.outdoor.util.LocationLifeCycle;
import com.navinfo.outdoor.util.MyTecentLocationSource;
import com.navinfo.outdoor.util.NaviUtils; import com.navinfo.outdoor.util.NaviUtils;
import com.navinfo.outdoor.util.NoSlideViewPager; import com.navinfo.outdoor.util.NoSlideViewPager;
@@ -120,30 +121,8 @@ public class HomeActivity extends BaseActivity {
boolean result = handler.sendEmptyMessageDelayed(0x101, 1000*60*(int)(10*Math.random())); boolean result = handler.sendEmptyMessageDelayed(0x101, 1000*60*(int)(10*Math.random()));
Log.d("HomeActivity", "作弊检查:"+result); Log.d("HomeActivity", "作弊检查:"+result);
LogConfiguration logConfiguration = new LogConfiguration.Builder()
// .enableStackTrace(5)
.enableBorder()
.tag("XLog").build();
Printer androidPrinter = new AndroidPrinter(true); // 通过 android.util.Log 打印日志的打印器
Printer consolePrinter = new ConsolePrinter(); // 通过 System.out 打印日志到控制台的打印器
Printer filePrinter = new FilePrinter // 打印日志到文件的打印器
.Builder(Constant.LOG_FOLDER) // 指定保存日志文件的路径
.fileNameGenerator(new LevelFileNameGenerator()) // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")
.flattener(new ClassicFlattener())
.build();
// 初始化XLog
XLog.init( // 初始化 XLog
logConfiguration, // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()
androidPrinter, // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)
consolePrinter,
filePrinter);
// 注册位置更新的lifeCycle // 注册位置更新的lifeCycle
getLifecycle().addObserver(LocationLifeCycle.getInstance()); getLifecycle().addObserver(LocationLifeCycle.getInstance());
// 尝试定位
LocationLifeCycle.getInstance().init(getApplicationContext());
// 开始获取腾讯定位信息
LocationLifeCycle.getInstance().startTencentLocation();
} else { } else {
finish(); finish();
} }

View File

@@ -21,6 +21,14 @@ import androidx.appcompat.app.AlertDialog;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import androidx.lifecycle.ProcessLifecycleOwner; import androidx.lifecycle.ProcessLifecycleOwner;
import com.elvishew.xlog.LogConfiguration;
import com.elvishew.xlog.XLog;
import com.elvishew.xlog.flattener.ClassicFlattener;
import com.elvishew.xlog.printer.AndroidPrinter;
import com.elvishew.xlog.printer.ConsolePrinter;
import com.elvishew.xlog.printer.Printer;
import com.elvishew.xlog.printer.file.FilePrinter;
import com.elvishew.xlog.printer.file.naming.LevelFileNameGenerator;
import com.github.lazylibrary.util.AppUtils; import com.github.lazylibrary.util.AppUtils;
import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission; import com.hjq.permissions.Permission;
@@ -136,6 +144,29 @@ public class MainActivity extends BaseActivity {
HttpInterface.initHttpInter(Constant.USHERED); HttpInterface.initHttpInter(Constant.USHERED);
// 检查版本 // 检查版本
initCheckVersion(); initCheckVersion();
LogConfiguration logConfiguration = new LogConfiguration.Builder()
// .enableStackTrace(5)
.enableBorder()
.tag("XLog").build();
Printer androidPrinter = new AndroidPrinter(true); // 通过 android.util.Log 打印日志的打印器
Printer consolePrinter = new ConsolePrinter(); // 通过 System.out 打印日志到控制台的打印器
Printer filePrinter = new FilePrinter // 打印日志到文件的打印器
.Builder(Constant.LOG_FOLDER) // 指定保存日志文件的路径
.fileNameGenerator(new LevelFileNameGenerator()) // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")
.flattener(new ClassicFlattener())
.build();
// 初始化XLog
XLog.init( // 初始化 XLog
logConfiguration, // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()
androidPrinter, // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)
consolePrinter,
filePrinter);
// 尝试定位
LocationLifeCycle.getInstance().init(getApplicationContext());
// 开始获取腾讯定位信息
LocationLifeCycle.getInstance().startTencentLocation();
} else { } else {
initTime(); initTime();
} }

View File

@@ -1,5 +1,7 @@
package com.navinfo.outdoor.activity; package com.navinfo.outdoor.activity;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.elvishew.xlog.XLog; import com.elvishew.xlog.XLog;
import com.navinfo.outdoor.R; import com.navinfo.outdoor.R;
@@ -21,8 +23,7 @@ import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
public class NaviCarActivity extends BaseActivity { public class NaviCarActivity extends BaseActivity {
private CarNaviView carNaviView; private CarNaviView carNaviView;
private LifecycleObserver lifecycleObserver; private LifecycleObserver lifecycleObserver;
private FusionGeoLocationAdapter geoAdapter; private NaviCarViewModel naviCarViewModel;
private GeoLocationObserver geoLocationObserver;
@Override @Override
protected int getLayout() { protected int getLayout() {
@@ -35,36 +36,23 @@ public class NaviCarActivity extends BaseActivity {
carNaviView = findViewById(R.id.carnaviview); carNaviView = findViewById(R.id.carnaviview);
lifecycleObserver = new NaviLifeCycle(carNaviView); lifecycleObserver = new NaviLifeCycle(carNaviView);
getLifecycle().addObserver(lifecycleObserver); getLifecycle().addObserver(lifecycleObserver);
if (naviCarViewModel == null) {
naviCarViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(NaviCarViewModel.class);
}
TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, carNaviView); TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, carNaviView);
if (naviCarViewModel.getNaviManager() == null) {
naviCarViewModel.setNaviManager(naviManager);
} else {
naviCarViewModel.getNaviManager().addNaviView(carNaviView);
}
// 获取起终点 // 获取起终点
LatLng startLatlng = (LatLng) getIntent().getExtras().get("start"); LatLng startLatlng = (LatLng) getIntent().getExtras().get("start");
LatLng endLatlng = (LatLng) getIntent().getExtras().get("end"); LatLng endLatlng = (LatLng) getIntent().getExtras().get("end");
try { try {
NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviManager, new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude)); NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviCarViewModel.getNaviManager(), new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
// geoAdapter = FusionGeoLocationAdapter.getInstance(this);
// // 添加定位监听
// geoLocationObserver = new GeoLocationObserver() {
//
// @Override
// public void onGeoLocationChanged(TencentGeoLocation tencentGeoLocation) {
// // 定位数据回调
// XLog.d("用户点击地图,模拟当前位置为"+tencentGeoLocation.toString());
// }
// };
// geoAdapter.addLocationObserver(geoLocationObserver, 1000); // 定位回调频率推荐1s
// // 用户点击获取位置信息
// carNaviView.getMap().setOnMapClickListener(new TencentMap.OnMapClickListener() {
// @Override
// public void onMapClick(LatLng latLng) {
// TencentLocation tencentLocation = TencentLocationObtain.obtainTecentLocation(latLng);
// geoLocationObserver.onGeoLocationChanged(new TencentGeoLocation(tencentLocation, 0, "ok", System.currentTimeMillis()));
// }
// });
} }
@Override @Override
@@ -72,8 +60,6 @@ public class NaviCarActivity extends BaseActivity {
super.onDestroy(); super.onDestroy();
getLifecycle().removeObserver(lifecycleObserver); getLifecycle().removeObserver(lifecycleObserver);
// 如果当前正在导航,自动停止 // 如果当前正在导航,自动停止
NaviUtils.getInstance().stopNavi(); naviCarViewModel.getNaviManager().removeAllNaviViews();
// geoAdapter.removeLocationObserver(geoLocationObserver);
} }
} }

View File

@@ -0,0 +1,23 @@
package com.navinfo.outdoor.activity;
import androidx.lifecycle.ViewModel;
import com.navinfo.outdoor.util.NaviUtils;
import com.tencent.map.navi.TencentNaviManager;
public class NaviCarViewModel extends ViewModel {
private TencentNaviManager naviManager;
public void setNaviManager(TencentNaviManager naviManager) {
this.naviManager = naviManager;
}
public TencentNaviManager getNaviManager() {
return naviManager;
}
@Override
protected void onCleared() {
super.onCleared();
NaviUtils.getInstance().stopNavi();
}
}

View File

@@ -1,6 +1,7 @@
package com.navinfo.outdoor.activity; package com.navinfo.outdoor.activity;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.ViewModelProvider;
import com.navinfo.outdoor.R; import com.navinfo.outdoor.R;
import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.api.Constant;
@@ -11,11 +12,14 @@ import com.tencent.map.navi.TencentNaviManager;
import com.tencent.map.navi.car.CarNaviView; import com.tencent.map.navi.car.CarNaviView;
import com.tencent.map.navi.data.NaviPoi; import com.tencent.map.navi.data.NaviPoi;
import com.tencent.map.navi.ride.RideNaviView; import com.tencent.map.navi.ride.RideNaviView;
import com.tencent.map.navi.ride.TencentRideNaviManager;
import com.tencent.map.navi.walk.TencentWalkNaviManager;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
public class NaviRideActivity extends BaseActivity { public class NaviRideActivity extends BaseActivity {
private RideNaviView rideNaviView; private RideNaviView rideNaviView;
private LifecycleObserver lifecycleObserver; private LifecycleObserver lifecycleObserver;
private NaviCarViewModel naviCarViewModel;
@Override @Override
protected int getLayout() { protected int getLayout() {
return R.layout.activity_navi_ride; return R.layout.activity_navi_ride;
@@ -27,12 +31,21 @@ public class NaviRideActivity extends BaseActivity {
rideNaviView = findViewById(R.id.ridenaviview); rideNaviView = findViewById(R.id.ridenaviview);
lifecycleObserver = new NaviLifeCycle(rideNaviView); lifecycleObserver = new NaviLifeCycle(rideNaviView);
getLifecycle().addObserver(lifecycleObserver); getLifecycle().addObserver(lifecycleObserver);
if (naviCarViewModel == null) {
naviCarViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(NaviCarViewModel.class);
}
TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, rideNaviView); TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, rideNaviView);
if (naviCarViewModel.getNaviManager() == null) {
naviCarViewModel.setNaviManager(naviManager);
} else {
((TencentRideNaviManager)naviCarViewModel.getNaviManager()).addTencentNaviListener(rideNaviView);
}
// 获取起终点 // 获取起终点
LatLng startLatlng = (LatLng) getIntent().getExtras().get("start"); LatLng startLatlng = (LatLng) getIntent().getExtras().get("start");
LatLng endLatlng = (LatLng) getIntent().getExtras().get("end"); LatLng endLatlng = (LatLng) getIntent().getExtras().get("end");
try { try {
NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviManager, new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude)); NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviCarViewModel.getNaviManager(), new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -43,6 +56,7 @@ public class NaviRideActivity extends BaseActivity {
super.onDestroy(); super.onDestroy();
getLifecycle().removeObserver(lifecycleObserver); getLifecycle().removeObserver(lifecycleObserver);
// 如果当前正在导航,自动停止 // 如果当前正在导航,自动停止
NaviUtils.getInstance().stopNavi(); naviCarViewModel.getNaviManager().removeAllNaviViews();
((TencentRideNaviManager)naviCarViewModel.getNaviManager()).removeTencentNaviListener(rideNaviView);
} }
} }

View File

@@ -1,6 +1,7 @@
package com.navinfo.outdoor.activity; package com.navinfo.outdoor.activity;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.ViewModelProvider;
import com.navinfo.outdoor.R; import com.navinfo.outdoor.R;
import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.api.Constant;
@@ -10,12 +11,15 @@ import com.navinfo.outdoor.util.NaviUtils;
import com.tencent.map.navi.TencentNaviManager; import com.tencent.map.navi.TencentNaviManager;
import com.tencent.map.navi.data.NaviPoi; import com.tencent.map.navi.data.NaviPoi;
import com.tencent.map.navi.ride.RideNaviView; import com.tencent.map.navi.ride.RideNaviView;
import com.tencent.map.navi.walk.TencentWalkNaviManager;
import com.tencent.map.navi.walk.WalkNaviView; import com.tencent.map.navi.walk.WalkNaviView;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng; import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
public class NaviWalkActivity extends BaseActivity { public class NaviWalkActivity extends BaseActivity {
private WalkNaviView walkNaviView; private WalkNaviView walkNaviView;
private LifecycleObserver lifecycleObserver; private LifecycleObserver lifecycleObserver;
private NaviCarViewModel naviCarViewModel;
@Override @Override
protected int getLayout() { protected int getLayout() {
return R.layout.activity_navi_walk; return R.layout.activity_navi_walk;
@@ -27,12 +31,20 @@ public class NaviWalkActivity extends BaseActivity {
walkNaviView = findViewById(R.id.walknaviview); walkNaviView = findViewById(R.id.walknaviview);
lifecycleObserver = new NaviLifeCycle(walkNaviView); lifecycleObserver = new NaviLifeCycle(walkNaviView);
getLifecycle().addObserver(lifecycleObserver); getLifecycle().addObserver(lifecycleObserver);
if (naviCarViewModel == null) {
naviCarViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(NaviCarViewModel.class);
}
TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, walkNaviView); TencentNaviManager naviManager = NaviUtils.getInstance().obitainnaviManager(this, Constant.currentNaviType, walkNaviView);
if (naviCarViewModel.getNaviManager() == null) {
naviCarViewModel.setNaviManager(naviManager);
} else {
((TencentWalkNaviManager)naviCarViewModel.getNaviManager()).addTencentNaviListener(walkNaviView);
}
// 获取起终点 // 获取起终点
LatLng startLatlng = (LatLng) getIntent().getExtras().get("start"); LatLng startLatlng = (LatLng) getIntent().getExtras().get("start");
LatLng endLatlng = (LatLng) getIntent().getExtras().get("end"); LatLng endLatlng = (LatLng) getIntent().getExtras().get("end");
try { try {
NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviManager, new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude)); NaviUtils.getInstance().searchRoute(Constant.currentNaviType, naviCarViewModel.getNaviManager(), new NaviPoi(startLatlng.latitude, startLatlng.longitude), new NaviPoi(endLatlng.latitude, endLatlng.longitude));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -43,6 +55,7 @@ public class NaviWalkActivity extends BaseActivity {
super.onDestroy(); super.onDestroy();
getLifecycle().removeObserver(lifecycleObserver); getLifecycle().removeObserver(lifecycleObserver);
// 如果当前正在导航,自动停止 // 如果当前正在导航,自动停止
NaviUtils.getInstance().stopNavi(); naviCarViewModel.getNaviManager().removeAllNaviViews();
((TencentWalkNaviManager)naviCarViewModel.getNaviManager()).removeTencentNaviListener(walkNaviView);
} }
} }

View File

@@ -19,6 +19,7 @@ import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
import com.lzy.okgo.model.HttpHeaders; import com.lzy.okgo.model.HttpHeaders;
import com.tencent.map.navi.TencentNavi; import com.tencent.map.navi.TencentNavi;
import com.tencent.navi.surport.utils.DeviceUtils; import com.tencent.navi.surport.utils.DeviceUtils;
import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer;
import com.umeng.commonsdk.UMConfigure; import com.umeng.commonsdk.UMConfigure;
import com.umeng.message.IUmengRegisterCallback; import com.umeng.message.IUmengRegisterCallback;
import com.umeng.message.MsgConstant; import com.umeng.message.MsgConstant;
@@ -51,6 +52,9 @@ public class UserApplication extends Application {
initOkGo(); initOkGo();
//创建一个线程池 //创建一个线程池
fixedThreadPool = Executors.newSingleThreadExecutor(); // 使用单线程线程池 fixedThreadPool = Executors.newSingleThreadExecutor(); // 使用单线程线程池
TencentMapInitializer.setAgreePrivacy(true);
TencentNavi.setUserAgreePrivacy(true);
// 初始化腾讯导航 // 初始化腾讯导航
TencentNavi.Config config = new TencentNavi.Config(); TencentNavi.Config config = new TencentNavi.Config();
// 记录设备标识,反馈导航问题时请提供该设备标识以及发生问题的时间 // 记录设备标识,反馈导航问题时请提供该设备标识以及发生问题的时间

View File

@@ -5,12 +5,12 @@ import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import com.tencent.map.navi.car.CarNaviView; import com.tencent.map.navi.car.CarNaviView;
import com.tencent.map.ui.c; import com.tencent.map.ui.NaviView;
public class NaviLifeCycle implements DefaultLifecycleObserver { public class NaviLifeCycle implements DefaultLifecycleObserver {
private com.tencent.map.ui.c naviView; private NaviView naviView;
public NaviLifeCycle(c naviView) { public NaviLifeCycle(NaviView naviView) {
this.naviView = naviView; this.naviView = naviView;
} }

View File

@@ -417,43 +417,43 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
lastClickTime = System.currentTimeMillis(); lastClickTime = System.currentTimeMillis();
} }
}); });
Spinner spnBaseLocation = findViewById(R.id.spn_main_location); // Spinner spnBaseLocation = findViewById(R.id.spn_main_location);
Spinner spnRefrenceLocation = findViewById(R.id.spn_reference_location); // Spinner spnRefrenceLocation = findViewById(R.id.spn_reference_location);
ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, new String[]{"腾讯", "GPS"}); // ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, new String[]{"腾讯", "GPS"});
spnBaseLocation.setAdapter(arrayAdapter); // spnBaseLocation.setAdapter(arrayAdapter);
spnRefrenceLocation.setAdapter(arrayAdapter); // spnRefrenceLocation.setAdapter(arrayAdapter);
spnRefrenceLocation.setSelection(1); // spnRefrenceLocation.setSelection(1);
spnBaseLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // spnBaseLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override // @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { // public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (i == 0) { // if (i == 0) {
LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT); // LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT);
} else if (i==1) { // } else if (i==1) {
LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN); // LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN);
} // }
} // }
//
@Override // @Override
public void onNothingSelected(AdapterView<?> adapterView) { // public void onNothingSelected(AdapterView<?> adapterView) {
//
} // }
}); // });
//
spnRefrenceLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // spnRefrenceLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override // @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { // public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (i == 0) { // if (i == 0) {
LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT); // LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT);
} else if (i==1) { // } else if (i==1) {
LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN); // LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN);
} // }
} // }
//
@Override // @Override
public void onNothingSelected(AdapterView<?> adapterView) { // public void onNothingSelected(AdapterView<?> adapterView) {
//
} // }
}); // });
} }
/** /**
@@ -501,12 +501,12 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
public void selectNaviType(Constant.NAV_TYPE nav_type) { public void selectNaviType(Constant.NAV_TYPE nav_type) {
// 显示导航类型选择的对话框 // 显示导航类型选择的对话框
Constant.currentNaviType = nav_type; Constant.currentNaviType = nav_type;
NaviUtils.getInstance().startNav(getActivity(), new LatLng(LocationLifeCycle.getInstance().getMainLocation().getLatitude(), LocationLifeCycle.getInstance().getMainLocation().getLongitude()), new LatLng(endPoint.getY(), endPoint.getX())); NaviUtils.getInstance().startNav(getActivity(), new LatLng(LocationLifeCycle.getInstance().getTencentLocation().getLatitude(), LocationLifeCycle.getInstance().getTencentLocation().getLongitude()), new LatLng(endPoint.getY(), endPoint.getX()));
} }
}); });
} else { } else {
// 已选择导航方式 // 已选择导航方式
NaviUtils.getInstance().startNav(getActivity(), new LatLng(LocationLifeCycle.getInstance().getMainLocation().getLatitude(), LocationLifeCycle.getInstance().getMainLocation().getLongitude()), new LatLng(endPoint.getY(), endPoint.getX())); NaviUtils.getInstance().startNav(getActivity(), new LatLng(LocationLifeCycle.getInstance().getTencentLocation().getLatitude(), LocationLifeCycle.getInstance().getTencentLocation().getLongitude()), new LatLng(endPoint.getY(), endPoint.getX()));
} }
} }
@@ -1314,13 +1314,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy();
if (EventBus.getDefault().isRegistered(this)) { if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);
} }
super.onDestroy();
if (mapView != null) {
mapView.onDestroy();
}
if (treasureBuilder != null) { if (treasureBuilder != null) {
treasureBuilder.append(TimestampUtil.time()).append(",").append("onDestroy"); treasureBuilder.append(TimestampUtil.time()).append(",").append("onDestroy");
treasureBuilder.append("\r\n"); treasureBuilder.append("\r\n");
@@ -1336,6 +1333,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
} }
removableScreenMarker.clear(); removableScreenMarker.clear();
} }
if (mapView != null) {
mapView.onDestroy();
}
} }
@Override @Override

View File

@@ -2,9 +2,9 @@ package com.navinfo.outdoor.http;
public class HttpInterface { public class HttpInterface {
// public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP // public static final String IP = "http://172.23.138.133:9999/m4";//测试接口-IP
public static final String IPm = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网 public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发接口-外网
public static final String IP1 = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网 public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/test/m4";//测试接口-外网
public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口 public static final String IP3 = "http://dtxbmaps.navinfo.com/dtxb/m4";//正式接口
public static final String USER_PATH = "/user/";//我的 public static final String USER_PATH = "/user/";//我的
public static final String MSG_LIST_PATH = "/msgList/";//发现 public static final String MSG_LIST_PATH = "/msgList/";//发现
public static final String USER_LOGIN_PATH = "/userlogin/";//登录 public static final String USER_LOGIN_PATH = "/userlogin/";//登录

View File

@@ -69,7 +69,7 @@ public class LocationLifeCycle implements DefaultLifecycleObserver {
DefaultLifecycleObserver.super.onDestroy(owner); DefaultLifecycleObserver.super.onDestroy(owner);
locationChangedListenerList.clear(); locationChangedListenerList.clear();
locationChangedListenerList = null; locationChangedListenerList = null;
TalentLocationUtils.getInstance(mContext).stopLocation(); stopTencentLocation();
GPSUtils.getInstance(mContext).unRegisterAllListener(); GPSUtils.getInstance(mContext).unRegisterAllListener();
if (EventBus.getDefault().isRegistered(this)) { if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);

View File

@@ -31,6 +31,7 @@ import com.tencent.map.navi.car.CarRouteSearchOptions;
import com.tencent.map.navi.car.TencentCarNaviManager; import com.tencent.map.navi.car.TencentCarNaviManager;
import com.tencent.map.navi.data.AttachedLocation; import com.tencent.map.navi.data.AttachedLocation;
import com.tencent.map.navi.data.CalcRouteResult; import com.tencent.map.navi.data.CalcRouteResult;
import com.tencent.map.navi.data.IdleRangeInfo;
import com.tencent.map.navi.data.NaviPoi; import com.tencent.map.navi.data.NaviPoi;
import com.tencent.map.navi.data.NaviTts; import com.tencent.map.navi.data.NaviTts;
import com.tencent.map.navi.data.NavigationData; import com.tencent.map.navi.data.NavigationData;
@@ -44,6 +45,7 @@ import com.tencent.map.navi.ride.TencentRideNaviManager;
import com.tencent.map.navi.ui.car.CarNaviInfoPanel; import com.tencent.map.navi.ui.car.CarNaviInfoPanel;
import com.tencent.map.navi.walk.TencentWalkNaviManager; import com.tencent.map.navi.walk.TencentWalkNaviManager;
import com.tencent.map.navi.walk.WalkNaviView; import com.tencent.map.navi.walk.WalkNaviView;
import com.tencent.map.ui.NaviView;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory; import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
import com.tencent.tencentmap.mapsdk.maps.TencentMap; import com.tencent.tencentmap.mapsdk.maps.TencentMap;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
@@ -122,10 +124,12 @@ public class NaviUtils {
selectNaviTypeDialog.show(); selectNaviTypeDialog.show();
} }
public TencentNaviManager obitainnaviManager(Activity mContext, Constant.NAV_TYPE nav_type, com.tencent.map.ui.c naviView) { public TencentNaviManager obitainnaviManager(Activity mContext, Constant.NAV_TYPE nav_type, NaviView naviView) {
if (nav_type == Constant.NAV_TYPE.CAR) { // 驾车 if (nav_type == Constant.NAV_TYPE.CAR) { // 驾车
CarNaviView carNaviView = (CarNaviView) naviView; CarNaviView carNaviView = (CarNaviView) naviView;
naviManager = new TencentCarNaviManager(mContext); if (naviManager==null||!naviManager.isNavigating()) {
naviManager = new TencentCarNaviManager(mContext);
}
carNaviView.setVisibility(View.VISIBLE); carNaviView.setVisibility(View.VISIBLE);
naviManager.addNaviView(carNaviView); naviManager.addNaviView(carNaviView);
CarNaviInfoPanel carNaviInfoPanel = carNaviView.showNaviInfoPanel(); CarNaviInfoPanel carNaviInfoPanel = carNaviView.showNaviInfoPanel();
@@ -154,13 +158,6 @@ public class NaviUtils {
// 请求重新规划路径 // 请求重新规划路径
XLog.d("Car已偏航"); XLog.d("Car已偏航");
naviTts.setText("您已偏航,重新计算路径信息"); naviTts.setText("您已偏航,重新计算路径信息");
// com.github.lazylibrary.util.ToastUtils.showToast(mContext, "您已偏航,重新规划路线!");
// try {
// NaviUtils.getInstance().reSearchRoute(naviManager, new NaviPoi(LocationLifeCycle.getInstance().getTencentLocation().getLatitude(), LocationLifeCycle.getInstance().getTencentLocation().getLongitude()));
// } catch (Exception e) {
// e.printStackTrace();
// com.github.lazylibrary.util.ToastUtils.showToast(mContext, "出现异常:"+e.getMessage());
// }
} }
@Override @Override
@@ -234,10 +231,17 @@ public class NaviUtils {
public int onVoiceBroadcast(NaviTts naviTts) { public int onVoiceBroadcast(NaviTts naviTts) {
return 0; return 0;
} }
@Override
public void onEnterIdleSection(IdleRangeInfo idleRangeInfo) {
}
}); });
} else if (nav_type == Constant.NAV_TYPE.RIDE) { // 骑行 } else if (nav_type == Constant.NAV_TYPE.RIDE) { // 骑行
RideNaviView rideNaviView = (RideNaviView) naviView; RideNaviView rideNaviView = (RideNaviView) naviView;
naviManager = new TencentRideNaviManager(mContext); if (naviManager==null||!naviManager.isNavigating()) {
naviManager = new TencentRideNaviManager(mContext);
}
rideNaviView.setVisibility(View.VISIBLE); rideNaviView.setVisibility(View.VISIBLE);
((TencentRideNaviManager)naviManager).addTencentNaviListener(rideNaviView); ((TencentRideNaviManager)naviManager).addTencentNaviListener(rideNaviView);
CarNaviInfoPanel carNaviInfoPanel = rideNaviView.showNaviInfoPanel(); CarNaviInfoPanel carNaviInfoPanel = rideNaviView.showNaviInfoPanel();
@@ -338,7 +342,9 @@ public class NaviUtils {
}); });
} else { } else {
WalkNaviView walkNaviView = (WalkNaviView) naviView; WalkNaviView walkNaviView = (WalkNaviView) naviView;
naviManager = new TencentWalkNaviManager(mContext); if (naviManager==null||!naviManager.isNavigating()) {
naviManager = new TencentWalkNaviManager(mContext);
}
walkNaviView.setVisibility(View.VISIBLE); walkNaviView.setVisibility(View.VISIBLE);
((TencentWalkNaviManager)naviManager).addTencentNaviListener(walkNaviView); ((TencentWalkNaviManager)naviManager).addTencentNaviListener(walkNaviView);
CarNaviInfoPanel carNaviInfoPanel = walkNaviView.showNaviInfoPanel(); CarNaviInfoPanel carNaviInfoPanel = walkNaviView.showNaviInfoPanel();
@@ -440,12 +446,8 @@ public class NaviUtils {
} }
}); });
} }
if (tencentMap == null) { this.tencentMap = naviView.getMap();
tencentMap = naviView.getMap(); this.mContext = mContext;
}
if (this.mContext == null) {
this.mContext = mContext;
}
// 开启语音播报 // 开启语音播报
naviManager.setInternalTtsEnabled(true); naviManager.setInternalTtsEnabled(true);
@@ -467,7 +469,7 @@ public class NaviUtils {
if (nav_type == Constant.NAV_TYPE.CAR) { // 驾车模式 if (nav_type == Constant.NAV_TYPE.CAR) { // 驾车模式
TencentCarNaviManager carNaviManager = (TencentCarNaviManager)naviManager; TencentCarNaviManager carNaviManager = (TencentCarNaviManager)naviManager;
CarRouteSearchOptions options = CarRouteSearchOptions.create(); CarRouteSearchOptions options = CarRouteSearchOptions.create();
NaviPoi newStart = new NaviPoi(start.getLatitude()-0.04, start.getLongitude()); NaviPoi newStart = new NaviPoi(start.getLatitude(), start.getLongitude());
carNaviManager.searchRoute(newStart, end, new ArrayList<>(), options, routeSearchCallback); carNaviManager.searchRoute(newStart, end, new ArrayList<>(), options, routeSearchCallback);
} else if (nav_type == Constant.NAV_TYPE.RIDE) { // 骑行模式 } else if (nav_type == Constant.NAV_TYPE.RIDE) { // 骑行模式
TencentRideNaviManager rideNaviManager = (TencentRideNaviManager)naviManager; TencentRideNaviManager rideNaviManager = (TencentRideNaviManager)naviManager;
@@ -475,7 +477,7 @@ public class NaviUtils {
rideNaviManager.searchRoute(start, end, options, routeSearchCallback); rideNaviManager.searchRoute(start, end, options, routeSearchCallback);
} else { // 步行模式 } else { // 步行模式
TencentWalkNaviManager walkNaviManager = (TencentWalkNaviManager) naviManager; TencentWalkNaviManager walkNaviManager = (TencentWalkNaviManager) naviManager;
NaviPoi newStart = new NaviPoi(start.getLatitude()-0.04, start.getLongitude()); NaviPoi newStart = new NaviPoi(start.getLatitude(), start.getLongitude());
walkNaviManager.searchRoute(newStart, end, routeSearchCallback); walkNaviManager.searchRoute(newStart, end, routeSearchCallback);
} }
} }
@@ -536,14 +538,20 @@ public class NaviUtils {
try { try {
// 自动开始导航 // 自动开始导航
if (Constant.currentNaviType == Constant.NAV_TYPE.CAR) { if (Constant.currentNaviType == Constant.NAV_TYPE.CAR) {
((TencentCarNaviManager)naviManager).startNavi(0); if (!((TencentCarNaviManager)naviManager).isNavigating()) {
// ((TencentCarNaviManager)naviManager).startSimulateNavi(0); //((TencentCarNaviManager)naviManager).startNavi(0);
((TencentCarNaviManager)naviManager).startSimulateNavi(0);
}
} else if (Constant.currentNaviType == Constant.NAV_TYPE.RIDE) { } else if (Constant.currentNaviType == Constant.NAV_TYPE.RIDE) {
((TencentRideNaviManager)naviManager).startNavi(0); if (!((TencentRideNaviManager)naviManager).isNavigating()) {
// ((TencentRideNaviManager)naviManager).startSimulateNavi(0); // ((TencentRideNaviManager)naviManager).startNavi(0);
((TencentRideNaviManager)naviManager).startSimulateNavi(0);
}
} else { } else {
((TencentWalkNaviManager)naviManager).startNavi(0); if (!((TencentWalkNaviManager)naviManager).isNavigating()) {
// ((TencentWalkNaviManager)naviManager).startSimulateNavi(0); // ((TencentWalkNaviManager)naviManager).startNavi(0);
((TencentWalkNaviManager)naviManager).startSimulateNavi(0);
}
} }
} catch (Exception e) { } catch (Exception e) {

View File

@@ -76,6 +76,7 @@ public class TalentLocationUtils implements TencentLocationListener {
public void stopLocation() { // 停止定位服务 public void stopLocation() { // 停止定位服务
if (isLocationStart) { if (isLocationStart) {
isLocationStart = false;
locationManager.removeUpdates(this); locationManager.removeUpdates(this);
locationManager = null; locationManager = null;
locationRequest = null; locationRequest = null;

View File

@@ -193,14 +193,14 @@
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintRight_toRightOf="@id/cb_map_type" app:layout_constraintRight_toRightOf="@id/cb_map_type"
app:layout_constraintBottom_toTopOf="@id/cb_map_type"> app:layout_constraintBottom_toTopOf="@id/cb_map_type">
<Spinner <!-- <Spinner-->
android:id="@+id/spn_main_location" <!-- android:id="@+id/spn_main_location"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content"></Spinner> <!-- android:layout_height="wrap_content"></Spinner>-->
<Spinner <!-- <Spinner-->
android:id="@+id/spn_reference_location" <!-- android:id="@+id/spn_reference_location"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content"></Spinner> <!-- android:layout_height="wrap_content"></Spinner>-->
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -4,6 +4,10 @@ buildscript {
ext.kotlin_version = '1.5.10' ext.kotlin_version = '1.5.10'
repositories { repositories {
//友盟 检测bug //友盟 检测bug
//腾讯地图
maven{
url "https://oss.sonatype.org/content/groups/public"
}
maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://repo1.maven.org/maven2/' }
maven{ url 'https://maven.aliyun.com/repository/google'} maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'} maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
@@ -12,10 +16,9 @@ buildscript {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven { url "https://repo.spring.io/libs-release/" } maven { url "https://repo.spring.io/libs-release/" }
//腾讯地图 maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven{ //友盟 检测bug
url "https://oss.sonatype.org/content/groups/public" maven { url 'https://repo1.maven.org/maven2/' }
}
jcenter() jcenter()
mavenCentral() mavenCentral()
google() google()
@@ -36,6 +39,10 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
//友盟 检测bug //友盟 检测bug
//腾讯地图
maven{
url "https://oss.sonatype.org/content/groups/public"
}
maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://repo1.maven.org/maven2/' }
maven{ url 'https://maven.aliyun.com/repository/google'} maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'} maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
@@ -44,10 +51,9 @@ allprojects {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven { url "https://repo.spring.io/libs-release/" } maven { url "https://repo.spring.io/libs-release/" }
//腾讯地图 maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven{ //友盟 检测bug
url "https://oss.sonatype.org/content/groups/public" maven { url 'https://repo1.maven.org/maven2/' }
}
jcenter() jcenter()
mavenCentral() mavenCentral()
google() google()