2014-09-17 3 views
0

나는 사진을 서버에 자동으로 업로드하는 Android 애플리케이션과 같은 보관 용 계정을 작성했습니다. 사용자가 카메라로 사진을 찍어 SD 카드에 저장하면 이러한 사진을 업로드하는 것으로 나타납니다.항상 사용자 카메라 이벤트를 청취하는 방법

오랫동안 듣기 위해 서비스를 시작했고, 카메라 관찰 이벤트를 듣기 위해 콘텐츠 관찰자를 등록했습니다. 그러나 OS가 자원 압박을 받고있을 때 서비스가 중단되고 내용 참관인은 더 이상 사격을 당하지 않을 것입니다. 따라서 콘텐츠 관찰자를 항상 효과있게 만드는 방법은 무엇입니까?

사실, 내 질문은 콘텐츠 관찰자가 서비스와 마찬가지로 가능한 한 오래 실행되도록하는 방법을 묻는 것입니다. 그리고 Content Observer가 최선의 선택이 아니라면 무엇이 다른가요?

+0

을 내가 http://www.vogella.com/tutorials/AndroidBroadcastReceiver A [브로드 캐스트 리시버 (당신이 상자를 갖고있을 것 /article.html) intent.ACTION_MEDIA_SCANNER_SCAN_FILE 의도에 대해 –

+0

하지만 나는 그것을 즉시 처리하지 않는다고 생각한다. –

+0

괜찮 았으면, [ACTION_IMAGE_CAPTURE] (ht tp : //developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE) –

답변

1

이 시도하지만 몇 가지 제한 사항이 있습니다 :

<receiver android:name=".pictureReceiver" > 
     <intent-filter android:priority="10000" > 
      <action android:name="android.intent.action.CAMERA_BUTTON" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
</receiver> 

브로드 캐스트 리시버가 현재 "android.intent.action.CAMERA_BUTTON"에 대해 듣고 있어요 구현했습니다. 그러나이 기능을 원할 때 호출되지 않는 것 같습니다. 전경 활동이 이벤트를 소비하지 않는 경우에만 브로드 캐스트를 수신합니다.

또는

당신은 FileObserver 사용할 수 있습니다

new FileObserver(path) { 
@Override 
public void onEvent(int event, String path) { 
    if (event == FileObserver.CREATE) 
     Toast.makeText(getActivity(), "File created", Toast.LENGTH_SHORT).show(); 
    } 
}.startWatching(); 

Tutorial Link

+0

이 솔루션을 발견하고 ContentObserver 제안을 모두 시도했습니다 내 요구 사항을 충족시키지 마십시오. 항상 카메라 이벤트를 청취하고 사진을 찍은 순간 즉시 업로드해야합니다. –

+0

덕분에 –

+0

덕분에 FileObserever를 사용할 수 있습니다. –