You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DJI MSDK开发的安卓App无法在FlightRecords中找到.txt飞行日志

解决DJI MSDK安卓应用无法生成.txt飞行日志的问题
  • 原因说明:DJI官方APP的.txt飞行日志是其自身封装生成的定制化文本日志,MSDK默认仅生成底层原始数据的.dat文件,不会自动产出.txt格式的飞行数据日志。

  • 解决方案:

    1. 开启SDK调试日志基础配置
      初始化DJI SDK时,先开启调试模式并设置合适的日志级别,确保SDK能正常记录相关数据:

      DJISDKManager.getInstance().setDebugMode(true);
      DJISDKManager.getInstance().setLogLevel(DJILogLevel.VERBOSE);
      
    2. 通过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();
            }
        }
        
    3. 确保存储权限配置正确

      • 安卓10及以下:在Manifest中声明WRITE_EXTERNAL_STORAGE权限,并在运行时请求。
      • 安卓11及以上:需适配Scoped Storage,或申请MANAGE_EXTERNAL_STORAGE权限(针对全目录读写场景),保证APP能读写FlightRecords目录下的文件。
    4. 验证SDK版本兼容性
      确认使用的MSDK为最新稳定版,旧版本可能存在飞行记录解析接口不完善的情况,升级后可避免部分兼容性问题。

内容的提问来源于stack exchange,提问作者Daria Shevchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:32:46