Итак, я пытаюсь запустить действие камеры, используя следующий код:
//In public void captureImage()
...
Intent cameraIntent = new Intent(MediaStore.ACTION_CAPTURE_IMAGE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File("/sdcard/image.jpg")));
startActivityForResult(cameraIntent, REQUEST_CAMERA);
А затем обработать результат:
//In onActivityResult()
...
case REQUEST_CAMERA:
Intent intent = new Intent (CurrentScreen.this, NextScreen.this);
intent.putExtra(data);
startActivity(intent);
CurrentScreen.this.finish();
...
Где я использую intent.putExtra(data)
, чтобы прикрепить маленькое растровое изображение к цели и использовать его в качестве эскиза в следующем упражнении, и файл полного размера предположительно сохраняется как /sdcard/image.jpg
.
Это ожидаемое поведение (в соответствии с документацией), когда у вас есть небольшое растровое изображение для миниатюры и большой сохраненный файл. Однако, когда я проверял это на G1 и Eris, я видел странное поведение.
На G1:
- Хотя resultCode показывает RESULT_OK, данные о намерениях, возвращаемые обработчику результатов, равны нулю.
- Кроме того, EXTRA_OUTPUT, кажется, полностью игнорируется, я понятия не имею, где он сохраняет изображение.
На Эрис:
- Данные о намерениях возвращаются, ОК
- EXTRA_OUTPUT также игнорируется, но он сохраняет изображения в обычном хранилище мультимедиа в
/sdcard/dcim/100media
Так что мой вопрос таков: есть ли способ получить последовательное поведение для того, что я пытаюсь сделать, используя стандартную активность камеры? Я мог бы написать пользовательское действие, чтобы попытаться заставить его работать так, как я хочу, но я бы предпочел избежать этого маршрута.