我正在开发一个应用程序,可以将来自 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 文件,存储在公共存储空间中......谢谢您的时间!