{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508892809,"data":{"id":71712873,"title":"8.2.3 初始化 & 反初始化","slug":"bx6fwb","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
com.autonavi.gbl.data.observer.IDataDeletionObserver
AutoSDK 删除本地异常离线地图数据前后,会通过异常数据删除回调观察者通知HMI,HMI可以在回调实现中处理相关事宜,比如:删除前增加删除权限,删除后回收删除权限。
注意:如项目不需要监控数据删除可以忽略异常数据删除回调观察者。
com.autonavi.gbl.data.observer.IDataInitObserver
获取城市数据信息以及下载/更新城市数据必须等待初始化观察者回调后才能继续操作。
com.autonavi.gbl.data.model.InitConfig.strConfigfilePath
配置文件路径 InitConfig.strConfigfilePath下,调用者必须提前放置配置文件:all_city_compile.json。
注意:
1、请不要编辑修改 all_city_compile.json 文件,否则,可能会导致初始化失败。
2、建议不要删除或者重置strConfigfilePath中的目录,避免损坏车机配置环境导致不必要的异常。
ArrayList<DataInitParam> com.autonavi.gbl.data.model.InitConfig.extendedParamList
String com.autonavi.gbl.data.model.DataInitParam.strName
String com.autonavi.gbl.data.model.DataInitParam.strValue
参数名称 | 参数值 | 说明 |
check_local_version | "0" | 将关闭初始化时检测本地数据版本功能,默认开启,建议开启 |
其他值 | 开启初始化时检测本地数据版本功能 | |
custom_usb | "1" | BL初始化时需将离线数据路径 com.autonavi.gbl.servicemanager.model.ServiceDataPath.offlinePath 指定为U盘,此时车机使用的离线数据是U盘中的数据。 com.autonavi.gbl.data.model.InitConfig.strStoredPath 生效,设置为车机本地离线数据路径,该方案将U盘离线数据直接更新到 com.autonavi.gbl.data.model.InitConfig.strStoredPath 指定路径下。 |
"2" | com.autonavi.gbl.data.model.InitConfig.strStoredPath 生效,指定U盘更新时,离线数据临时存放路径,该方案将U盘离线数据直接更新到strStoredPath指定路径下,而不是车机本地离线数据路径。更新完成后,可以在下次启动时,在 ServiceMgr.InitBaseLibs() 接口调用后,开始使用离线数据前,使用com.autonavi.gbl.data.DataToolMapData.cityDataShift() 接口将临时路径下的离线数据替换到车机离线数据路径下 |
设置/删除引擎删除数据监听观察者。
注意:如项目不需要监控数据删除可以忽略这两个接口。
注意1:执行 ServiceMgr.unInitBL 反初始化 AutoSDK 后,调用者才可以销毁pObserver指向的实例对象。
注意2:使用U盘下载/更新时没有初始化回调,可以直接根据返回值判断是否初始化成功。
说明:函数详情,请复制函数名称到在线API搜索
class ErrorDataObserver implements IErrorDataObserver {\n // \t数据异常通知\n\tpublic void onErrorNotify (@DownLoadMode.DownLoadMode1 int downLoadMode, @DataType.DataType1 int dataType, \n int id, @DataErrorType.DataErrorType1 int errType, String errMsg){\n\t\trunOnUiThread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n // 前端提示:城市数据异常\n log.e(TAG, "adcode="+id+", errortype="+errType+", message="+errMsg);\n \n // 删除异常城市数据\n MapDataService mapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\n mapDataService.deleteErrorData(id);\n\t\t\t}\n\t\t});\n\t}\n \n // 异常数据清除回调通知\n\tpublic void onDeleteErrorData (@DownLoadMode.DownLoadMode1 int downLoadMode, @DataType.DataType1 int dataType, \n int id, int opCode){\n\t\trunOnUiThread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tlog.i(TAG, "adcode="+id+"opErrCode="+opCode);\n\t\t\t}\n\t\t});\n\t}\n}
class EHPDataObserver implements IEHPDataObserver {\n // 存在EHP数据的adcode列表回调\n\tpublic void onEHPDataExistedAdcodeList (@DownLoadMode.DownLoadMode1 int downloadMode, \n ArrayList< Integer > adcodeLstExisted, \n ArrayList< Integer > adcodeLstNotExisted) {\n\t\trunOnUiThread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n for (Integer adcode : adcodeLstExisted)\n {\n \tLog.i(TAG, "exit adcode: " + adcode);\n }\n \n for (Integer adcode : adcodeLstNotExisted)\n {\n \tLog.i(TAG, "not exit adcode: " + adcode);\n }\n\t\t\t}\n\t\t});\n\t}\n}
class DataInitObserver implements IDataInitObserver {\n public void onInit(@DownLoadMode.DownLoadMode1 int downLoadMode, @DataType.DataType1 int dataType,\n int opCode) {\n if (opCode == OperationErrCode.OPERATION_ERR_CODE_CORRECT){\n // 转UI线程处理回调\n runOnUiThread(new Runnable() {\n @Override\n public void run() {\n // 设置EHP数据更新操作观察者\n MapDataService mMapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\n EHPDataObserver ehpDataObserver = new EHPDataObserver();\n mMapDataService.setEHPDataObserver(ehpDataObserver); \n\n // 示例代码:上层自定义函数用于初始化离线数据视图\n initView();\n // 示例代码:上层自定义函数用于初始化城市数据项信息,城市数据项信息获取在《获取云端城市数据信息》文档中介绍\n initCityData();\n\n if (OPERATION_ERR_CODE_CORRECT == opCode){\n // 检测云端城市数据列表,在《检测云端城市数据列表》文档中介绍\n // mMapDataService.requestDataListCheck(DownLoadMode.DOWNLOAD_MODE_NET, "", IDataListObserver);\n }\n }\n });\n }\n else{\n // 设置初始化失败标志,操作其他接口时判断是否初始化成功,不成功则不调用相关接口。\n }\n }\n}
InitConfig config = new InitConfig();\n\n// 离线数据存储路径传空"",实际设置在 ServiceMgr.initBL 接口设置\nconfig.strStoredPath = "";\n\n// all_city_compile.json 配置文件所存放的目录\nconfig.strConfigfilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/amapauto20/";\n\n// 设置磁盘空间安全阈值(默认设置为80MB)\nconfig.nThresholdValue = 80;\n\n// 开启数字签名功能\nboolean bPiviFun = getPiviFun();\nif (bPiviFun)\n{\n\tconfig.strPiviFlag = "1";\n config.strPiviVersion = "1";\n}\n\n// 设置地图数据模式\nconfig.mapDataMode = MapDataMode.MAP_DATA_MODE_BASE;\t// 默认为:基础地图数据模式\n\n// 是否开启EHP:智能辅助驾驶数据参数\nboolean bEnableEHP = getEnableEHP();\nboolean bEnableEHPData = getEnableEHPData();\nif (bEnableEHP && bEnableEHPData)\n{\n // 修改地图数据模式\n\tconfig.mapDataMode = getEHPDataMode(); // 客户端自己实现是 MapDataMode.MAP_DATA_MODE_EHP_ADAS 或 MapDataMode.MAP_DATA_MODE_EHP_ADAS_LANE\n}\n\n// 是否遍历本地离线数据\nDataInitParam param = new DataInitParam();\nboolean isNeedReadOfflineData = getIsNeedReadOfflineData();\t// 客户端自己实现是否开启,注意:该开关会读取所有离线地图数据,可能影响性能。\nparam.strName = "check_local_version";\nif (isNeedReadOfflineData)\n{\n\tparam.strValue = "1";\t// 0为关闭;非0为开启\n}\nelse\n{\n\tparam.strValue = "0";\n}\nconfig.extendedParamList.add(param);
protected void onCreate(@Nullable Bundle savedInstanceState) {\n MapDataService mapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\n \n // 初始化离线地图数据服务\n int ret = mapDataService.init(config, dataInitObserver);\n if (ret == 1)\n {\n Log.i(TAG, "init result: " + ret);\t\n // ...\n // 如使用U盘下载更新功能,可直接发起检测U盘城市数据列表,在《检测U盘城市数据列表》文档中介绍\n // mapDataService.requestDataListCheck(DownLoadMode.DOWNLOAD_MODE_USB, "/sdcard/USBData/", IDataListObserver);\n }\n \n // 添加离线地图数据异常观察者\n ErrorDataObserver errorDataObserver = new ErrorDataObserver();\n mapDataService.setErrorDataObserver(errorDataObserver);\n\n // 添加城市数据下载观察者,城市数据下载观察者在《下载/更新云端城市数据》文档中介绍\n // mapDataService.addNetDownloadObserver(DownloadObserver);\n}
MapDataService mapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\nmapDataService.unInit();