2014-09-17 4 views
0

Я пишу Dropbox как приложение для Android, которое автоматически загружает фотографии на сервер. Когда пользователь фотографирует камеру и сохраняет ее на SD-карте, будет отмечено, что вы загружаете эти фотографии.как слушать событие камеры пользователя все время

Я начал службу, чтобы обеспечить длительное прослушивание, и зарегистрировал наблюдателя контента для прослушивания событий камеры. Но когда OS под давлением ресурсов, он убьет службу, и Observer-контент больше не будет огнем. Итак, как заставить Content Observer работать всегда?

BTW, точка моего вопроса задает вопрос о том, как держать Observer-наблюдателя как можно дольше, как это делает сервис. И если Content Observer не самый лучший вариант, что еще есть.

+0

Я думаю, вы должны обрешетке а [BroadcastReceiver] (http://www.vogella.com/tutorials/AndroidBroadcastReceiver /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> 

BroadcastReceiver реализован, который в настоящее время прослушивает "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 –

Смежные вопросы