Android百度地图SDK 导航初始化和地图初始化引起的冲突
2023-09-11 14:14:10 时间
如题,相同是百度地图SDK开发过程中遇到的一个问题。交代下背景:
开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示。POI搜索,行程路线规划,GPS导航。。等等都有。
开发最開始用到的SDK版本号由于是整合版本号,因此各个功能部分的SDK都不确保是最新的。也就没有遇到诸如论坛上的好多仁兄遇到的将分别下载的几个单独的SDK包集成到一个应用中引发的冲突的问题。毕竟之前用的整合包导航SDK还是1.1的定位SDK还是5.3的地图SDK则用的是3.5的,可能也算新的,可是相比眼下的导航2.0地图6.0.5来说还是旧的。
言归正传,由于我将大部分初始化类的工作都放到了一个单独的service中,因此实际的Activity可能仅仅是做了一部分UI的处理工作。当然也包含了地图图层的初始化工作,可是基本能够看做是Service中所做的导航初始化和地图图层的初始化都是同步进行的,当时导航SDK1.1的时候并未发现其它异常,可是到了更新到导航2.0的时候问题就来了。导航初始化例如以下:
// 初始化导航引擎 private void initNaviEngine(Activity activity) { // 显示载入对话框 DialogUtil.getInstance().showProgressDialog(mActivity); BaiduNaviManager.getInstance().setNativeLibraryPath(getSdcardDir() + "/BaiduNaviSDK_SO"); BaiduNaviManager.getInstance().init(mActivity, getSdcardDir(), DDApp.getInstance().getApplicationInfo().packageName, new NaviInitListener() { String authinfo = null; @Override public void onAuthResult(int status, String msg) { if (0 == status) { authinfo = "key校验成功!"; } else { authinfo = "key校验失败, " + msg; } mActivity.runOnUiThread(new Runnable() { @Override public void run() { // Toast.makeText(mActivity, authinfo, // Toast.LENGTH_LONG).show(); Log.d(TAG, authinfo); } }); } public void initSuccess() { // Toast.makeText(mActivity, "百度导航引擎初始化成功", // Toast.LENGTH_SHORT).show(); Log.d(TAG, "百度导航引擎初始化成功"); } public void initStart() { // Toast.makeText(mActivity, "百度导航引擎初始化開始", // Toast.LENGTH_SHORT).show(); Log.d(TAG, "百度导航引擎初始化開始"); } public void initFailed() { // Toast.makeText(mActivity, "百度导航引擎初始化失败", // Toast.LENGTH_SHORT).show(); Log.d(TAG, "百度导航引擎初始化失败"); } }, null /* mTTSCallback */); // BNRouteGuideManager.getInstance().setVoiceModeInNavi(BNRouteGuideManager.VoiceMode.Novice); // 显示载入对话框 DialogUtil.getInstance().dismissProgressDialog(); }地图的初始化则例如以下:
// 初始化地图 protected void initMapView() { if (mMapView != null) deinitMapView(); mCurrentMode = LocationMode.FOLLOWING; mMapView = new MapView(getActivity()); mBaiduMap = mMapView.getMap(); mBaiduMap.setMyLocationEnabled(true); mBaiduMap.setOnMapLoadedCallback(new OnMapLoadedCallback() { @Override public void onMapLoaded() { // TODO Auto-generated method stub bIsFinish = true; } }); fl_map.addView(mMapView); fl_map.setVisibility(View.VISIBLE); // 隐藏百度logo View child = mMapView.getChildAt(1); if (child != null && child instanceof ImageView) { child.setVisibility(View.INVISIBLE); } hideZoomView(mMapView); }看似两者并不冲突,可是实际中却发现了非常诡异的问题。就是看起来地图图层在刷新时出现了问题,仅仅显示了一片白色,仅仅所以强调是白色是由于假设是灰色网格的话非常可能就是key验证未通过或者无网络了。所以当时以为是地图图层刷新出现了问题。直到最后可能意识到是导航初始化的时间点选的有误引起的问题,才找到了问题点。就是由于导航引擎初始化和地图图层的载入发生了冲突才导致了地图图层载入失败。于是后来的问题也就好攻克了,我的做法是在发起导航之前再做引擎的初始化,并且这个初始化仅仅须要做一次,时间也不会非常长所以全然能够忽略这样的延迟。
因此当出现地图图层载入异常无法正常显示无法拖动的时候,能够考虑下我所遇到的情况。
最后再说下我的SDK环境。导航SDK 2.0 地图SDK 3.5.0 定位SDK 6.0.5 。供各位參考
相关文章
- [Android Pro] 利用tcpdump和wireshark对android网络请求进行分析
- Android下 使用百度地图sdk
- 【黑马Android】(01)android简介/工程目录结构/拨号器/四种点击事件/后台偷偷发短信
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
- Android接入百度自动更新SDK
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- 百度地图移动版API 1.2.2版本(Android)地图偏移的最佳解决办法
- This version of Android Studio cannot open this project, please retry with Android Studio 4.0 or newer.
- Android stuido 解决Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file
- 《Android性能优化—实战》解析一线大厂性能优化之路(支付宝、抖音、百度、今日头条、网易、携程....)
- android app用百度ocr识别sdk实现手写扫描功能(二)
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 2014 android毕设代做 代做Android毕设 安卓毕设
- Android 开发 --Unable to resolve target 'android-19'
- Spire.Office for Android 7.6.0 Crack-new
- 《Android性能优化—实战》解析一线大厂性能优化之路(支付宝、抖音、百度、今日头条、网易、携程....)
- android 输入法如何启动流程_Android输入法显示流程
- 如何解决Android Studio的import android.support.v7.widget.RecyclerView的RecyclerView标红问题
- Android的java的报错提示:Could not find com.android.tools.build:gradle:4.2.2.
- Android Studio 理解com.android.support:appcompat-v7:x.x.x依赖包(建议收藏)