Обрезка изображения на Droid X устанавливает полученное изображение в качестве обоев

У меня возникла проблема с моей программой при попытке обрезать изображение, выбранное пользователем из его галереи. Пока что проблема появляется только при работе на Droid X, так как работа на оригинальном moto Droid работает нормально.

В основном проблема возникает, когда выполняется намерение обрезки. Как только пользователь обрезает фотографию и нажимает кнопку «Сохранить», он заменяет обои на главном экране сохраненным обрезанным изображением! Ни на мотодроиде, ни на эмуляторах этого нет. Ниже приведен код обрезки и сохранения картинки на SD-карту:

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode ==1){
if (resultCode == Activity.RESULT_OK) {
  Intent i = new Intent("com.android.camera.action.CROP");
  i.setData(data.getData());
  i.putExtra("noFaceDetection", true);
  i.putExtra("outputX", 80);
  i.putExtra("outputY", 80);
  i.putExtra("aspectX", 1);
  i.putExtra("aspectY", 1);
  i.putExtra("scale", true);


if(selectedImageString == null){
      ContentValues values = new ContentValues();
      values.put(android.provider.MediaStore.Images.Media.TITLE, "Temp_Icon1");
      values.put(android.provider.MediaStore.Images.Media.BUCKET_ID, "Temp_Icons");
      values.put(android.provider.MediaStore.Images.Media.BUCKET_DISPLAY_NAME,"Temp_Icons");
      values.put(android.provider.MediaStore.Images.Media.IS_PRIVATE, 1);
      selectedImageString = getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values).toString();
  }
  i.putExtra("output", Uri.parse(selectedImageString));
  startActivityForResult(i, 2);
}
}
 if(requestCode == 2){
 if (resultCode == Activity.RESULT_OK){
  uriPath = Uri.parse(selectedImageString);
  imageView.setImageURI(uriPath);
 }
}

}

Может кто-нибудь, пожалуйста, помогите мне с этим?


person Brian    schedule 13.09.2010    source источник
comment
Я вижу ту же проблему в своем приложении на Droid 2. Есть идеи? Я заметил, что приложение контактов на Droid 2 не имеет такого побочного эффекта, как обновление обоев после обрезки, поэтому должен быть способ избежать этого в наших приложениях...   -  person manisha    schedule 08.01.2011
comment
Связанный: Проблема с com.android.camera.action.CROP на Motorola Defy   -  person blahdiblah    schedule 05.03.2013


Ответы (3)


Я могу убедиться, что Droid X делает то же самое для меня даже с опцией «выход», упомянутой выше. Я пока не нашел способа обойти это, и я также рассмотрю возможность блокировки функции кадрирования для телефонов Droid X. Жалко, что здесь не работает.

Кстати, вы можете попробовать следующее...

i.putExtra("return-data", true);

Это возвращает изображение в возвращаемом намерении. Вы можете получить к нему доступ с помощью следующих...

BitMap BM = data.getParcelableExtra("data");

Однако это не поддерживается линейкой телефонов Galaxy S. Возвращает пустую посылку несмотря ни на что. Итак, я еще не нашел хорошего решения.

person Philip    schedule 06.10.2010

Возможно, поскольку вы не указываете, куда поместить данные при вызове намерения кадрирования, оно перезаписывает изображение.

Я думаю, что намерение обрезки является внутренним кодом, поэтому я не уверен, что мы можем знать наверняка (кстати, намерение обрезки не найдено на всех телефонах)

Когда я называю намерение урожая, я передаю

i.putExtra("output", croppedOutputUri);
person dweebo    schedule 17.09.2010
comment
Спасибо, я решил ограничить возможность обрезки только телефонами, которые я могу физически протестировать и подтвердить, что они работают так, как мне нужно. - person Brian; 22.09.2010
comment
@losSebos предполагает, что MediaStore.EXTRA_OUTPUT будет лучше, чем вывод. - person Jonathan; 14.03.2013

Вы пробовали размещать:

i.putExtra("setWallpaper", false);

Я взял это отсюда: https://github.com/lvillani/android-cropimage/blob/master/src/com/android/camera/CropImage.java

есть библиотека, которая, вероятно, была взята из оригинальных источников и изменена, и вы можете увидеть, что этот атрибут установлен там

person voytez    schedule 08.07.2013