使用Intent录制视频会保存空文件

时间:2015-12-31 10:52:14

标签: android android-intent mediastore

这是我用来以MP4格式从Android设备录制视频的代码。正在创建文件,但大小为0字节。 这是我的代码: -

Button buttonStart;
File newFile;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initUI();
    buttonStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                newFile = File.createTempFile("vid", ".mp4", Environment.getExternalStorageDirectory());
            } catch (IOException e) {
                e.printStackTrace();
            }
            Uri outputFileUri = Uri.fromFile(newFile);
            Intent record = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            record.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(record, 5);
        }
    });
}

protected void initUI(){
    buttonStart = (Button) findViewById(R.id.buttonRecord);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 5){
        if(resultCode == RESULT_OK){
            try {
                newFile = File.createTempFile("vid", ".mp4", Environment.getExternalStorageDirectory());
            } catch (IOException e) {
                e.printStackTrace();
            }
            Toast.makeText(this, "Video Captured Successfully...!!", Toast.LENGTH_LONG).show();

        }
    }
}

我不明白出了什么问题。 有谁能够帮我 ... 感谢

2 个答案:

答案 0 :(得分:0)

String strVideoPath=null; //定义全局变量

打开视频录制的Intetn

void displayCamera() {
        File imagesFolder = new File(Environment
                .getExternalStorageDirectory(), getResources()
                .getString(R.string.app_name) + "foldername");
        try {
            imagesFolder.mkdirs();
        } catch (Exception e) {
        }

        File f_image = new File(imagesFolder, new Date().getTime() + ".mp4");
        Uri uriSavedVideo = Uri.fromFile(f_image);
        Intent intent = new Intent(
                MediaStore.ACTION_VIDEO_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedVideo);
        strVideoPath = f_image.getAbsolutePath();

        try {
            startActivityForResult(intent, 111);
        } catch (ActivityNotFoundException e) {
            e.printStackTrace();
        }
    }

OnActivity Result

上抓住它
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 111) {
            if (resultCode == mActivity.RESULT_OK) {
                //do stuff here on success
            }else{
                strVideoPath=null;
            }
        }
    }

答案 1 :(得分:0)

首先你需要创建一个目录

     File newFileLocation;
     try {
        newFileLocation = new File(Environment.getExternalStorageDirectory(), "videoyo");

                imagesFolder.mkdirs();
        newFile = new File(newFileLocation , "vid" + ".mp4");
            } catch (Exception e) {
        }