Кадрирование изображения на Droid X устанавливает полученное изображение в качестве обоев - PullRequest
4 голосов
/ 13 сентября 2010

У меня проблема с моей программой при попытке обрезать изображение, выбранное пользователем из его галереи. Пока что проблема возникает только при работе на Droid X, так как работает на оригинальном мото 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);
 }
}

}

Может кто-нибудь помочь мне с этим?

Ответы [ 3 ]

3 голосов
/ 06 октября 2010

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

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

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

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

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

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

1 голос
/ 17 сентября 2010

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

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

Когда я вызываю намерение обрезать, я передаю

i.putExtra("output", croppedOutputUri);
0 голосов
/ 08 июля 2013

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

i.putExtra("setWallpaper", false);

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

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

...