Использование камеры телефона через Intent - активность никогда не возвращается? - PullRequest
5 голосов
/ 18 октября 2010

Я использую камеру телефона в приложении для Android, чтобы сделать фотографию.Я использую Intents, чтобы использовать встроенное приложение камеры, и я использую следующий код:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FILEPATH)));
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE);

Он работает нормально, и камера включена.Я могу сделать фотографию, и телефон предоставляет мне три варианта: Отмена, Повтор, ОК.Первые две работы, нажав кнопку отмены, возвращает пользователя в приложение, но при нажатии OK и ничего не происходит.Видимо onActivityResult не вызывается, а камера просто остается на экране.Ничего в отладчике тоже нет.

Запуск приложения на Nexus One с Android 2.2.1.Та же проблема на эмуляторе под управлением Android 2.0.

Редактировать : протестировано на HTC Desire под управлением Android 2.2 с пользовательским интерфейсом HTC Sense: работает отлично.Ничего в эмаляторе, ни в Google N1.

Edit2 : кажется, что запрос на получение изображения HTC Desire работает лучше в том смысле, что он возвращает, но не учитывает установку EXTRA_OUTPUT и возвращаеттолько небольшое изображение в onActivityResult -call.Проверяя консоль ddms, когда телефон подключен к компьютеру, я вижу, что телефон хранит изображение на SD-карте, но путь не возвращается к моему приложению.Начинает казаться, что нет надежного способа использовать намерение камеры и получить изображение разумного размера.Плохо, плохо, плохо.

1 Ответ

1 голос
/ 18 октября 2010

После небольшого исследования, тестирования и чистой удачи мне удалось решить эту проблему.

Если опция EXTRA_OUTPUT для Intent содержит URI файла, который указывает на внутреннюю память устройства, вызовне удастся.Как это не удается, зависит от устройства.HTC Desire работает нормально на поверхности, но не может вернуть полноразмерное изображение.Google N1, с другой стороны, отказывается уходить из камеры.

Когда я изменил URI файла, чтобы он указывал на карту памяти, он отлично работал как для Desire, так и для Google N1.

Подводя итог: путь для хранения полноразмерного изображения ДОЛЖЕН указывать на SD-карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...