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

问题描述 投票:0回答:1

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

Error description

这将来自此...

This code will start the recording

然后我将向您展示我的xml /提供商...How is created

和文件...

The file

[请注意,我也在同一片段中成功添加了图片,我不知道是否从此文件中进行了某些更改,但图片会出现任何问题。

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

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

        }
    }
android xml parse-platform android-camera-intent
1个回答
0
投票

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

Never硬编码路径。

documentation for FileProvider具有FileProvider的解释:

代表外部存储区根目录中的文件。该子目录的根路径与<external-path>返回的值相同。

因此,您需要替换:

Environment.getExternalStorageDirectory()

with:

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

但是请注意,您不能在Android 10及更高版本的设备上使用File folder=new File(Environment.getExternalStorageDirectory(), "test_drives"); 。因此,如果您打算将此应用程序公开发布,则需要做其他事情,因为您的某些用户可能正在运行Android 10及更高版本。例如,您可以将Environment.getExternalStorageDirectory()元数据切换为使用FileProvider,然后使用:

<external-files-path>

...其中File folder=new File(context.getExternalFilesDir(null), "test_drives"); context(例如活动)。

© www.soinside.com 2019 - 2024. All rights reserved.