Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
Android 如何使用MediaStore获取特定持续时间(或小于该时间)的视频路径_Android_Video_Media Queries_Mediastore - Fatal编程技术网

Android 如何使用MediaStore获取特定持续时间(或小于该时间)的视频路径

Android 如何使用MediaStore获取特定持续时间(或小于该时间)的视频路径,android,video,media-queries,mediastore,Android,Video,Media Queries,Mediastore,我能够使用MediaStore获取文件系统中所有视频的路径。是否有任何方法可以使用MediaStore获取特定持续时间(或更短)的视频。喜欢视频持续时间小于15分钟 这些是我获取视频路径的代码 public void getVideoPaths(Context context) { Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.Video.Video

我能够使用MediaStore获取文件系统中所有视频的路径。是否有任何方法可以使用MediaStore获取特定持续时间(或更短)的视频。喜欢视频持续时间小于15分钟

这些是我获取视频路径的代码

public void getVideoPaths(Context context) {
    Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    String[] projection = {MediaStore.Video.VideoColumns.DATA};
    Cursor c = context.getContentResolver().query(uri, projection, null, null, null);
    if (c != null) {
        while (c.moveToNext()) {
            filesNames.add(c.getString(0));
        }
        c.close();
    }
}

MediaStore是一个媒体提供商,它包含内部和外部存储设备上所有可用媒体的元数据。你只需要有一个视频文件的uri,而不需要使用下面的代码

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfYourFile));
int duration = mp.getDuration();
然后检查具体的持续时间。您可以使用下面提到的另一个选项

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//use one of overloaded setDataSource() functions to set your data source
retriever.setDataSource(context, Uri.fromFile(videoFile));
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInMillisec = Long.parseLong(time );

retriever.release()
希望对您有所帮助。

String duration=Integer.toString(15*60*1000);
String duration = Integer.toString(15*60*1000);
Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Video.VideoColumns.DURATION + " < ?", new String[] {duration}, null);
游标c=context.getContentResolver().query(uri、投影、MediaStore.Video.VideoColumns.DURATION+“<?”,新字符串[]{DURATION},null);

这将只查询小于15分钟的文件

此方法将为每个文件创建一个MediaPlayer,因此它将减慢我的processcontext.getContentResolver().query(uri,projection,MediaStore.Video.VideoColumns.DURATION+“<?”,新字符串[]{DURATION DURATION},null);我们应该加上正确的时间