Вопрос специфичен для 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);
}
Кто-нибудь знает, как проверить на устройствах Xiaomi флажки "Вибрировать" и "Вибрировать для звонков" и "Вибрировать в автоматическом режиме"?