Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在MediaRecorder.setOutputFile()API 29中保存视频的路径_Java_Android - Fatal编程技术网

Java 在MediaRecorder.setOutputFile()API 29中保存视频的路径

Java 在MediaRecorder.setOutputFile()API 29中保存视频的路径,java,android,Java,Android,我正在创建屏幕录制应用程序。使用MediaRecorder,我需要告诉它的.setOutputFile()方法保存文件的路径。我曾经使用Environment.getExternalStoragePublicDirectory()方法获取路径,但API 29中不推荐使用此方法。在文档中,我发现现在要存储视频文件、音乐,您需要使用MediaStore,但在那里我只找到了如何将已创建的视频添加到多媒体资料中。现在我使用context.getExternalFilesDir()方法,并使用此代码将视频

我正在创建屏幕录制应用程序。使用
MediaRecorder
,我需要告诉它的
.setOutputFile()
方法保存文件的路径。我曾经使用
Environment.getExternalStoragePublicDirectory()
方法获取路径,但API 29中不推荐使用此方法。在文档中,我发现现在要存储视频文件、音乐,您需要使用
MediaStore
,但在那里我只找到了如何将已创建的视频添加到多媒体资料中。现在我使用
context.getExternalFilesDir()
方法,并使用此代码将视频添加到库中

public void addVideo(File videoFilePath, String name) {
        ContentValues values = new ContentValues(3);
        values.put(MediaStore.Video.Media.TITLE, name);
        values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
        values.put(MediaStore.Video.Media.DATA, videoFile.getAbsolutePath());
        getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
    }
此代码适用于除29之外的所有api。在29 api上,视频被添加到库中,但它不起作用,尽管如果您转到保存视频的文件夹并从那里开始,而不是从库中开始,它会起作用。用哪种方法指定
.setOutputFile()
方法的路径,以便api 29上的视频正常工作