美文网首页Android
【Android】监听文件的创建

【Android】监听文件的创建

作者: 小八八八八八八 | 来源:发表于2019-07-11 17:50 被阅读0次

需求是监听到指定目录创建文件后,将其移动到其他目录,并将原文件无效化。因为直接删除会在通知栏提示,不得已采用此方法
这里我将华为截屏的图片移动到其他目录。
先上效果图


Gif.gif

其中的MP4文件是录屏文件。

监听文件,我用到了FileObserver

public class SDCardListener extends FileObserver {
    private static final String TAG = "SDCardListener";
    private Context mContext;
    public static String mSrcPath = "/storage/emulated/0/Pictures/Screenshots/";
    private String mDecPath = "/storage/emulated/0/Pictures/Dec/";

    public SDCardListener(String path, Context context) {
        super(path);
        this.mContext = context;
    }

    @Override
    public void onEvent(int event, @Nullable String path) {
        switch (event) {
            case FileObserver.CLOSE_WRITE:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        if (!path.endsWith("jpg")) {
                            return;
                        }
                        File srcFile = new File(mSrcPath, path);
                        File decFile = new File(mDecPath, path);
                        FileUtil.fileChannelCopy(srcFile.getAbsolutePath(), decFile .getAbsolutePath());
                        SystemClock.sleep(1000);
                        srcFile.renameTo(new File(mSrcPath, "temp"));
                        srcFile = new File(mSrcPath, "temp");
                        FileOutputStream fileOutputStream = null;
                        try {
                            fileOutputStream = new FileOutputStream(srcFile);
                            fileOutputStream.write("".getBytes());
                            fileOutputStream.flush();
                        } catch (Exception e) {
                            e.printStackTrace();
                            Log.d(TAG, "CLOSE_WRITE e:" + e.getMessage());
                        } finally {
                            CloseableUtil.close(fileOutputStream);
                        }
                        // 这里要传截图的原路径(清除原图片)
                        MediaScannerConnection.scanFile(mContext, new String[]{VEnvironment.getScreenshotsSrcFile(path).getPath()}, null, null);
                    
                    }
                }).start();
        }
    }
}

我在服务onCreate的时候对其进行初始化监听

public class FileObserverService extends Service {
    private static final String TAG = "FileObserverService";
    private SDCardListener listener;


    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (listener == null) {
            Log.i(TAG, "FileObserverService startWatching");
            listener = new SDCardListener(VEnvironment.getOutScreenshots(), getApplicationContext());
            //开始监听
            listener.startWatching();
        }
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (listener != null) {
            Log.i(TAG, "FileObserverService stopWatching");
            listener.stopWatching();
            listener = null;
        }

    }
}

这样就完成了。

相关文章

  • 【Android】监听文件的创建

    需求是监听到指定目录创建文件后,将其移动到其他目录,并将原文件无效化。因为直接删除会在通知栏提示,不得已采用此方法...

  • Android中的FileObserver

    一、概述 android.os包下面的FileObserver是一个用于监听文件访问创建修改删除移动等操作的监听器...

  • android监听文件创建,删除等的实现

    监听实现所需要的类public abstract class FileObserver他是基于linux内核的in...

  • 监听器获取spring配置文件创建的对象

    监听器获取spring配置文件创建的对象 前提 我们在使用监听器的时候,会用到spring配置文件创建的对象,那么...

  • FileObserver递归监听目录(解决无法监听目录的创建、删

    FileObserver递归监听目录(解决无法监听目录的创建、删除问题) 主要内容 为了解决Android媒体数据...

  • 解决NETCA的TNS-04415错误

    问题描述:创建了监听程序,服务里的监听服务也是打开的,但是在监听文件夹(app\Administrator\pro...

  • zk调用实例

    pom文件引入zookeeper包 连接zk并监听事件 如何创建znode并监听事件 改变znode数据并监听事件...

  • Issues List

    文件监听使用文件监听时需要注意,接受到文件创建事件时。当前文件写入工作不一定完成。所以受关注的文件不应当直接在受监...

  • Wi-Fi传输文件

    SGWiFiUpload SGWiFiUpload使用了CocoaHttpServer创建服务器,接受并监听文件 ...

  • 图标选择器

    一、巧用两次watch监听控制弹窗的显示 1.在component文件夹下创建文件夹chooseIcon,创建对应...

网友评论

    本文标题:【Android】监听文件的创建

    本文链接:https://www.haomeiwen.com/subject/gnwdkctx.html