Проверьте, должен ли 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);
Другие вопросы по тегам