android 检测耳机是否插入-改进方案
2014-11-05 11:57
337 查看
上一篇转发博文的改进版
主Activity 类
他们之间使用 Handler 来传递消息。
1)当由耳机插入手机时,HeadsetPlugReceiver发送0x00 消息,主界面会收到该消息,并显示mic插入。
2) 当由耳机拨出手机时,HeadsetPlugReceiver发送0x01 消息,主界面会收到该消息,并显示mi拔出。
主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 id mText = (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; } @Override public 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拔出。
相关文章推荐
- android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- [学习记录]android 检测耳机是否插入
- android 检测耳机是否插入
- android 检测耳机是否插入
- Android实现检测耳机插入和拔出
- android 判断耳机是否插入的几种方式
- Android实现检测耳机插入和拔出
- android 耳机插入检测
- Android开发:检测耳机的插入状态
- android 得到是否插入耳机设备
- Android 检测是否连接蓝牙耳机
- android-检测耳机的插入和拔出动作
- Android 检测是否连接蓝牙耳机