Fixed bug where contact photo did not scale up when cropped.
- Added scaleUpIfNeeded extra to gallery intents.
- Consolidated gallery "extras" code into common utility method.
Bug: 6678247
Change-Id: I4c2b9fb2a88d203fe06303b470f0eb35a5cc6766
diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index 7ae6e1e..9ca9cfd 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -16,17 +16,6 @@
package com.android.contacts.activities;
-import com.android.contacts.ContactLoader;
-import com.android.contacts.ContactLoader.Result;
-import com.android.contacts.ContactSaveService;
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.model.AccountType;
-import com.android.contacts.model.EntityDelta;
-import com.android.contacts.model.EntityDeltaList;
-import com.android.contacts.model.EntityModifier;
-import com.android.contacts.util.ContactPhotoUtils;
-
import android.content.ContentResolver;
import android.content.Intent;
import android.content.Loader;
@@ -39,9 +28,19 @@
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.DisplayPhoto;
-import android.provider.MediaStore;
import android.util.Log;
+import com.android.contacts.ContactLoader;
+import com.android.contacts.ContactLoader.Result;
+import com.android.contacts.ContactSaveService;
+import com.android.contacts.ContactsActivity;
+import com.android.contacts.ContactsUtils;
+import com.android.contacts.model.AccountType;
+import com.android.contacts.model.EntityDelta;
+import com.android.contacts.model.EntityDeltaList;
+import com.android.contacts.model.EntityModifier;
+import com.android.contacts.util.ContactPhotoUtils;
+
import java.io.File;
/**
@@ -123,12 +122,7 @@
if (myIntent.getStringExtra("mimeType") != null) {
intent.setDataAndType(myIntent.getData(), myIntent.getStringExtra("mimeType"));
}
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", mPhotoDim);
- intent.putExtra("outputY", mPhotoDim);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, mTempPhotoUri);
+ ContactPhotoUtils.addGalleryIntentExtras(intent, mTempPhotoUri, mPhotoDim);
startActivityForResult(intent, REQUEST_CROP_PHOTO);
diff --git a/src/com/android/contacts/detail/PhotoSelectionHandler.java b/src/com/android/contacts/detail/PhotoSelectionHandler.java
index 73296a6..569012e 100644
--- a/src/com/android/contacts/detail/PhotoSelectionHandler.java
+++ b/src/com/android/contacts/detail/PhotoSelectionHandler.java
@@ -16,16 +16,6 @@
package com.android.contacts.detail;
-import com.android.contacts.R;
-import com.android.contacts.editor.PhotoActionPopup;
-import com.android.contacts.model.AccountType;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.EntityDelta;
-import com.android.contacts.model.EntityDelta.ValuesDelta;
-import com.android.contacts.model.EntityDeltaList;
-import com.android.contacts.model.EntityModifier;
-import com.android.contacts.util.ContactPhotoUtils;
-
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ContentValues;
@@ -46,6 +36,17 @@
import android.widget.ListPopupWindow;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.Toast;
+
+import com.android.contacts.R;
+import com.android.contacts.editor.PhotoActionPopup;
+import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.model.EntityDelta;
+import com.android.contacts.model.EntityDelta.ValuesDelta;
+import com.android.contacts.model.EntityDeltaList;
+import com.android.contacts.model.EntityModifier;
+import com.android.contacts.util.ContactPhotoUtils;
+
import java.io.File;
/**
@@ -256,12 +257,7 @@
final Uri croppedPhotoUri = Uri.fromFile(new File(croppedPhotoPath));
final Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", mPhotoPickSize);
- intent.putExtra("outputY", mPhotoPickSize);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, croppedPhotoUri);
+ ContactPhotoUtils.addGalleryIntentExtras(intent, croppedPhotoUri, mPhotoPickSize);
return intent;
}
@@ -273,12 +269,7 @@
final Uri croppedPhotoUri = Uri.fromFile(new File(croppedPhotoPath));
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(inputPhotoUri, "image/*");
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", mPhotoPickSize);
- intent.putExtra("outputY", mPhotoPickSize);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, croppedPhotoUri);
+ ContactPhotoUtils.addGalleryIntentExtras(intent, croppedPhotoUri, mPhotoPickSize);
return intent;
}
diff --git a/src/com/android/contacts/util/ContactPhotoUtils.java b/src/com/android/contacts/util/ContactPhotoUtils.java
index 2bd8e80..49be19d 100644
--- a/src/com/android/contacts/util/ContactPhotoUtils.java
+++ b/src/com/android/contacts/util/ContactPhotoUtils.java
@@ -18,8 +18,11 @@
package com.android.contacts.util;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Bitmap;
+import android.net.Uri;
import android.os.Environment;
+import android.provider.MediaStore;
import android.util.Log;
import java.io.ByteArrayOutputStream;
@@ -87,6 +90,24 @@
return null;
}
}
+
+ /**
+ * Adds common extras to gallery intents.
+ *
+ * @param intent The intent to add extras to.
+ * @param croppedPhotoUri The uri of the file to save the image to.
+ * @param photoSize The size of the photo to scale to.
+ */
+ public static void addGalleryIntentExtras(Intent intent, Uri croppedPhotoUri, int photoSize) {
+ intent.putExtra("crop", "true");
+ intent.putExtra("scale", true);
+ intent.putExtra("scaleUpIfNeeded", true);
+ intent.putExtra("aspectX", 1);
+ intent.putExtra("aspectY", 1);
+ intent.putExtra("outputX", photoSize);
+ intent.putExtra("outputY", photoSize);
+ intent.putExtra(MediaStore.EXTRA_OUTPUT, croppedPhotoUri);
+ }
}