0
点赞
收藏
分享

微信扫一扫

[AndroidTips]打开/关闭免提(SpeakerPhone)

90哦吼 2023-05-23 阅读 109


//打开扬声器
      public void OpenSpeaker() {

          try{
          AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
          audioManager.setMode(AudioManager.ROUTE_SPEAKER);
          currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);

          if(!audioManager.isSpeakerphoneOn()) {
            audioManager.setSpeakerphoneOn(true);

            audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
                   audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ),
                   AudioManager.STREAM_VOICE_CALL);
          }
         } catch (Exception e) {
             e.printStackTrace();
         }
      }


     //关闭扬声器
     public void CloseSpeaker() {
     
         try {
             AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
             if(audioManager != null) {
                 if(audioManager.isSpeakerphoneOn()) {
                   audioManager.setSpeakerphoneOn(false);
                   audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,currVolume,
                              AudioManager.STREAM_VOICE_CALL);
                 }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
           //Toast.makeText(context,"揚聲器已經關閉",Toast.LENGTH_SHORT).show();
     }

 


setSpeakerphoneOn() only work when audio mode set to MODE_IN_CALL. Try this:

AudioManager audioManager = (AudioManager)mActivity.getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.MODE_IN_CALL); audioManager.setSpeakerphoneOn(true);

Please remember set back to normal mode before you quit.

 

Your code needs to have android.permission.MODIFY_AUDIO_SETTINGS permission set in your manifest file because setSpeakerPhoneOn() requires that permission.

举报

相关推荐

0 条评论