[안드로이드/자바] 특정 디렉토리에 있는 이미지만 불러오기 부탁드립니다!!

조회수 2217회
package org.techtown.hello;

import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class PhotoUtil {

    String strImage;

    public ArrayList<Listitem> getAllPhotoPathList(Context context) {
        ArrayList<Listitem> photos = new ArrayList<>();

        Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

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

        Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);

        // 사진 아이디
        int columnIndexId = cursor.getColumnIndex(MediaStore.Images.Media._ID);

        // 사진 경로
        int columnIndexData = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);

        //사진 데이터
        int nCol = cursor.getColumnIndex(MediaStore.Images.Media.DATA); // bitmap

        while (cursor.moveToNext()) {
            strImage = cursor.getString(nCol);

            //if( strImage.startsWith("Environment.getExternalStorageDirectory().getAbsolutePath()"))
            //{
                Listitem Photo = new Listitem(cursor.getString(columnIndexId), cursor.getString(columnIndexData));
                photos.add(Photo);
            //}
        }

        cursor.close();

        // 최근 순으로 정렬
        Collections.sort(photos, new DescendingId());

        return photos;
    }

    class DescendingId implements Comparator<Listitem> {
        @Override
        public int compare(Listitem Photo, Listitem t1) {
            return ((Integer)Integer.parseInt(t1.getId())).compareTo((Integer)Integer.parseInt(Photo.getId()));
        }
    }

}

이렇게 코드를 짜면 모든 이미지 파일을 불러오게 되는데 특정 폴더에 있는 이미지만 불러오고 싶으면 떻게 바꿔야 할까요? startwith도 실행 해 봤는데 안뜹니다 ㅠ

Environment.getExternalStorageDirectory()+"/AP/album" 이라는 곳에 이미지가 있습니다.

  • 자답입니다. if( strImage.startsWith("Environment.getExternalStorageDirectory().getAbsolutePath()")) 큰따옴표 빼니깐 잘 돌아갑니다 하하하... SungHyeon Bae 2019.2.11 11:51

1 답변

  • 자답입니다.

    package org.techtown.hello;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.util.Log;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    
    public class PhotoUtil {
    
        String strImage;
    
        public ArrayList<Listitem> getAllPhotoPathList(Context context) {
            ArrayList<Listitem> photos = new ArrayList<>();
    
            Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    
            String[] projection = {
                    MediaStore.Images.Media._ID,
                    MediaStore.MediaColumns.DATA,
                    MediaStore.Images.Media.DATA,
            };
    
            Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
    
            // 사진 아이디
            int columnIndexId = cursor.getColumnIndex(MediaStore.Images.Media._ID);
    
            // 사진 경로
            int columnIndexData = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
    
            //사진 데이터
            int nCol = cursor.getColumnIndex(MediaStore.Images.Media.DATA); // bitmap
    
            while (cursor.moveToNext()) {
                strImage = cursor.getString(nCol);
    
                if( strImage.startsWith(Environment.getExternalStorageDirectory().getAbsolutePath()))
                {
                    Listitem Photo = new Listitem(cursor.getString(columnIndexId), cursor.getString(columnIndexData));
                    photos.add(Photo);
                }
            }
    
            cursor.close();
    
            // 최근 순으로 정렬
            Collections.sort(photos, new DescendingId());
    
            return photos;
        }
    
        class DescendingId implements Comparator<Listitem> {
            @Override
            public int compare(Listitem Photo, Listitem t1) {
                return ((Integer)Integer.parseInt(t1.getId())).compareTo((Integer)Integer.parseInt(Photo.getId()));
            }
        }
    
    }
    
    • 크 자답은 추천 엽토군 2019.2.11 15:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)