Display.getRefreshRate () выдает мне разные значения на разных устройствах

#android

#Android

Вопрос:

Я использую Display.getRefreshRate () для получения частоты обновления моего дисплея. В X10 Mini возвращаемое значение равно 0,325. В Galaxy S значение равно 68.0. Для меня это не имеет никакого смысла. Есть идеи?

Комментарии:

1. 1 developer.android.com/reference/android/view / … определяет количество кадров в секунду. Тем не менее, мой Galaxy Ace выдает мне 0.34 0,34 кадра в секунду!? Я могу листать комиксы быстрее, чем эта скорость.

2. 1 Я обнаружил то же самое! Мой Xperia Pro выдает значение <1.0. Imo это действительно неаккуратная ошибка со стороны производителей телефонов!

3. Подтверждаю, что это в некотором роде ошибка. Для моего LG Optimus Chic он возвращает значение 0.054, которое не имеет никакого смысла. Даже если бы это была доля секунды между одним кадром и следующим, это привело бы к 18,5 кадрам в секунду, в то время как производитель сообщает о 30 кадрах в секунду для этого конкретного смартфона.

Ответ №1:

Похоже, это ошибка, хотя я не нашел никаких отчетов об ошибках для нее. Число, которое я получаю, также равно ~ 0.34, в то время как я ожидал что-то вроде 60. Мне не удалось найти осмысленную интерпретацию 0.34 в отношении refreshrates, и поэтому мое решение состояло в том, чтобы просто «отклонить его истинность и заменить моим собственным» следующим кодом:

 public float getRefreshRate() {
    final WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    final Display display = wm.getDefaultDisplay();
    float rate = display.getRefreshRate();
    if (rate < 10.0f) {
        rate = 60.0f; //Default to something which seems to be a normal refreshrate on many phones
    }
    return rate;
}
  

Это отлично работает в моем приложении. Надеюсь, это было полезно!