Android는 추가한 File을 MediaPlayer나 Gallery에서 인식하지 못하는 경우가 종종 발생한다.
위와 같은 증상이 발생하는 이유는 Android는 Media File을 DB로 관리를 하는데
(Audio는 Audio DB에 Video는 Video DB) File은 추가 되었지만 File Format에 맞는
DB에 아직 추가가 되지 않았기 때문이다.
Media File을 DB에 추가하도록 Android Platform에 알려주는 방법으로는
1) mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(“file://”+ Environment.getExternalStorageDirectory())));
를 이용하여 SD Card 전체에 대해서 Media Scan 작업을 수행하는 방법이 있고
추가한 File에 대해서는 Media Scan 작업을 수행하는 방법이 있다.
2) Uri uri = Uri.parse(“file://” + path);
Intent i = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
i.setData(uri);
sendBroadcast(i);
추가한 File의 경로를 알고 있을 때는 2)번 방법을 사용하는 것이 속도면에서나 다른 작업에
지장을 주지 않는 면에서나 권장하는 방법이고
추가된 File의 경로를 알 수 없을 때에는 1)번 방법을 사용하여야 한다.
만약 웹에서 다운 받았거나, USB 케이블을 통해 추가한 파일이 갤러리나 Media Player에서 나오지 않을 떄는
안드로이드 마켓에서 SdSync앱을 다운받아 사용해보시는 것을 권장한다!
http://aroundck.tistory.com/211
오늘은 SD-Card ( External Storage ) 의 mount, unmount, media scanner 등의 상태 변화를 감지하는 법을 알아보겠습니다.
액션 | 설명 |
ACTION_MEDIA_MOUNTED | 마운트됨. 마운트 경로는 인텐트의 mData 필드로 조사, read-only 값은 읽기 전용미디어인지 조사 |
ACTION_MEDIA_UNMOUNTED | 언마운트 |
ACTION_MEDIA_EJECT | 사용자가 외부 미디어 제거 명령 응용 프로그램은 모든 열려진 파일 닫아야 함 |
ACTION_MEDIA_REMOVED | 외부 미디어가 제거됨 |
ACTION_MEDIA_NOFS | 인식 못하는 파일 시스템이거나 빈 미디어 |
ACTION_MEDIA_SCANNER_STARTED | 미디어 스케너가 스캔 시작 |
ACTION_MEDIA_SCANNER_FINISHED | 미디어 스캔 종료 |
ACTION_MEDIA_SCANNER_SCAN_FILE | 파일 검색했으며 DB에 파일 추가 |