Нет обратного вызова для startActivityForResult в случае MediaStore.INTENT_ACTION_VIDEO_CAMERA - PullRequest
1 голос
/ 23 октября 2019

В случае, когда пользователь выбирает камеру, он может либо захватить изображение, либо записать видео, и пользователь сможет показать то же самое в своем приложении.

Для этого случая используется MediaStore.INTENT_ACTION_VIDEO_CAMERA намерение, но в случае захвата изображения или записи видео обратного вызова не происходит.

Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
startActivityForResult(intent, VIDEO_CAMERA);

Для получения результата используйте следующий код: -

@Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_CANCELED) {
            return;
        }

        if (resultCode == RESULT_OK) {
            if (requestCode == VIDEO_CAMERA) {
                   Uri uri = data.getData();
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я наконец-то нашел решение, и оно выглядит следующим образом: -

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
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,VIDEO_CAMERA);

И, наконец, получает обратный вызов в onActivityResult, и я получил uri следующим образом: -

@Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_CANCELED) {
            return;
        }

        if (resultCode == RESULT_OK) {
            if (requestCode == VIDEO_CAMERA) {
                    Uri uri;
                    if (data == null || data.getData() == null) {
                        Bitmap bitmap (Bitmap)data.getExtras().get("data");
                        // TODO:Get uri from bitmap for image
                            uri = getImageUri(context, bitmap);
                    } else {
                        //Get uri for video
                        uri = data.getData();
                    }   


            }
       }
}
0 голосов
/ 23 октября 2019

Чтобы запустить камеру и получить результат обратно в onActivityResult(), вы должны создать намерение с MediaStore.ACTION_IMAGE_CAPTURE:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

Аналогично, для захвата видео используйте MediaStore.ACTION_VIDEO_CAPTURE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...