제목 그대로 Media Scan의 시점을 파악하고 싶습니다.
상황은 다음과 같습니다.
제가 만든 어플리케이션이 있고, 이 어플리케이션은 서비스를 하나 동작시킵니다.
동작중인 서비스는 Media Scan이 발생하는지, Scanning이 완료 되었는지 감지를 합니다.
다만 여기서의 Media Scan은 제가 만든 어플리케이션이 직접 시키는 것이 아니라 다른 어플리케이션에 의해서(?) 발생하는 Media Scan을 말합니다.
예를 들면.. 카메라 어플로 사진을 찍고 갤러리 어플리케이션을 실햄함으로서 Media Scan이 진행 됩니다.
여기서의 Media Scan은 카메라 어플이든 갤러리 어플이든 누가 해도 상관이 없습니다.
이렇게 발생한 Media Scan의 시작 및 종료 시점을 제가 만든 어플리케이션이 알고 싶어 합니다.
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_STARTED)){
BL.i("Media Scanner Start!!! >> " + CustomFunction.getFormatDate(System.currentTimeMillis()));
}
else if(intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)){
BL.i("Media Scanner END!!! >> " + CustomFunction.getFormatDate(System.currentTimeMillis()));
}
}
};
위의 구문은 앞서 언급한 서비스에 Broadcast 를 감지하는 부분입니다.
저렇게 하면 다른 어플리케이션에서 발생한 Media Scan또한 감지될 줄 알았는데 제대로 동작을 하지 않는것 같습니다.
참고로 위의 BL 클래스는 Android의 Log 클래스를 단순히 한번더 감싼것 입니다.. Log라고 생각하시면 됩니다.
혹시나 해서
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
구문을 통하여 제가 직접 미디어 스캔을 실행 시켰을 때는 위의 BroadcastReceiver 가 정상적으로 감지를 합니다.
음... 제가 무엇인가 간과하고 있는 사실이 있는걸까요?
예를 들면 애초부터 다른 어플리케이션에 의해서 발생한 Media Scan에 대한 Broadcast는 받아 볼수 없다던지.. 뭐.. 그런...
이 방법 외에도 이런저런 방법을 시도해 보고 삽질을 해보았는데.. 해결점을 못찾아 이렇게 질문 올립니다.