2012-05-17 1 views
2

제 신청서에 캡처 된 사진 수를 늘려야합니다. 그래서 DCIM directory에 대해 FileObserver을 설정했습니다. 캡처 한 사진을 감시합니다.SD 카드를 장착 한 후 FileObserver를 등록하십시오.

그러나 DCIM directory이 더 이상 존재하지 않기 때문에이 FileObserver은 내 SD 카드를 마운트 해제 할 때 보지 않습니다. SD 카드를 마운트 할 때 android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE 의도를 얻은 후 FileObserver을 다시 등록하려고했습니다. 그러나 FileObserver은 등록되지 않습니다.

내 질문은 : SD 카드를 장착 한 후 FileObserver 시계를 만드는 다른 방법이

  1. 있습니까?
  2. 일부 장치 (HTC)에서는 SD 카드를 마운트 한 후 의도가 없습니다. 이 경우 어떤 방법을 사용할 수 있습니까?
  3. 자신의 소프트 버튼을 카메라에 내장에서 사용자가 촬영 한 사진을들을 수있는 다른 방법이 있습니다. 나는 내 카메라를 만들고 싶지 않다.

    fo = new FileObserver(path.toString(), 
            FileObserver.CLOSE_WRITE) { 
    
           @Override 
           public void onEvent(int event, String path) { 
            Log.d("yes", "event "+ event); 
            Log.d("operator", 
              "out side if" 
                + Phototaken 
                + externalStorageState 
                  .equals(Environment.MEDIA_MOUNTED)); 
            if (Phototaken == 0 && event == 8){ 
             String st = timeStamp(); 
             Log.d("operator", "in event " + Phototaken); 
             Log.d("operator", "lat: " + MainService.lat 
               + " " + "lng: " + MainService.lng + " " 
               + "location: " + MainService.addre 
               + " " + "time: " + st); 
             ptd.insert(st, String.valueOf(MainService.lat), 
               String.valueOf(MainService.lng), 
               MainService.addre); 
            } 
    
           } 
          }; 
          fo.startWatching(); 
    
+1

[사용자의 질문] (http://meta.stackexchange.com/q/132796/161198)을 기반으로 약간의 수정 작업을 수행했습니다. 그들이 맞는지 확인하십시오. 그리고 코드를 올바르게 포맷하십시오. 그것이 올바르게 보인다면 다른 사람들의 관심을 끌 가능성이 더 큽니다. – Bart

+0

대단히 감사합니다. – thej

답변

0

당신은/마운트 SD에 대한 마운트 해제 이벤트를보고 BroadcastReceiver 새로운을 만들 수 있습니다. 그런 다음 마운트 이벤트에서 FileObserver에게 DCIM 디렉토리 다시보기를 시작합니다.

당신은 당신이 원하는 이벤트를보고 텐트 필터를 지정해야합니다 공식 API 참조에서

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_MEDIA_MOUNTED); 
filter.addAction(Intent.ACTION_MEDIA_REMOVED); 

This snippet

은 외부 저장 장치의 상태를 모니터링하는 방법을 보여줍니다.