首页 > 解决方案 > Android将录像机视频保存到外部存储

问题描述

我需要在特定位置录制和保存视频(getExternalFilesDir(Environment.DIRECTORY_MOVIES)),然后在 videoview 中显示,

我现在的代码:

buttonSR.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                launchRecordVideoActivity.launch(intent);
            }
});


ActivityResultLauncher<Intent> launchRecordVideoActivity= registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        Intent data = result.getData();
                        Uri videoUri = data.getData();
                        videoView.setVideoURI(videoUri);
                        videoView.start();
                    }
                }
});

那是我现在的代码,但是它将文件保存到画廊。我试着这样做:

buttonSR.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                File storageDir = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                String strFileName = "MP4_" + timeStamp +"_";
                File fileUri;

                try {
                    fileUri = File.createTempFile(strFileName,".mp4",storageDir);
                    filmpath=storageDir+strFileName+".mp4";
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);
                    startActivityForResult(intent, REQUEST_VIDEO_CAPTURE);

                } catch (IOException e) {
                    e.printStackTrace();
                }

                launchRecordVideoActivity.launch(intent);

            }
        });
}

但是代码只在 getExternalFilesDir(Environment.DIRECTORY_MOVIES) 目录中创建了额外的 EMPTY 0KB 文件,该文件是空的,所以我看不到视频。我的第二个版本的 buttonSR onclick 是否缺少某些内容,或者是否有不同的方式来做我需要做的事情?

标签: javaandroidvideomediastore

解决方案


推荐阅读