2

我有这段代码,可以让我阅读手机图库的内容并随机滚动其内容。

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));
}

但我想修改此代码以读取我设置的文件夹的内容。我怎样才能做到这一点?

非常感谢您

4

3 回答 3

0

可能是最简单的方法之一:用数字命名文件夹中的每个文件,即(假设它们都是 jpg)将它们命名为 1.jpg、2.jpg、3.jpg 等。现在您需要做的就是生成一个介于 1 和文件夹中文件数之间的不同随机数数组,并通过将这些随机数与.jpg然后显示它们连接来生成一个 uri。

于 2012-09-07T10:02:27.343 回答
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 的值是什么...就我个人而言,实际上我什至看不到您在那里尝试做什么...

于 2012-09-07T10:03:12.870 回答
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要求,您应该能够将此方法包装到另一个方法并相应地桥接请求。

于 2012-09-07T10:51:45.243 回答