У меня возникла проблема: поведение ACTION_IMAGE_CAPTURE зависит от производителя оборудования.Красивый способ получить ошибку с ACTION_IMAGE_CAPTURE
Я думаю, что лучший способ получить фото с камеры, установленной в фотогалерее должно быть что-то вроде следующих
, а затем получить URI в onActivityResult
:
switch (requestCode) {
case CAPTURE_IMAGE_REQUEST: {
if(resultCode == Activity.RESULT_OK) {
Uri uri = intent.getData();// content uri of photo in media gallery
//do something with this
}
break;
}
Но я вижу, что это не работает на многих устройствах; Более того, я нашел несколько различных сценариев поведения приложения Камера:
- некоторые устройства имеют bug с этим событием, так что нет никакого способа, чтобы получить fullsized фотографии, и вы можете получить 512 пикселей широкий фотографии с помощью файла TMP в общедоступном каталоге только
- некоторые устройства (включая мой) вставляют взятые фотографии в галерею, но не возвращают Uri. (getData() возвращает значение null, у намерений extras есть только логический ключ 'define-data', value = true) Если я попытаюсь получить фотографию через общедоступный tempfile, тогда фото будет вставлено в галерею и tempfile.
- некоторые устройства не вставить сфотографировались в галерею - и я должен сделать это вручную
- я не знаю, но может быть и другие разные scenarious
Итак, есть лучшие практики в управлении такими проблемами для охвата широкого спектра устройств и производителей?
В этом случае мне нужно взять фотографию с камеры, вставить ее в галерею, затем получить uri фотографии в галерее.
и проблемы все еще не исправлены .. – Arseniy
@muzhig Большинство ошибок исправлены, но, тем не менее, они не позволяют OEM-производителям обновлять обновления. – Reno