我找不到用于捕获视频的视频路径

I cant find the Video Path for capturing video

目前我已经完成了一些流程,可以向您展示。目的是录制一段视频,保存到back4app数据库中。

这将来自于...

那我给你看我的xml/provider...

还有文件...

请注意我也在同一个片段中成功添加了图片我不知道如果我从这个文件中更改某些内容我会对图片有任何问题。

这就是我创建文件的方式....

private File getFilePath(){
    File folder=new File("sdCard/test_drives");
    if(!folder.exists()){
        folder.mkdir();
    }

    Date currentTime = Calendar.getInstance().getTime();

    video_file=new File(folder,"test_drives_"+currentTime+".mp4");
    return video_file;
}

这是我的 onActivityForResult 方法....

public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode==VIDEO_REQUEST && resultCode==RESULT_OK){
        ParseQuery<ParseObject> query= ParseQuery.getQuery("CitaTestDrive");
        query.getInBackground(idEventoTestDrive, new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject object, ParseException e) {
                videoUri=data.getData();
                String file=videoUri.getPath();
              File inputFile = new File(file);

                try {
                    fileInputStream = new FileInputStream(inputFile);
                } catch (FileNotFoundException ex) {
                    ex.printStackTrace();
                }
                Bitmap thumbnailBm = BitmapFactory.decodeStream(fileInputStream);
                ByteArrayOutputStream st = new ByteArrayOutputStream();
                thumbnailBm.compress(Bitmap.CompressFormat.JPEG, 50, st);
                byte[] byteArr = st.toByteArray();
                Date currentTime = Calendar.getInstance().getTime();

                ParseFile thumbFile = new ParseFile("TestDrive"+" "+currentTime+" "+nombreAsesor+".jpg", byteArr);
                object.put("Video",thumbFile);
                object.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        if(e==null){
                            Toast.makeText(getActivity(),"Video uploaded to server",Toast.LENGTH_LONG).show();
                        }else{
                            Toast.makeText(getActivity(),e.toString(),Toast.LENGTH_LONG).show();
                        }
                    }
                });

请记住,这是在片段中!

如果您需要其他任何东西,我会在这里为您提供更多信息,我会攻击我获取图片的方式...

 if (requestCode == REQUEST_IMAGE_SUBIR_CEDULA && resultCode == RESULT_OK) {
        if (data != null && data.getExtras() != null) {
            bitmap = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();
            ParseFile file = new ParseFile("image.jpg", byteArray);

            imagenSubirCedula.setImageBitmap(bitmap);

        }
    }

This is how i create the file....

永不 硬编码路径。

documentation for FileProvider<external-path>的解释是这样的:

Represents files in the root of the external storage area. The root path of this subdirectory is the same as the value returned by Environment.getExternalStorageDirectory().

因此,您需要替换:

File folder=new File("sdCard/test_drives");

与:

File folder=new File(Environment.getExternalStorageDirectory(), "test_drives");

不过请注意,您不能在 Android 10 及更高版本的设备上使用 Environment.getExternalStorageDirectory()。因此,如果您打算公开分发此应用程序,则需要做一些其他事情,因为您的某些用户可能 运行 Android 10 岁或更高。例如,您可以将 FileProvider 元数据切换为使用 <external-files-path>,然后使用:

File folder=new File(context.getExternalFilesDir(null), "test_drives");

...其中 contextContext(例如 activity)。