如何将ACTION_IMAGE_CAPTURE和ACTION_VIDEO_CAPTURE结合在一起

时间:2018-06-26 12:38:57

标签: android android-intent android-camera-intent

我需要同时呼叫Intent来获取图像和视频。 similar to this似乎是不可能的。因此,执行此操作的另一种方法是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 :(得分:0)

请尝试以下代码:

 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);