Почему так сложно нормально фотографировать на разных телефонах Android?

Я сделал программу, основной функцией которой является использование API для фотографирования и сохранения их по указанному мной пути.

Но на разных телефонах все получается не так, как при тестировании на эмуляторе или телефоне с исходным ПЗУ Google.

Теоретически. Если бы я указал путь к Intent, фотография не должна была появиться в галерее телефона по умолчанию, но в MOTO Defy фотографии хранились как в моем пути, так и в каталоге изображений по умолчанию. А на самсунге у меня приложение молча вылетает при возврате с камеры Intent. И только на некоторых телефонах я могу вызвать меню, нажав кнопку меню в «Активности камеры». И даже некоторые из них сохраняют фотографии в размере, который я установил в меню настроек «Активность камеры».

Я думаю, это связано с тем, что производители настроили ПЗУ на своих телефонах, чтобы действие камеры действовало по-другому.

Кто-нибудь знает, как избежать этой ситуации? Или есть другой способ сделать фото не по умыслу "android.media.action.IMAGE_CAPTURE" ?

Ниже приведен код, как я делаю фотографии.

    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(getpath()+"_.jpg")));
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
    startActivityForResult(intent, 0);

person Aloong    schedule 20.07.2011    source источник


Ответы (2)


Способ, который предложил @balban shah, все равно работал, когда я пробовал.

Наконец, я обнаружил, что это связано с тем, что разные производители настраивают свои ПЗУ, включая приложение «Камера», поэтому лучший способ — не вызывать приложение камеры по умолчанию, вместо этого мы можем написать действие, использующее hardware.camera для съемки. Таких примеров в Интернете тоже немало.

person Aloong    schedule 09.08.2011

попробуйте использовать этот код, оставьте другие настройки такими же для фотосъемки

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(origImageFile));
startActivityForResult(cameraIntent, 0);
person Balban    schedule 20.07.2011