我正在开发一款应用程序,可以将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 Accsess Framework。所以我用它。发送意图并将Uri返回到SD卡上的已挑选文件夹。现在到了棘手的部分。这个funktion应该创建一个File并返回一个准备好“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文件...感谢您的时间!