当前位置: 代码迷 >> Android >> Android 播音之ACTION_HEADSET_PLUG
  详细解决方案

Android 播音之ACTION_HEADSET_PLUG

热度:36   发布时间:2016-05-01 12:36:39.0
Android 广播之ACTION_HEADSET_PLUG
最近开发android程序,想捕获ACTION_HEADSET_PLUG广播来判断耳麦拔插事件,于是写了一个注册方法:
private HeadsetPlugReceiver registerHeadsetPlugReceiver(Context ctx){
HeadsetPlugReceiver headsetPlugReceiver = new HeadsetPlugReceiver();   
        IntentFilter intentFilter = new IntentFilter();  
        intentFilter.addAction(Intent.ACTION_HEADSET_PLUG);
        intentFilter.addAction(Intent.ACTION_MEDIA_BUTTON);
        intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
        intentFilter.setPriority(Integer.MAX_VALUE);
        ctx.registerReceiver(headsetPlugReceiver, intentFilter);
return headsetPlugReceiver;  
}

处理方法:
public class HeadsetPlugReceiver extends BroadcastReceiver {  

    @Override  
public void onReceive(Context context, Intent intent) {  
     if(intent.getAction() == Intent.ACTION_HEADSET_PLUG){
     if (intent.hasExtra("state")){  
     if (intent.getIntExtra("state", 0) == 0){      
            // 未接入耳麦设备
     if(CSwiperController.m_cswiperControllerState != CSwiperControllerState.STATE_IDLE){
     SendMessage(MSG_ONINTERRUPTED,null);
     }
     if (CSwiperController.m_isDetectDeviceChange) {
     CSwiperController.m_listener.onDeviceUnplugged();
     }
    
     // 终止所有任务,但线程不退出
     CSwiperController.StopAllWork(); // 终止所有作业     
     } else{
            // 接入耳麦设备
     if (CSwiperController.m_isDetectDeviceChange) {
     CSwiperController.m_listener.onDevicePlugged();
     }
     }
     }
//      }else if(AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())){
//      if(isDevicePresent()){
//      Log.w("Plugin","设备存在");
//      }else{
//      Log.w("Plugin","设备不存在");
//      }
//      Log.w("Plugin","设备变更...");
    
     }else if(intent.getAction() == Intent.ACTION_MEDIA_BUTTON){
     abortBroadcast();
     }else{
     ;
     }
    } //onReceive
    
}// class

AndroidManifest.xml :

<receiver android:name="HeadsetPlugReceiver">  
        <intent-filter>  
          <action android:name="android.intent.action.HEADSET_PLUG"></action>
          <action android:name="android.intent.action.MEDIA_BUTTON"></action>
  相关解决方案