使用DJI MSDK开发的安卓App无法在FlightRecords中找到.txt飞行日志
解决DJI MSDK安卓应用无法生成.txt飞行日志的问题
原因说明:DJI官方APP的.txt飞行日志是其自身封装生成的定制化文本日志,MSDK默认仅生成底层原始数据的
.dat文件,不会自动产出.txt格式的飞行数据日志。解决方案:
开启SDK调试日志基础配置
初始化DJI SDK时,先开启调试模式并设置合适的日志级别,确保SDK能正常记录相关数据:DJISDKManager.getInstance().setDebugMode(true); DJISDKManager.getInstance().setLogLevel(DJILogLevel.VERBOSE);通过FlightRecordManager解析.dat并生成.txt
MSDK提供了FlightRecordManager工具类,可监听.dat文件生成事件,解析后手动写入.txt文件:- 获取FlightRecordManager实例:
FlightRecordManager flightRecordManager = DJISDKManager.getInstance().getFlightRecordManager(); - 设置文件监听器,在新.dat文件生成时解析并生成txt:
flightRecordManager.setFlightRecordFileListener(new FlightRecordManager.FlightRecordFileListener() { @Override public void onNewFlightRecordFileGenerated(String datFilePath) { flightRecordManager.parseFlightRecordFile(datFilePath, new FlightRecordManager.ParseFlightRecordCallback() { @Override public void onParseSuccess(@NonNull FlightRecordData recordData) { // 自定义方法,将结构化飞行数据写入txt generateTxtLog(recordData, datFilePath.replace(".dat", ".txt")); } @Override public void onParseFailed(@NonNull DJIError error) { // 处理解析失败逻辑,比如日志打印 } }); } }); - 实现
generateTxtLog方法,将FlightRecordData中的字段(如飞行高度、GPS坐标、电池电量、飞行时间等)按需求格式写入文本文件,示例逻辑:private void generateTxtLog(FlightRecordData data, String txtPath) { StringBuilder logContent = new StringBuilder(); logContent.append("飞行时间: ").append(data.getFlightTime()).append("\n"); logContent.append("最大高度: ").append(data.getMaxHeight()).append("m\n"); logContent.append("GPS信息: ").append(data.getAircraftLocation().getLatitude()).append(", ").append(data.getAircraftLocation().getLongitude()).append("\n"); // 可添加更多需要的字段 try (FileWriter writer = new FileWriter(txtPath)) { writer.write(logContent.toString()); } catch (IOException e) { e.printStackTrace(); } }
- 获取FlightRecordManager实例:
确保存储权限配置正确
- 安卓10及以下:在Manifest中声明
WRITE_EXTERNAL_STORAGE权限,并在运行时请求。 - 安卓11及以上:需适配Scoped Storage,或申请
MANAGE_EXTERNAL_STORAGE权限(针对全目录读写场景),保证APP能读写FlightRecords目录下的文件。
- 安卓10及以下:在Manifest中声明
验证SDK版本兼容性
确认使用的MSDK为最新稳定版,旧版本可能存在飞行记录解析接口不完善的情况,升级后可避免部分兼容性问题。
内容的提问来源于stack exchange,提问作者Daria Shevchenko
相关产品推荐
相关产品推荐

