Thnantos 2015-04-16 12:22
浏览 2627

使用FileObserver监听微信的录音文件无效

我使用FileObserver可以监听QQ的录音文件变化,但是监听微信的就不行,不知道为什么

 public class RecursiveFileObserver extends FileObserver {
    String str = null;
    Context mContext;
    MobileDataStatus mobileDataStatus = new MobileDataStatus();

    /** Only modification events */  
    public static int CHANGES_ONLY = CREATE | DELETE | CLOSE_WRITE  
            | DELETE_SELF | MOVE_SELF | MOVED_FROM | MOVED_TO;  

    List mObservers;  
    String mPath;  
    int mMask;
    private Context applicationContext;
    public RecursiveFileObserver(String path) {
        this(path, ALL_EVENTS);
    }

    public RecursiveFileObserver(String path, int mask) {  
        super(path, mask);  
        mPath = path;  
        mMask = mask;  
    }  

    @Override  
    public void startWatching() {
        if (mObservers != null)  
            return;  

        mObservers = new ArrayList();  
        Stack stack = new Stack();  
        stack.push(mPath);  

        while (!stack.isEmpty()) {  
            String parent = (String)stack.pop();  
            mObservers.add(new SingleFileObserver(parent, mMask));  
            File path = new File(parent);  
            File[] files = path.listFiles();  
            if (null == files)  
                continue;  
            for (File f : files) {  
                if (f.isDirectory() && !f.getName().equals(".")  
                        && !f.getName().equals("..")) {  
                    stack.push(f.getPath());  
                }  
            }  
        }  

        for (int i = 0; i < mObservers.size(); i++) {  
            SingleFileObserver sfo = (SingleFileObserver) mObservers.get(i);
            sfo.startWatching();  
        }  
    };

    @Override  
    public void stopWatching() {  
        if (mObservers == null)  
            return;  

        for (int i = 0; i < mObservers.size(); i++) {  
            SingleFileObserver sfo = (SingleFileObserver) mObservers.get(i);  
            sfo.stopWatching();  
        }  

        mObservers.clear();  
        mObservers = null;  
    };  

    @Override  
    public void onEvent(int event, String path) {  
        switch (event) {  
        case FileObserver.ACCESS:  
            Log.i("RecursiveFileObserver", "ACCESS: " + path);  
            break;  
        case FileObserver.ATTRIB:  
            Log.i("RecursiveFileObserver", "ATTRIB: " + path);  
            break;  
        case FileObserver.CLOSE_NOWRITE:  
            Log.i("RecursiveFileObserver", "CLOSE_NOWRITE: " + path);  
            break;  
        case FileObserver.CLOSE_WRITE:  
            Log.i("RecursiveFileObserver", "CLOSE_WRITE: " + path);  
            break;  
        case FileObserver.CREATE:
            str = path;
            Log.i("RecursiveFileObserver", "CREATE: " + path);  
            break;  
        case FileObserver.DELETE:
            Log.i("RecursiveFileObserver", "DELETE: " + path);  
            break;  
        case FileObserver.DELETE_SELF:  
            Log.i("RecursiveFileObserver", "DELETE_SELF: " + path);  
            break;  
        case FileObserver.MODIFY:  
            Log.i("RecursiveFileObserver", "MODIFY: " + path);  
            break;  
        case FileObserver.MOVE_SELF:  
            Log.i("RecursiveFileObserver", "MOVE_SELF: " + path);  
            break;  
        case FileObserver.MOVED_FROM:
            Log.i("RecursiveFileObserver", "MOVED_FROM: " + path);  
            break;  
        case FileObserver.MOVED_TO:
            Log.i("RecursiveFileObserver", "MOVED_TO: " + path);  
            break;  
        case FileObserver.OPEN:  
            Log.i("RecursiveFileObserver", "OPEN: " + path);  
            break;  
        default:  
            Log.i("RecursiveFileObserver", "DEFAULT(" + event + " : " + path);  
            break;  
        }  
    }

    /** 
     * Monitor single directory and dispatch all events to its parent, with full 
     * path. 
     */  
    class SingleFileObserver extends FileObserver {  
        String mPath;  

        public SingleFileObserver(String path) {  
            this(path, ALL_EVENTS);  
            mPath = path;  
        }  

        public SingleFileObserver(String path, int mask) {  
            super(path, mask);  
            mPath = path;  
        }  

        @Override  
        public void onEvent(int event, String path) {  
            String newPath = mPath + "/" + path;  
            RecursiveFileObserver.this.onEvent(event, newPath);  
        }  
    } 
}
 RecursiveFileObserver listener = new RecursiveFileObserver(Environment.getExternalStorageDirectory().toString() + File.separator+"Tencent/");

 listener.startWatching();
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能