`
googlelee
  • 浏览: 114552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

监听SD卡操作 --转载

阅读更多
比如,我要监听sd卡的目录创建事件,新建一个类SDCardListener继承FileObserver:
Java代码
   1. import android.os.FileObserver;   
   2. import android.util.Log;   
   3.    
   4. /** 
   5.  * sd卡上的目录创建监听器 
   6.  * @author chroya 
   7.  * 
   8.  */   
   9. public class SDCardListener extends FileObserver {   
  10.    
  11.     public SDCardListener(String path) {   
  12.         /* 
  13.          * 这种构造方法是默认监听所有事件的,如果使用super(String,int)这种构造方法, 
  14.          * 则int参数是要监听的事件类型. 
  15.          */   
  16.         super(path);   
  17.     }   
  18.    
  19.     @Override   
  20.     public void onEvent(int event, String path) {          
  21.         switch(event) {   
  22.         case FileObserver.ALL_EVENTS:   
  23.             Log.d("all", "path:"+ path);   
  24.             break;   
  25.         case FileObserver.CREATE:   
  26.             Log.d("Create", "path:"+ path);   
  27.             break;   
  28.         }   
  29.     }   
  30. }   

import android.os.FileObserver; 
import android.util.Log; 
 
/**
* sd卡上的目录创建监听器
* @author chroya
*
*/ 
public class SDCardListener extends FileObserver { 
 
    public SDCardListener(String path) { 
        /*
         * 这种构造方法是默认监听所有事件的,如果使用super(String,int)这种构造方法,
         * 则int参数是要监听的事件类型.
         */ 
        super(path); 
    } 
 
    @Override 
    public void onEvent(int event, String path) {        
        switch(event) { 
        case FileObserver.ALL_EVENTS: 
            Log.d("all", "path:"+ path); 
            break; 
        case FileObserver.CREATE: 
            Log.d("Create", "path:"+ path); 
            break; 
        } 
    } 




     onEvent是回调,系统监听到事件后会触发此事件,参数event就是上面所说的事件类型,根据类型,我们可以做相应的处理,参数path就是触发事件的目录。

      然后使用它:

Java代码

   1. SDCardListener listener = new SDCardListener("/sdcard");   
   2. //开始监听   
   3. listener.startWatching();   
   4. /* 
   5. * 在这里做一些操作,比如创建目录什么的 
   6. */   
   7. //最后停止监听   
   8. listener.stopWatching();   

SDCardListener listener = new SDCardListener("/sdcard"); 
//开始监听 
listener.startWatching(); 
/*
* 在这里做一些操作,比如创建目录什么的
*/ 
//最后停止监听 
listener.stopWatching(); 



如果要在onEvent中做较多操作,最好用线程去做 ,以免因为阻塞接收不到后面的事件。

      最后补充一点,比较重要 :
      FileObserver对象必须保持一个引用,确保不被垃圾收集器回收掉,否则就不会触发事件了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics