mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-12-26 13:38:59 +00:00
Upgraded image selection.
This commit is contained in:
parent
2433b388b3
commit
2e932d640b
@ -5,7 +5,6 @@ import android.app.Fragment;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
@ -32,16 +31,14 @@ import org.communiquons.android.comunic.client.data.models.ConversationsInfo;
|
||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||
import org.communiquons.android.comunic.client.data.runnables.ConversationRefreshRunnable;
|
||||
import org.communiquons.android.comunic.client.data.utils.AccountUtils;
|
||||
import org.communiquons.android.comunic.client.data.utils.FilesUtils;
|
||||
import org.communiquons.android.comunic.client.ui.activities.MainActivity;
|
||||
import org.communiquons.android.comunic.client.ui.adapters.ConversationMessageAdapter;
|
||||
import org.communiquons.android.comunic.client.ui.listeners.OnScrollChangeDetectListener;
|
||||
import org.communiquons.android.comunic.client.ui.utils.BitmapUtils;
|
||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||
import org.communiquons.android.comunic.client.ui.views.ScrollListView;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
@ -501,35 +498,15 @@ public class ConversationFragment extends Fragment
|
||||
if(resultCode == RESULT_OK){
|
||||
try {
|
||||
|
||||
Uri imageUri = data.getData();
|
||||
InputStream imageStream = getActivity().getContentResolver()
|
||||
.openInputStream(imageUri);
|
||||
|
||||
//Create a temporary file
|
||||
File tempFile = FilesUtils.getTempFile(getActivity());
|
||||
|
||||
if(tempFile == null){
|
||||
Log.e(TAG, "Could not create temporary file to store conversation image!");
|
||||
return;
|
||||
}
|
||||
|
||||
//Intend to transfer file
|
||||
if(!FilesUtils.InputStreamToFile(imageStream, tempFile)){
|
||||
Log.e(TAG, "Could not transfer the content of the image to the file !");
|
||||
return;
|
||||
}
|
||||
|
||||
//Load bitmap
|
||||
new_message_bitmap = BitmapUtils.openResized(tempFile, 1198, 1198);
|
||||
//Get new message bitmap
|
||||
new_message_bitmap = BitmapUtils.IntentResultToBitmap(getActivity(), data);
|
||||
|
||||
//Check for errors
|
||||
if(new_message_bitmap == null){
|
||||
Log.e(TAG, "Could not open temporary file!");
|
||||
remove_picked_image();
|
||||
return;
|
||||
}
|
||||
|
||||
//Schedule file deletion
|
||||
tempFile.deleteOnExit();
|
||||
|
||||
//Append image
|
||||
pick_image_button.setImageBitmap(new_message_bitmap);
|
||||
|
||||
@ -553,8 +530,8 @@ public class ConversationFragment extends Fragment
|
||||
|
||||
//Reset image button
|
||||
pick_image_button.setImageBitmap(null);
|
||||
pick_image_button.setImageDrawable(getActivity().getResources().
|
||||
getDrawable(android.R.drawable.ic_menu_gallery, getActivity().getTheme()));
|
||||
pick_image_button.setImageDrawable(UiUtils.getDrawable(getActivity(),
|
||||
android.R.drawable.ic_menu_gallery));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,12 +1,21 @@
|
||||
package org.communiquons.android.comunic.client.ui.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
|
||||
import org.communiquons.android.comunic.client.data.utils.FilesUtils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* Bitmap utilities
|
||||
@ -17,6 +26,11 @@ import java.io.File;
|
||||
|
||||
public class BitmapUtils {
|
||||
|
||||
/**
|
||||
* Debug tag
|
||||
*/
|
||||
private static final String TAG = "BitmapUtils";
|
||||
|
||||
/**
|
||||
* Convert a Bitmap into a base64-encoded string
|
||||
*
|
||||
@ -112,4 +126,48 @@ public class BitmapUtils {
|
||||
return inSampleSize;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn an intent data into Bitmap object
|
||||
*
|
||||
* @param context The context of the activity
|
||||
* @param data Intent data
|
||||
* @return Generated bitmap
|
||||
* @throws FileNotFoundException In case of failure during the process
|
||||
*/
|
||||
@Nullable
|
||||
public static Bitmap IntentResultToBitmap(Context context, Intent data)
|
||||
throws FileNotFoundException {
|
||||
|
||||
Uri imageUri = data.getData();
|
||||
InputStream imageStream = context.getContentResolver()
|
||||
.openInputStream(imageUri);
|
||||
|
||||
//Create a temporary file
|
||||
File tempFile = FilesUtils.getTempFile(context);
|
||||
|
||||
if(tempFile == null){
|
||||
Log.e(TAG, "Could not create temporary file to store intent image!");
|
||||
return null;
|
||||
}
|
||||
|
||||
//Intend to transfer file
|
||||
if(!FilesUtils.InputStreamToFile(imageStream, tempFile)){
|
||||
Log.e(TAG, "Could not transfer the content of the image to the file !");
|
||||
return null;
|
||||
}
|
||||
|
||||
//Load bitmap
|
||||
Bitmap bitmap = BitmapUtils.openResized(tempFile, 1198, 1198);
|
||||
|
||||
if(bitmap == null){
|
||||
Log.e(TAG, "Could not open temporary file!");
|
||||
return null;
|
||||
}
|
||||
|
||||
//Schedule file deletion
|
||||
tempFile.deleteOnExit();
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user