我有这段代码可以让我阅读手机图库的内容并随机滚动其内容。
public static Uri getRandomImage(ContentResolver resolver) {
String[] projection = new String[] {
BaseColumns._ID
};
Random rand = new Random();
int p = 2 + rand.nextInt(8-2+1);
Uri uri = p == 0 ? Media.EXTERNAL_CONTENT_URI : Media.EXTERNAL_CONTENT_URI;
Cursor cursor = Media.query(resolver, uri, projection, null, MediaColumns._ID);
if (cursor == null || cursor.getCount() <= 0) {
return null;
}
cursor.moveToPosition(new Random().nextInt(cursor.getCount()));
return Uri.withAppendedPath(uri, cursor.getString(0));
}
但是我想修改这段代码来读取我设置的文件夹的内容。我怎么能这样做?
非常感谢
答案 0 :(得分:0)
可能是最简单的方法之一:用数字命名文件夹中的每个文件,即(假设它们都是jpg)将它们命名为1.jpg,2.jpg,3.jpg等等。现在您需要做的就是在文件夹中的1个文件和多个文件之间生成一系列不同的随机数,并通过将此随机数与.jpg
连接起来生成uri,然后显示它们。
答案 1 :(得分:0)
也许你应该将URI设置为不同的值?
Random rand = new Random();
int p = 2 + rand.nextInt(8-2+1);
Uri uri = p == 0 ? Media.EXTERNAL_CONTENT_URI : Media.EXTERNAL_CONTENT_URI;
此代码始终将URI设置为Media.EXTERNAL_CONTENT_URI ...无论整数p的值是什么... 就个人而言,我实际上甚至看不到你想要做什么......
答案 2 :(得分:0)
获取随机文件或选择目录非常简单。
您可以使用此代码段:
private File getRandomFile(File root) {
File[] files = root.listFiles();
Random randomizer = new Random();
return files[randomizer.nextInt(files.length - 1)];
}
如果您需要返回Uri
的方法,则可以更改返回和方法签名:
private Uri getRandomFile(File root) {
File[] files = root.listFiles();
Random randomizer = new Random();
File f = files[randomizer.nextInt(files.length - 1)];
return Uri.fromFile(f);
}
对于cursor
要求,您应该能够将此方法包装到另一个方法并相应地桥接请求。