Как вы структурируете приложение для 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?