FileObserver улавливает только событие удаления

У меня есть служба, которая запускает FileObserver для отслеживания изображений, снятых камерой телефона, в частности файла:

String initialPictureFolder =  Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() + "/Camera/"; 

с помощью этой функции:

public void startFileObserver(String filePath){
    /* It only monitors this Folder, not any Subfolder */
    myFileOsberver = new PicturesFileObserver(filePath,UploadPhotosService.this);
    myFileOsberver.startWatching();
}

при этом FileObserver улавливает только события удаления (код 512) и ничего более. Когда я переименовываю файл, перемещаю файл или фотографирую с камеры Android, ничего не происходит. Я что-нибудь упускаю? Я отслеживаю неправильный файл?

Вот весь класс FileObserver

private static int mask = FileObserver.ALL_EVENTS; 

public PicturesFileObserver(String path,UploadPhotosService myService) {
    super(path,mask);
    this.rootDir = path;
    this.myService = myService;
    Log.e(TAG,"Observer is initialized on: "+rootDir);

}

@Override
public void onEvent(int event, @Nullable String path) {
   event &= FileObserver.ALL_EVENTS;
   Log.e(TAG,String.valueOf(event)); // ONLY PRINTS 512 
    if (path != null) {
        if (path.endsWith(".jpg") || path.endsWith(".png")) {
            if ((event == FileObserver.CREATE)) {
                Log.e(TAG, "File was created " + path);

            } else if ((FileObserver.MODIFY & event) != 0) {
                Log.e(TAG, "File was modified " + path);
            } else if ((FileObserver.DELETE & event) != 0) {
                Log.e(TAG, "File was deleted " + path);
            } else if ((FileObserver.MOVED_FROM & event) != 0) {
                Log.e(TAG, "File was brought here " + path);
            } else if ((FileObserver.MOVED_TO & event) != 0) {
                Log.e(TAG, "File was brought here " + path);
            }
        } else
            Log.e(TAG, "Path not beeing a photo: " + path);
    }
}

без event &= FileObserver.ALL_EVENTS; что вы получите?

user1506104 28.05.2018 15:03

Я обнаружил, что когда делается фотография, Система обновляет FileObserver не сразу, а через некоторое время, независимо от события & = FileObserver.ALL_EVENTS ;. Когда я делал снимок, я получаю следующие коды: 32 - ОТКРЫТЬ 1 - ДОСТУП 16 - ЗАКРЫТЬ НЕТ ЗАПИСАТЬ в случайном порядке и случайное появление каждого события

t_k_94 28.05.2018 15:12

Я все еще ничего не получаю, когда переименовываю файл внутри папки.

t_k_94 28.05.2018 15:18

какая у вас minSdkVersion?

Sagar 28.05.2018 16:33

люди ранее сообщали о проблеме, что FileObserver не работает на 6+

DarShan 28.05.2018 16:41

minSdkVersion, который у меня сейчас есть в моем проекте, - 14 <uses-sdk android: minSdkVersion = "14" /> Итак, исходя из ваших комментариев, следует ли мне отказаться от идеи использования FileObserver или вернуться к более старым версиям? Любая другая альтернатива?

t_k_94 29.05.2018 19:25
1
6
269
0

Другие вопросы по теме