Android,获取视频照片与刷新媒体库

在Android开发中,我们常常需要获取设备上已有的视频和照片,并且在更新这些媒体后,需要及时刷新媒体库。本文将介绍如何在Android应用程序中获取视频和照片,并在更新后刷新媒体库。

一、获取视频和照片

1. 权限

在获取视频和照片之前,我们需要添加以下权限到AndroidManifest.xml文件中:

```

```

这些权限将允许我们访问外部存储器。

2. 查询视频和照片

我们可以使用以下代码来获取设备上已有的所有照片和视频:

```

String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };

String selection = MediaStore.Images.Media.MIME_TYPE + "=? or "

+ MediaStore.Images.Media.MIME_TYPE + "=? or "

+ MediaStore.Images.Media.MIME_TYPE + "=? or "

+ MediaStore.Images.Media.MIME_TYPE + "=?";

String[] selectionArgs = new String[] { "image/jpeg", "image/png", "image/jpg", "video/mp4" };

String sortOrder = MediaStore.Images.Media.DATE_TAKEN + " DESC";

Cursor cursor = getContentResolver().query(

MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

projection,

selection,

selectionArgs,

sortOrder);

```

这里我们查询了图片和视频的MIME类型,并以拍摄日期降序排列。此查询将返回一个游标,其中包含所有匹配条件的媒体文件的ID和路径。

3. 显示视频和照片

我们可以将上面的查询结果用于加载相册或相册列表,如下所示:

```

while (cursor.moveToNext()) {

String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));

// 加载图片或视频到UI上

}

```

在UI上显示视频和照片时,我们可以使用图片加载库如Picasso或Glide,也可以使用系统提供的ImageView和VideoView。

二、刷新媒体库

在我们新拍摄或下载了一个视频或照片之后,如果不及时更新媒体库,我们的应用程序将无法访问到这些新的媒体。因此,我们需要在添加新媒体到系统文件夹后刷新媒体库。

1. 授权

在Android 6.0以上版本中,除了添加以上权限外,我们还需要在运行时请求读写权限。如果我们没有获得这些权限,我们将无法访问外部存储器。

2. 刷新媒体库

我们可以使用以下代码刷新媒体库:

```

public static void refreshGallery(Context context, String path) {

MediaScannerConnection.scanFile(context,

new String[] { path },

null,

new MediaScannerConnection.OnScanCompletedListener() {

@Override

public void onScanCompleted(String path, Uri uri) {

// 文件已被添加到媒体库

}

});

}

```

这里我们使用了MediaScannerConnection类,并指定了要扫描的文件路径。在scanFile方法完成后,系统会发送一个广播告知媒体库变化了。

需要注意的是,这里的path参数必须是绝对路径,而不是相对路径或URI。

完整的刷新媒体库的代码应该放到一个AsyncTask中,以避免阻塞主线程。

```

private static class MediaScanner extends AsyncTask {

private Context mContext;

MediaScanner(Context context) {

this.mContext = context;

}

@Override

protected Void doInBackground(String... paths) {

for (String path : paths) {

MediaScannerConnection.scanFile(mContext,

new String[] { path },

null,

new MediaScannerConnection.OnScanCompletedListener() {

@Override

public void onScanCompleted(String path, Uri uri) {

// 文件已被添加到媒体库

}

});

}

return null;

}

}

```

我们可以在更新媒体文件后启动此任务。

```

new MediaScanner(context).execute(newlyAddedFilePath);

```

现在,您已经了解了如何在Android应用程序中获取视频和照片,以及在更新媒体后刷新媒体库。在实际开发中,这些知识将非常有用。


点赞(75) 打赏
如果你喜欢我们的文章,欢迎您分享或收藏为众码农的文章! 我们网站的目标是帮助每一个对编程和网站建设以及各类acg,galgame,SLG游戏感兴趣的人,无论他们的水平和经验如何。我们相信,只要有热情和毅力,任何人都可以成为一个优秀的程序员。欢迎你加入我们,开始你的美妙旅程!www.weizhongchou.cn

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部