Проверьте, должен ли Xiaomi вибрировать при звонках
Вопрос специфичен для Xiaomi. Я знаю, что есть похожие вопросы относительно устройств на нормальной ОС Android.
Есть разные способы понять, находится ли телефон Android в режиме "Только вибрация 100%" или его "Вибрация при вызове" включена для обычного режима.
Проблема с Xiaomi в том, что никто не работает. По крайней мере, из списка, который я имею:
/**
* This method should tell us if the vibration is on in the Android System settings
*/
public boolean checkVibrationIsOn() {
boolean status = false;
if (isInVibrationMode()
|| isVibrationOnHacky()
|| isVibrationOnDeprecated()) {
status = true;
}
return status;
}
/**
* Check if the phone is in Vibration mode
*/
private boolean isInVibrationMode() {
return audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE;
}
/**
* Use a direct access to get status of Vibration. Works not on all kinds of phones
*/
private boolean isVibrationOnHacky() {
return 0 != Settings.System.getInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,0);
}
/**
* Use a deprecated method to get status of Vibration. It was deprecated so usual apps can't use it
* but it works on some devices
*/
private boolean isVibrationOnDeprecated() {
return audioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL
&& audioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER);
}
Кто-нибудь знает, как проверить флажки "Вибрировать" catefory "Также вибрировать для звонков" и "Вибрировать в беззвучном режиме" на устройствах Xiaomi?
0 ответов
На устройстве Xiaomi есть две настройки вибрации: vibrate_in_normal и vibrate_in_silent. Вам нужно будет проанализировать RingerMode и вызвать Settings.System.getInt() с соответствующей константой:
if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL)
return Settings.System.getInt(context.getContentResolver(), "vibrate_in_normal",0);
else
return Settings.System.getInt(context.getContentResolver(), "vibrate_in_silent",0);