Я не могу найти Путь к видео для захвата видео - PullRequest
0 голосов
/ 29 февраля 2020

на данный момент у меня есть какой-то процесс, и я мог бы показать вам. Цель состоит в том, чтобы записать видео и сохранить его в базе данных 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 голосов
/ 29 февраля 2020

Так я создаю файл ....

Никогда пути с жестким кодом.

Документация для FileProvider имеет это для объяснения <external-path>:

Представляет файлы в root области внешнего хранилища. Путь root этого подкаталога совпадает со значением, возвращаемым Environment.getExternalStorageDirectory().

Итак, вам нужно заменить:

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

на:

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

Обратите внимание, что вы не можете использовать Environment.getExternalStorageDirectory() на Android 10 и выше устройств. Таким образом, вам нужно будет сделать что-то еще, если вы собираетесь распространять это приложение публично, поскольку некоторые из ваших пользователей могут использовать Android 10 и выше. Например, вы можете переключить свои метаданные FileProvider на использование <external-files-path>, а затем использовать:

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

... где context - это Context (например, действие).

...