Подтвердить что ты не робот

Действие камеры по умолчанию не завершено. Нажмите кнопку 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();
            }
    }
4b9b3361

Ответ 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

У меня такая же проблема. Вы должны сделать только одно задание, в вашем хранилище на телефоне проверьте, что у вас есть каталог Картинки или нет. Если у вас нет такой библиотеки, сделайте это вручную.

Надеюсь, это сработает для вас.