Intent getData在视频捕获android

时间:2018-03-22 12:35:33

标签: android video android-intent camera

我正在使用Camera intent处理android视频捕获应用程序,它是来自android 5.0+的工作文件,但是在5.0以下它通过将intent.getData()值赋值为null而在onActivityResult中崩溃。我正在捕获视频的代码以及我想在onActivityResult中获取信息的位置如下:

public void takeVideoFromCamera(){

        File mediaFile =new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/myvideo.mp4");

        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        Uri videoUri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            videoUri = FileProvider.getUriForFile(this, "i.am.peace.by.murgency.provider", mediaFile);
        } else {
            videoUri  = Uri.fromFile(mediaFile);
        }
        intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0.7);
        intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 10983040L);//5*1048*1048=5MB
        startActivityForResult(intent, VIDEO_CAPTURE);
    }

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == this.RESULT_OK) {

            switch (requestCode) {

            case VIDEO_CAPTURE:
                        if (resultCode == RESULT_OK) {
                            Toast.makeText(this, "Video saved to:\n" +data.getData(), Toast.LENGTH_LONG).show();
                            showVideoImage(data.getData());
// Here data.getData() is crashing on Android 4.1,4.3,4.4 version and works fine on above version.
                            showVideoLabel = true;
                        } else if (resultCode == RESULT_CANCELED) {
                            Toast.makeText(this, "Video recording cancelled.",
                                    Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(this, "Failed to record video",
                                    Toast.LENGTH_LONG).show();
                        }
                    break;
}

0 个答案:

没有答案