android 检测耳机是否插入-改进方案

来源:互联网 发布:2016word MAC中的替换 编辑:程序博客网 时间:2024/05/17 04:22

上一篇转发博文的改进版

主Activity 类


public class MainActivity extends Activity {private HeadsetPlugReceiver headsetPlugReceiver;TextView mText;// 当前页面用于显示信息的文本控件Handler mHandler;@Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// get view by idmText = (TextView)findViewById(R.id.readAudioResult);setListener();/* register receiver */ registerHeadsetPlugReceiver();  }private void setListener(){mHandler = new Handler(){@Override        public void handleMessage(Message msg) {if(msg.what == 0x00){mText.setText("mic 插入");}else if(msg.what == 0x01){mText.setText("mic 拨出");}}};}private void registerHeadsetPlugReceiver() {         headsetPlugReceiver = new HeadsetPlugReceiver();         headsetPlugReceiver.setSendHandler(mHandler);                IntentFilter intentFilter = new IntentFilter();         intentFilter.addAction("android.intent.action.HEADSET_PLUG");         registerReceiver(headsetPlugReceiver, intentFilter);     }@Override public void onStop(){unregisterReceiver(headsetPlugReceiver);// 在界面不可见的情况下,就完全需要注销该接收器super.onStop();}@Override public void onDestroy(){super.onDestroy();}}
继承于BroadcastReceiver的广播消息接受者类 HeadsetPlugReceiver
public class HeadsetPlugReceiver extends BroadcastReceiver {private static final String TAG = "HeadsetPlugReceiver"; //  发送消息队列Handler sendHandler;public Handler getSendHandler() {return sendHandler;}public void setSendHandler(Handler sendHandler) {this.sendHandler = sendHandler;}@Overridepublic void onReceive(Context context, Intent intent) {if (intent.hasExtra("state")){         if (intent.getIntExtra("state", 0) == 0){     //        Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();                Message msg = new Message();        msg.what = 0x01;sendHandler.sendMessage(msg);        }         else if (intent.getIntExtra("state", 0) == 1){ //        Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();        Message msg = new Message();        msg.what = 0x00;sendHandler.sendMessage(msg);        }} }}


他们之间使用 Handler 来传递消息。

  1)当由耳机插入手机时,HeadsetPlugReceiver发送0x00 消息,主界面会收到该消息,并显示mic插入。

  2) 当由耳机拨出手机时,HeadsetPlugReceiver发送0x01 消息,主界面会收到该消息,并显示mi拔出。

0 0
原创粉丝点击