Проверьте, должен ли Xiaomi вибрировать при звонках - PullRequest
0 голосов
/ 15 января 2019

Вопрос специфичен для 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 флажки "Вибрировать" и "Вибрировать для звонков" и "Вибрировать в автоматическом режиме"?

...