您的位置:首页 > 移动开发 > Android开发

android 监听耳机插拔

2014-05-13 10:40 204 查看
两种方式

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: