Действие камеры по умолчанию не завершено. Нажмите кнопку OK.
Я вызываю камеру по умолчанию из своей активности, а затем обрабатываю onActivityResult. Мой код, похоже, отлично работает на LG Ally, который не имеет подтверждения при съемке. Однако, когда я запускаю одно и то же приложение на Nexus S, он предлагает мне "Ok", "Retake" или "Cancel", прежде чем вернуться к моей активности. Пока "Отмена" работает, возвращаясь к моей активности, не сохраняя изображение, "Ок", похоже, не имеет никакого эффекта, даже не возвращается к моей активности.
Мой код ниже:
private void captureImage() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/" + (new UserContextAdapter(this)).getUser() + "/");
path.mkdirs();
File file = new File(path, "Image_Story_" + mRowId.toString() + ".jpg");
newImageUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri);
startActivityForResult(intent, CAPTURE_IMAGE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case CAPTURE_IMAGE:
switch (resultCode ) {
case 0:
Log.i("CAPTURE", "Cancelled by User");
break;
case -1:
mImageUri = newImageUri;
setImageFromUri();
}
}
Ответы
Ответ 1
Я думаю, что у меня была точно такая же проблема.
Если путь сохранения изображения неправильный, камера не вернется в ваше приложение. Как только я убедился, что каталог существует, все работает нормально. Убедитесь, что каталог существует, тогда он должен работать.
- Изменить -
Я только что видел, что вы называете path.mkdirs();
, но я думаю, что он не работает. Как вы можете прочитать в android doc "Обратите внимание, что этот метод не бросает IOException при сбое. Абоненты должны проверять возвращаемое значение". Убедитесь, что каталог действительно существует.
HTH
Ответ 2
Кроме того, убедитесь, что ваше приложение имеет <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
, если вы используете Environment.getExternalStorageDirectory().getPath()
выше.
Надеюсь, что это поможет =)
Ответ 3
пожалуйста, проверьте это
Случай 1:
Uri newImageUri = null;
File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/");
path.mkdirs();
boolean setWritable = false;
setWritable = path.setWritable(true, false);
File file = new File(path, "Image_Story_" + System.currentTimeMillis() + ".jpg");
newImageUri = Uri.fromFile(file);
Log.i("MainActivity", "new image uri to string is " + newImageUri.toString());
Log.i("MainActivity", "new image path is " + newImageUri.getPath());
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri);
startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);
Случай 2:
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");
Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Log.i("MainActivity", "new image uri to string is " + imageUri.toString());
Log.i("MainActivity", "new image path is " + imageUri.getPath());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);
Я могу сохранять изображения через камеру на связях в обоих случаях
В случае 1:
a.Image хранится в пользовательской папке.
б. Если "System.currentTimeMillis()" изменено на ( "новая дата(). ToString()" ), изображение не сохраняется, и камера не возвращается к моей активности.
(Возможно, потому, что "System.currentTimeMillis" не имеет пробелов и "new Date(). ToString()" может иметь некоторые специальные символы и пробелы)
В случае 2:
а. Изображение сохраняется в папке с камерой
Спасибо всем
Ответ 4
У меня такая же проблема. Вы должны сделать только одно задание, в вашем хранилище на телефоне проверьте, что у вас есть каталог Картинки или нет. Если у вас нет такой библиотеки, сделайте это вручную.
Надеюсь, это сработает для вас.