0

我正在开发一个应用程序,可以将来自 FLIR 相机的热图像保存到手机上的 SD 卡中。我正在使用 Android Marshmallow,我必须使用 FLIR SDK。

FLIR SDK 中有一个“Frame”类。该类有一个方法“Frame.save”,需要一个 Java.io.File 来保存热图像:这来自文档:

public void save(java.io.File file,
             RenderedImage.Palette previewPalette,
             RenderedImage.ImageType previewImageType)
      throws java.io.IOException,
             java.lang.IllegalArgumentException

保存热 JPEG 文件,该文件具有渲染的视觉预览和嵌入的热数据

当我理解正确时,在 KitKat 或更高版本上,我必须使用 Storage Access Framework。所以我用了它。发送 Intent 并将 Uri 返回到 SD 卡上的选定文件夹。现在到棘手的部分。这个函数应该创建一个文件并返回一个为“Frame.save”方法准备好的Java.io.File。

public File getJavaFile (String Name, Uri myUri) {


      DocumentFile pickedDir = DocumentFile.fromTreeUri(context, myUri);                      // Document file aus URI
      DocumentFile DocumentFile = pickedDir.createFile("image/plain", Name + ".jpg" );

      File file = new File(DocumentFile.getUri().getPath());
      if(file.canWrite()){
          Log.d(TAG + "/getJavaFile", "File can write");
      }else {
          Log.e(TAG + "/getJavaFile", "File cannot write");
        }

      Log.d(TAG + "/getJavaFile:", "File Created:" + file.getPath());


    return file;
}

函数返回的文件不可读取或不可写入...否则,当我尝试直接创建文件时,如下所示:

String root = Environment.getExternalStorageDirectory().toString();
File file = new File(root + "/saved_images");
Log.d(TAG, file.getPath());

然后系统总是给我这个模拟文件夹:

E/MainActivity: /storage/emulated/0/saved_images

所以问题是:如何获得一个可用的 Java 文件,存储在公共存储空间中......谢谢您的时间!

4

0 回答 0