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

时间:2020-02-29 16:05:36

标签: android xml parse-platform android-camera-intent

目前,我已经完成了一些流程,我可以向您展示。目的是录制视频并将其保存到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);

        }
    }

1 个答案:

答案 0 :(得分:0)

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

从不硬编码路径。

documentation for FileProvider对此有一个解释,用于<external-path>

代表外部存储区根目录中的文件。该子目录的根路径与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(例如活动)。