From 436c2bf3c60534552ef933e1a14f4fb318e1ff68 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 1 Jul 2016 15:08:34 +0200 Subject: [PATCH] Improved contact's picture update from camera --- src/org/linphone/ContactEditorFragment.java | 29 ++++++++++++++++++--- src/org/linphone/LinphoneContact.java | 1 + 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/org/linphone/ContactEditorFragment.java b/src/org/linphone/ContactEditorFragment.java index e94aefdc0..f8c523770 100644 --- a/src/org/linphone/ContactEditorFragment.java +++ b/src/org/linphone/ContactEditorFragment.java @@ -34,12 +34,14 @@ import android.app.Dialog; import android.app.Fragment; import android.content.Context; import android.content.Intent; +import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Parcelable; +import android.provider.ContactsContract.DisplayPhoto; import android.provider.MediaStore; import android.text.Editable; import android.text.InputType; @@ -372,10 +374,31 @@ public class ContactEditorFragment extends Fragment { image = BitmapFactory.decodeFile(filePath); } + Bitmap scaledPhoto; + int size = getThumbnailSize(); + if (size > 0) { + scaledPhoto = Bitmap.createScaledBitmap(image, size, size, false); + } else { + scaledPhoto = Bitmap.createBitmap(image); + } + image.recycle(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); - image.compress(Bitmap.CompressFormat.PNG , 75, stream); - photoToAdd = stream.toByteArray(); - contactPicture.setImageBitmap(image); + scaledPhoto.compress(Bitmap.CompressFormat.PNG , 0, stream); + contactPicture.setImageBitmap(scaledPhoto); + photoToAdd = stream.toByteArray(); + } + + private int getThumbnailSize() { + int value = -1; + Cursor c = LinphoneActivity.instance().getContentResolver().query(DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI, new String[] { DisplayPhoto.THUMBNAIL_MAX_DIM }, null, null, null); + try { + c.moveToFirst(); + value = c.getInt(0); + } catch (Exception e) { + Log.e(e); + } + return value; } private LinearLayout initNumbersFields(final LinphoneContact contact) { diff --git a/src/org/linphone/LinphoneContact.java b/src/org/linphone/LinphoneContact.java index e67ebed88..600d87ac8 100644 --- a/src/org/linphone/LinphoneContact.java +++ b/src/org/linphone/LinphoneContact.java @@ -144,6 +144,7 @@ public class LinphoneContact implements Serializable, Comparable