Как вы структурируете приложение для Android, чтобы запустить Service
, чтобы использовать FileObserver
, чтобы при изменении наблюдаемого каталога (т.е. пользователь делает снимок) выполняется другой код. При отладке метод onEvent никогда не запускается.
Вот событие onStart, которое у меня есть в моей службе. Toast
запускается для "My Service Started..."
public final String TAG = "DEBUG";
public static FileObserver observer;
@Override
public void onStart(Intent intent, int startid) {
Log.d(TAG, "onStart");
final String pathToWatch = android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/";
Toast.makeText(this, "My Service Started and trying to watch " + pathToWatch, Toast.LENGTH_LONG).show();
observer = new FileObserver(pathToWatch) { // set up a file observer to watch this directory on sd card
@Override
public void onEvent(int event, String file) {
//if(event == FileObserver.CREATE && !file.equals(".probe")){ // check if its a "create" and not equal to .probe because thats created every time camera is launched
Log.d(TAG, "File created [" + pathToWatch + file + "]");
Toast.makeText(getBaseContext(), file + " was saved!", Toast.LENGTH_LONG);
//}
}
};
}
Но после этого Тоста, если я сделаю снимок, onEvent никогда не срабатывает. Это определяется путем отладки. Он никогда не попадает в точку останова, и Тост никогда не срабатывает.
Когда этот каталог просматривается, новое изображение сохраняется там.
Как вы получаете FileObserver
, работающий в Service
?