2017-09-05 92 views
0

当耳机插入android时,我只想从耳机发出声音。 (按报警音量)[Android]耳机插入时只有耳机声音

 AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
     audioManager.setStreamVolume(AudioManager.STREAM_ALARM,alarmVolume,0); 

     mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
     mediaPlayer.prepare(); 
     mediaPlayer.setLooping(false); 

     mediaPlayer.start(); 

回答

0

为此,您需要监听有线耳机状态。

private void registerWiredHeadsetIntentBroadcast() { 
    IntentFilter filter = new IntentFilter("android.intent.action.HEADSET_PLUG"); 
    this.wiredHeadsetReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      int state = intent.getIntExtra("state", 0); 
      int microphone = intent.getIntExtra("microphone", 0); 
      boolean hasWiredHeadset = state == 1; 
      isWiredHeadsetPlugged=hasWiredHeadset; 
       switch (state) { 
        case 0: 
         //unplugged 
         audioManager.setWiredHeadsetOn(false); 
         audioManager.setSpeakerphoneOn(true); 
         break; 
        case 1: 
         //plugged 
         audioManager.setWiredHeadsetOn(true); 
         break; 
        default: 
       } 
     } 
    }; 
    this.apprtcContext.registerReceiver(this.wiredHeadsetReceiver, filter); 
} 

将音频流类型分配给音频管理器,你很好。

+0

嗨,非常感谢。 不幸的是我尝试了以下,但它不起作用。帮帮我。 。 -------------------- 'AudioManager audioManager =(AudioManager)context.getSystemService(Context.AUDIO_SERVICE); audioManager.setStreamVolume(AudioManager.STREAM_ALARM,alarmVolume,0); audioManager.setWiredHeadsetOn(true); audioManager.setSpeakerphoneOn(false); mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); mediaPlayer.prepare(); mediaPlayer.setLooping(false); mediaPlayer.start();' – user3323951