changed image path

This commit is contained in:
nuclearfog 2020-10-05 15:11:11 +02:00
parent 21e10c6937
commit 2777020637
No known key found for this signature in database
GPG Key ID: D5490E4A81F97B14
2 changed files with 26 additions and 18 deletions

View File

@ -1,5 +1,6 @@
package org.nuclearfog.twidda.activity;
import android.content.ContentValues;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
@ -8,6 +9,7 @@ import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.MediaController;
import android.widget.ProgressBar;
@ -238,10 +240,17 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
*
* @param status status code of the image saver
*/
public void onImageSaved(ImageSaver.ImageStat status) {
public void onImageSaved(ImageSaver.ImageStat status, String path) {
switch (status) {
case IMAGE_SAVE_SUCCESS:
Toast.makeText(this, R.string.info_image_saved, Toast.LENGTH_LONG).show();
// Add image to gallery
ContentValues values = new ContentValues();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.MediaColumns.DATA, path);
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
break;
case IMAGE_SAVE_FAILED:
@ -280,8 +289,8 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
String[] links = param.getStringArray(KEY_MEDIA_LINK);
if (links != null) {
String link = links[pos];
imageSave = new ImageSaver(this);
imageSave.execute(link, image);
imageSave = new ImageSaver(this, image, link);
imageSave.execute();
}
}
}

View File

@ -2,6 +2,7 @@ package org.nuclearfog.twidda.backend;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Environment;
import org.nuclearfog.twidda.activity.MediaViewer;
@ -14,7 +15,7 @@ import static android.os.Environment.DIRECTORY_PICTURES;
/**
* this class is for saving images into storage
*/
public class ImageSaver extends AsyncTask<Object, Void, ImageSaver.ImageStat> {
public class ImageSaver extends AsyncTask<Void, Void, ImageSaver.ImageStat> {
public enum ImageStat {
IMAGE_SAVE_SUCCESS,
@ -22,28 +23,26 @@ public class ImageSaver extends AsyncTask<Object, Void, ImageSaver.ImageStat> {
IMAGE_DUPLICATE
}
private WeakReference<MediaViewer> callback;
private File imagePath;
private final Bitmap image;
private final String link;
private final WeakReference<MediaViewer> callback;
private File imageFile;
public ImageSaver(MediaViewer activity) {
public ImageSaver(MediaViewer activity, Bitmap image, String link) {
this.callback = new WeakReference<>(activity);
this.image = image;
this.link = link;
// path where images to save
imagePath = activity.getExternalFilesDir(DIRECTORY_PICTURES);
if (imagePath == null) {
imagePath = activity.getFilesDir();
}
imageFile = Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
}
@Override
protected ImageStat doInBackground(Object[] data) {
protected ImageStat doInBackground(Void... v) {
try {
String link = (String) data[0];
Bitmap image = (Bitmap) data[1];
link = link.substring(link.lastIndexOf('/') + 1);
String name = "shitter_" + link;
File imageFile = new File(imagePath, name);
String name = "shitter_" + link.substring(link.lastIndexOf('/') + 1);
imageFile = new File(imageFile, name);
if (imageFile.exists())
return ImageStat.IMAGE_DUPLICATE;
FileOutputStream imageWrite = new FileOutputStream(imageFile);
@ -61,7 +60,7 @@ public class ImageSaver extends AsyncTask<Object, Void, ImageSaver.ImageStat> {
@Override
protected void onPostExecute(ImageStat status) {
if (callback.get() != null) {
callback.get().onImageSaved(status);
callback.get().onImageSaved(status, imageFile.toString());
}
}
}