diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/persistance/FileBackend.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/persistance/FileBackend.java | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 8fcda7c2..bc919788 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -14,7 +14,6 @@ import android.media.MediaMetadataRetriever; import android.net.Uri; import android.os.Build; import android.os.Environment; -import android.os.FileObserver; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import android.provider.OpenableColumns; @@ -58,7 +57,9 @@ import eu.siacs.conversations.utils.FileUtils; import eu.siacs.conversations.xmpp.pep.Avatar; public class FileBackend { - private final SimpleDateFormat imageDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmssSSS", Locale.US); + private static final SimpleDateFormat IMAGE_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US); + + public static final String CONVERSATIONS_FILE_PROVIDER = "eu.siacs.conversations.files"; private XmppConnectionService mXmppConnectionService; @@ -226,6 +227,7 @@ public class FileBackend { } public void copyFileToPrivateStorage(File file, Uri uri) throws FileCopyException { + Log.d(Config.LOGTAG,"copy file ("+uri.toString()+") to private storage "+file.getAbsolutePath()); file.getParentFile().mkdirs(); OutputStream os = null; InputStream is = null; @@ -248,7 +250,6 @@ public class FileBackend { close(os); close(is); } - Log.d(Config.LOGTAG, "output file name " + file.getAbsolutePath()); } public void copyFileToPrivateStorage(Message message, Uri uri) throws FileCopyException { @@ -338,6 +339,7 @@ public class FileBackend { } public void copyImageToPrivateStorage(File file, Uri image) throws FileCopyException { + Log.d(Config.LOGTAG,"copy image ("+image.toString()+") to private storage "+file.getAbsolutePath()); copyImageToPrivateStorage(file, image, 0); } @@ -431,16 +433,27 @@ public class FileBackend { return frame; } + private static String getTakePhotoPath() { + return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+"/Camera/"; + } + public Uri getTakePhotoUri() { - StringBuilder pathBuilder = new StringBuilder(); - pathBuilder.append(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)); - pathBuilder.append('/'); - pathBuilder.append("Camera"); - pathBuilder.append('/'); - pathBuilder.append("IMG_" + this.imageDateFormat.format(new Date()) + ".jpg"); - File file = new File(pathBuilder.toString()); + File file = new File(getTakePhotoPath()+"IMG_" + this.IMAGE_DATE_FORMAT.format(new Date()) + ".jpg"); file.getParentFile().mkdirs(); - return FileProvider.getUriForFile(mXmppConnectionService,"eu.siacs.conversations.files",file); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return FileProvider.getUriForFile(mXmppConnectionService, CONVERSATIONS_FILE_PROVIDER, file); + } else { + return Uri.fromFile(file); + } + } + + public static Uri getIndexableTakePhotoUri(Uri original) { + if ("file".equals(original.getScheme())) { + return original; + } else { + List<String> segments = original.getPathSegments(); + return Uri.parse("file://"+getTakePhotoPath()+segments.get(segments.size() - 1)); + } } public Avatar getPepAvatar(Uri image, int size, Bitmap.CompressFormat format) { |