Позвольте мне самому ответить :) Мне удалось заставить его работать. Я все еще открываю Android. Прежде всего, приведенный выше код никогда не будет работать. Тем не менее, работать с камерой ... и проверять это все еще адская работа. Я не могу получить намерение работать в эмуляторе для 2.2, для 2.1 это работает. Но код работает на 2.2 и 2.1 на устройстве. Еще одна странная вещь, которую я обнаружил, заключается в том, что при подключении отладчика к устройству невозможно использовать MediaStore.Images.Media.EXTERNAL_CONTENT_URI. Выдает ошибку, что внешнее хранилище не существует. Это связано с подключением USB. Во всяком случае, код, используемый для намерения камеры:
String fileName = System.currentTimeMillis() + ".jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera");
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
try
{
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}
catch (Exception e)
{
Log.e(TAG, "", e);
}
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
ctx.startActivityForResult(intent, REQUEST_CODE_PHOTO);
Довольно стандартно, я добавил уловку try, чтобы приложение не зависало при подключении отладчика к моему устройству. Если вы передадите null для MediaStore.EXTRA_OUTPUT, камера покажет сообщение, что SD-карта не найдена. Что лучше, чем сбой.
После того, как вы сделаете снимок, камера вернется к вашей текущей активности, и вы сможете использовать изображение, которое будет сохранено в переменной imageUri.
В эмуляторе для 2.2 ошибка «FATAL EXCEPTION: GLThread 11» по-прежнему выдается, когда я пытаюсь использовать камеру, которая раздражает. У кого-нибудь есть решение заставить его работать на эмуляторе?