Сохраните Java.io.File в файловую систему Android на KitKat и выше

Я работаю над приложением, которое сохраняет тепловизионные изображения с камеры FLIR на SD-карту телефона. Я использую Android Marshmallow, и мне нужно использовать FLIR SDK.

В FLIR SDK есть класс "Рамка". У класса есть метод "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 Accsess Framework. Так что я использовал это. Отправьте Намерение и верните Ури в выбранную папку на SD-карте. Теперь к хитрой части. Эта функция должна создать файл и вернуть файл Java.io.File, который готов для метода Frame.save.

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-файл, который хранится в публичном хранилище... Спасибо за ваше время!

0 ответов

Другие вопросы по тегам