AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
Log.i("MyApp","Silent mode");
break;
case AudioManager.RINGER_MODE_VIBRATE:
Log.i("MyApp","Vibrate mode");
break;
case AudioManager.RINGER_MODE_NORMAL:
Log.i("MyApp","Normal mode");
break;
}
从上面的代码中只检测一种模式。但我想检查2模式,无论是振铃+振动还是静音+振动。
怎么可能?
答案 0 :(得分:2)
没有任何方法可以获得振铃+振动和静音+振动。我们知道我们有三种方法来获得振铃模式。
AudioManager.RINGER_MODE_NORMAL
AudioManager.RINGER_MODE_SILENT
AudioManager.RINGER_MODE_VIBRATE
所以,你只需要创建一个方法来检查振铃和振动的条件
喜欢戒指+振动。
public boolean statusRingVibrate(){
boolean status = false;
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if(am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL && am.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE){
status = true;
}
return status;
}
答案 1 :(得分:2)
我遇到了同样的问题,并将一些方法结合在一起:
public static boolean checkVibreationIsOn(Context context){
boolean status = false;
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if(am.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE){
status = true;
} else if (1 == Settings.System.getInt(context.getContentResolver(), "vibrate_when_ringing", 0)) //vibrate on
status = true;
return status;
}
public static boolean checkRingerIsOn(Context context){
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
return am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL;
}
答案 2 :(得分:0)
嘿请按照link
进行操作RINGER_MODE_NORMAL:铃声模式可能听得见,可能会振动。如果可以听到更改此模式之前的音量,则会听到声音。如果振动设置打开,它将振动。
RINGER_MODE_VIBRATE:振铃模式,它将保持静音并振动。 (这会使手机振铃器始终振动,但通知振动只会在设定时振动。)
所以AudioManager.RINGER_MODE_NORMAL即' 2'如果手机振动或振铃,将会退回。它将返回AudioManager.RINGER_MODE_VIBRATE,即' 1'如果手机处于静音和振动状态。