Как объединить ACTION_IMAGE_CAPTURE и ACTION_VIDEO_CAPTURE вместе - PullRequest
0 голосов
/ 26 июня 2018

Мне нужно позвонить Intent для изображения и видео одновременно. Кажется невозможным похоже на это . Таким образом, альтернативный способ сделать это - createChooser(). Но я застрял с кодом ниже.

 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
           takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, file.getAbsolutePath());
            Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, file.getAbsolutePath());
            Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
            Intent[] intentArray = new Intent[]{takePictureIntent};
            chooserIntent.putExtra(Intent.EXTRA_INTENT, takeVideoIntent);
            chooserIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
            startActivityForResult(chooserIntent, 1);

MediaStore.EXTRA_OUTPUT не работает. Файл пуст после возвращения с камеры. Однако он открывает окно выбора, как показано ниже, но файл пуст.

enter image description here

Вопросы: -
1.Как я могу объединить оба намерения и предоставить отдельные файлы как MediaStore.EXTRA_OUTPUT?

2. Как мы все знаем, в Android есть сотни приложений для камер, так что это хороший способ открыть такое намерение (будет ли оно работать на всех устройствах независимо от производителя и уровня API)? Или я должен двигаться с AlertDialog, чтобы открыть намерение для каждого действия отдельно.

1 Ответ

0 голосов
/ 20 июня 2019

Попробуйте этот код ниже:

 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        Intent chooserIntent = Intent.createChooser(takePictureIntent, "Capture Image or Video");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{takeVideoIntent});
        startActivityForResult(chooserIntent, CAMERA_IMAGES_REQUEST);
...