其他分享
首页 > 其他分享> > android – 为什么AudioManager.getRingerMode()只返回3种模式?

android – 为什么AudioManager.getRingerMode()只返回3种模式?

作者:互联网

根据document,

getRingerMode() returns the current ringtone mode, one of
RINGER_MODE_NORMAL, RINGER_MODE_SILENT, or RINGER_MODE_VIBRATE.

但应该有4种模式,对吗?

声音开启,振动关闭:我怎么知道设置是这个?
声音开启,振动开启:RINGER_MODE_NORMAL
声音关闭,振动关闭:RINGER_MODE_SILENT
声音关闭,振动开启:RINGER_MODE_VIBRATE

请帮帮我.谢谢.

解决方法:

您可以将振铃器方法设置为RINGER_MODER_NORMAL(声音和振动开启)并单独将振动设置设置为VIBRATE_SETTING_OFF(完全关闭振动)或VIBRATE_SETTING_ONLY_SILENT.(仅在模式静音时振动)如下所示:

要关闭铃声振动:

setVibrateSetting (AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF)

要关闭通知振动:

setVibrateSetting (AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF)

更新:获取当前音频模式的状态

   if(getRingerMode ()==AudioManager.RINGER_MODE_NORMAL)
    {    if((getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER))==AudioManager.AudioManager.VIBRATE_SETTING_OFF){    
        Log.d("Ringer Mode is":"ring with no vibraion")
        }
    else{
    Log.d("Ringer Mode is":"ring with vibraion")
    }

    else if(getRingerMode ()==AudioManager.RINGER_MODE_SILENT){

if((getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER))==AudioManager.AudioManager.VIBRATE_SETTING_OFF){    
        Log.d("Ringer Mode is":"Silent with no vibraion")
        }
    else{
    Log.d("Ringer Mode is":"Silent with vibraion")
    }
    }
else{
 Log.d("Ringer Mode is":"Silent with vibraion")

}

Docs中,据说RINGER_MODE_SILENT模式将覆盖振动设置.

PS:根据DOC get / setVibrateSetting()**方法在API级别16中被弃用.
注意:我没有测试过代码.

标签:android,android-audiomanager,android-vibration
来源: https://codeday.me/bug/20190702/1361090.html