|
뭔가 좋아보여서 가져옴
http://www.androidpub.com/61214
안녕하세요.
Soul
Movie 라는 자막지원 Movie Player를 올렸는데요.
peterleem
님이 모토롤라 드로이드 폰에는
Dev
Tools - Media Scanner 가 메뉴가 없다고 하더군요.
그래서
이 기능을 넣어 달라고 하였는데요.
드로이드
폰에 Media Scanner 메뉴가 없다면 어디선가 이 작업을 하고 있을 것이고,
그렇다면,
Media Scanner 기능을 APP에서 호출해서 강제로 수행하도록 할 수 있다는 것이 되지요.
그래서,
오늘 이것과 관련에서 구글을 검색해 보니까,
방법이
있기는 하더군요.
sendBroadcast(new
Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
이렇게
코드를 넣어주면 되더군요.
01-05
12:42:36.138: DEBUG/MediaScannerService(163): start scanning volume
external
01-05
12:42:36.439: INFO/ActivityManager(56): Displayed activity
com.bolero.texttest/.TextTest: 35937 ms (total 35937 ms)
01-05
12:42:36.889: DEBUG/dalvikvm(163): GC freed 5745 objects / 337656 bytes in
166ms
01-05
12:42:37.368: DEBUG/MediaScanner(163): prescan time: 774ms
01-05
12:42:37.368: DEBUG/MediaScanner(163): scan time: 225ms
01-05
12:42:37.368: DEBUG/MediaScanner(163): postscan time: 25ms
01-05
12:42:37.377: DEBUG/MediaScanner(163): total time: 1024ms
01-05
12:42:37.377: DEBUG/MediaScannerService(163): done scanning volume
external
화면
UI는 아무것도 안 뜨는데요.
LogCat을
보면 위 처럼 MediaScanner 가 실행되어 스캔을 자동으로 완료 하더군요.
UI
처리를 위한 코드도 찾았습니다.
sendBroadcast
를 호출하기 전에
IntentFilter intentFilter = new
IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addDataScheme("file");
registerReceiver(mReceiver, intentFilter);
위
코드처럼 리시버를 등록해 놓으면 되더군요.
private
final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_STARTED)) {
mTitle.setText("Media Scanner started scanning " +
intent.getData().getPath());
}
else if (intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_FINISHED))
{
mTitle.setText("Media Scanner finished scanning " +
intent.getData().getPath());
}
}
};
덤으로
얻은 정보는
Environment.getExternalStorageDirectory()
이것을
외부저장장치의 디렉토리를 돌려주는 API 같더군요.
현재는
대부분 /sdcard 를 사용하는 거 같지만,
제조사에
따라 마운트하는 디렉토리 이름이 바뀔 수도 있을 텐데요.
외부저장장치
디텍토리는 저 API로 얻어서 사용해야 할 듯합니다 ^^
감사합니다.
'차근차근 > Android' 카테고리의 다른 글
안드로이드 어플리케이션 기초1 - 어플리케이션 컴포넌트 (0) | 2014.07.29 |
---|---|
안드로이드 어플리케이션 기초3 - 액티비티와 태스크 (0) | 2014.07.29 |
안드로이드 어플리케이션 기초4 - 프로세스와 쓰레드 (0) | 2014.07.29 |
안드로이드 에뮬레이터에서 로컬 PC 서버에 접근시 (0) | 2014.07.29 |
[Android/안드로이드] SD Card 사용하기. ( 접근하기 ) (0) | 2014.07.29 |