mirror of
				https://github.com/pierre42100/ComunicAndroid
				synced 2025-11-04 11:34:06 +00:00 
			
		
		
		
	Upgraded image selection.
This commit is contained in:
		@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user