안드로이드 에뮬레이터에서 그림 파일(jpg, png)을 다루기 위해서 필요한 기본적인 셋업 과정을 설명합니다. Sdcard 연결, 파일 카피, 미디어 스캐닝, 그리고 확인까지를 해보도록 하겠습니다.

안드로이드에서 실제 그림 파일(jpg, png)은 보통 외부 sdcard에 저장을 하게 됩니다.  그리고 그림 파일에 대한 정보는 sqlite db에 저장되어 content provider를 통해서 가져올수 있게 되어있습니다. 미디어 스캐닝을 하게 되면 자동으로 sdcard에 저장된 그림 파일에 대한 정보가 content provider를 통해서 db에 저장됩니다. 이 db 정보를 가져오기 위해서는 android.provider.MediaStore.Images를 사용합니다. 해당 db를 테스트하기 이전에 먼저 그림 파일을 에뮬레이터에 저장하고 db를 채워넣는 방법을 알아보겠습니다.

1. 안드로이드 에뮬레이터에서는 가상의 SD카드를 사용합니다. 먼저 가상의 SD카드 파일을 PC에서 생성합니다.
mksdcard유틸을 통해서 sdcard 이미지를 생성할 수 있습니다. mksdcard는 sdk/tools에 있습니다.

$ mksdcard [-l label] <size>[K|M] <file>

ex)
>mksdcard 256M mysdcard.sd  : 256메가바이트 용량을가지는 SD카드 이미지 생성

2. 에뮬레이터를 실행시킬 때 생성된 SD카드를 사용한다는 것을 알려줘서 로드 시킵니다.

$ emulator -sdcard <file>

보통 Eclipse에서 에뮬레이터를 실행시킨다면 Run Configurations에 보면 Target에 Additional Emulator Command Line Options가 있습니다. 그곳에 옵션을 추가합니다.

ex)
-sdcard d:\mysdcard.sd

안드로이드 1.5 부터는 위의 1, 2번 과정을 avd 생성시에 처리할수 있습니다. 이클립스의 avd manager에서 자동 처리 가능하니 참고하세요.

3. adb로 mount된 sdcard에 그림파일 넣기. adb는 sdk/tools에 있습니다.
SD카드는 에뮬레이터에서 /sdcard 디렉토리로 마운트 됩니다.

$ adb push <local> <remote>

ex)
>adb push abc.jpg /sdcard/abc.jpg

DDMS의 File Explorer로 파일이 제대로 들어가있는지 확인합니다.

4. Dev Tools 에서 Media Scanning
에뮬레이터의 어플리케이션중에서 Dev Tools를 실행시켜 Media Scanner를 클릭하면, SD카드에 있는 그림을 DB에 넣어줍니다. 보통은 미디어 스캐닝은 자동으로 알아서 되는데 혹시 제대로 그림이 안들어가있을 경우 실행시키면 됩니다.

5. Pictures 어플리케이션으로 확인
Pictures 어플리케이션을 실행하면 SD카드에 저장한 그림 파일을 확인할 수 있습니다.

이제 android.provider.MediaStore.Images로 이미지를 접근할수 있습니다.