android - 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),仅此而已。每当我重命名文件、移动文件或从安卓相机拍照时,什么都没有发生。我错过了什么吗?我在监控错误的文件吗?
这是整个 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);
}
}
解决方案
推荐阅读
- reactjs - 为什么这个 React 路由器 NavLink 要么重定向要么成功提交,但不能同时提交?
- sql - 将 Excel 表格数据与 postgres DB 同步
- influxdb - 如何在 influxDB 中删除重复测量
- python - 计算 groupby 中的 nanmean 并根据子组将此均值应用于 DF 列
- django - Django 模板只出现第一个循环
- ios - 后台线程 - 两个网络调用
- vbscript - 覆盖Visual Basic脚本中的文件夹?
- c# - c# winforms怎么看文字的写法
- logistic-regression - 为逻辑回归标记名称
- node.js - 即使使用长超时配置,带有 NGINX 反向代理的节点似乎也会终止连接