2012-09-07 2 views
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)); 
} 

그러나이 코드를 수정하여 나로 설정된 폴더의 내용을 읽으 려합니다. 어떻게해야합니까?

당신에게 아마

+0

http://mattgemmell.com/2008/12/08/what-have-you-tried/? – njzk2

+0

나는 응용 프로그램을 설치하고 시작하자마자 이미 파일 모음을 만든 폴더에 넣었습니다. 게시 된 코드를 다음과 같이 변경하려고했습니다. Uri uri = Uri.parse ("/ sdcard/MyFolder /"); – David

+0

디렉토리에서 파일을 읽으려면 http://android-coding.blogspot.com/2011/10/list-filesdirectory-in-android.html 시작 지점을 지정했습니다. 이것으로부터, 파일을 배열에 배치함으로써 임의의 파일을 쉽게 얻을 수 있습니다. – ariefbayu

답변

0

할 수있는 가장 쉬운 방법 중 하나 대단히 감사합니다 : 그들에게 1.JPG, 2.JPG, 3.JPG의 이름 즉, 수치 폴더에있는 각 파일의 이름 (그들은 모두 JPG 있습니다 랬를) 및 곧. 이제 폴더의 파일 수와 파일 수 사이에 뚜렷한 난수 배열을 생성하고이 난수를 .jpg과 연결하여 URI를 생성 한 다음 표시하면됩니다.

+0

기본적으로 내 문제는 매우 간단합니다, URI는 Media.EXTERNAL_CONTENT_URI가 아니어야하지만, 나로부터 지정된 경로; 커서는 해당 폴더에서 무작위로 나타납니다. – David

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; 

이 코드는 항상 Media.EXTERNAL_CONTENT_URI에 URI를 설정는 ... 상관없이 정수 P의 값이 무엇인지 ... 개인적으로 나는 실제로 심지어 당신이 뭘 하려는지 볼 수 없습니다. ..

+0

기본적으로 내 문제는 매우 간단합니다. URI는 Media.EXTERNAL_CONTENT_URI가 아니어야합니다. 커서는 해당 폴더에서 무작위로 나타납니다. – David

0

임의의 파일을 가져 오거나 선택한 디렉토리를 가져 오는 것은 매우 쉽습니다.

이 조각 사용할 수 있습니다 : 당신이 Uri를 반환하는 방법을해야 할 경우 반환 및 방법 서명을 변경할 수

private File getRandomFile(File root) { 
    File[] files = root.listFiles(); 

    Random randomizer = new Random();  
    return files[randomizer.nextInt(files.length - 1)]; 
} 

을 : cursor 요구 사항에 관해서는

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

, 당신이해야 이 메소드를 다른 메소드로 랩핑하고 이에 따라 브릿지 요청을 처리 할 수 ​​있습니다.

+0

감사합니다.하지만 내 응용 프로그램에서는 Uri 및 Cursor가 필요합니다. Uri 및 Cursor를 반환하기 때문에 – David

+0

업데이트 된 답변을 참조하십시오. – ariefbayu

관련 문제