android 监听耳机插拔

来源:互联网 发布:pchome 软件 编辑:程序博客网 时间:2024/05/01 20:04
两种方式
1、在activity里面通过BroadcastReceiver Inter消息来监听耳机插拔 
//实现类
private HeadsetReceiver mHeadsetReceiver ;
public class HeadsetReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
       if (intent.getAction().equalsIgnoreCase(Intent.ACTION_HEADSET_PLUG)) {
                 int state = intent.getIntExtra("state", 0);
           if (intent.hasExtra("state")) {
                        if (intent.getIntExtra("state", 0) == 0) {
                                     //Headset is not plugged    
                                     log.v(TAG,"耳机未插入");   
                        } else if (intent.getIntExtra("state", 0) == 1)//Headphones into
                        {
                              log.v(TAG,"耳机已插入");   
                       }
                 }
     }
 }
}
调用:
public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
              registerReceiver(mHeadsetPlugUnplugBroadcastReceiver,
              new IntentFilter(Intent.ACTION_HEADSET_PLUG));
}


2 、通过线程监听 打开state文件 比对里面的值来检测耳机是否插入 
      1:表示已插入耳机,0:表示未插入耳机
      private  FileReader file;
      private  String HEADSET_STATE_PATH = "/sys/class/switch/h2w/state";
       public void spraygunRun() {
        new Thread(new Runnable() {
            public void run() {
                    try {
                        while(!Thread.currentThread().isInterrupted()){
                        Thread.sleep(1000);
                        file = new FileReader(HEADSET_STATE_PATH); 
                        char[] buffer = new char[1024]; 
                        int len = file.read(buffer, 0, 1024); 
                        int headsetState = Integer.valueOf((new String(buffer, 0, len)).trim());
                        if(headsetState==0){
                              log.v(TAG,"耳机未插入");
                          }
                       }
                    } catch (Exception e) {
                        Thread.currentThread().interrupt();
                    }
                }
        }).start();
    }
0 0
原创粉丝点击