Что возвращает getRingerMode () на планшете Android?

1

У меня есть сообщение об ошибке, что звук не работает на планшете ASUS Transformer, работающем под управлением 3.0.

Я не делаю ничего слишком странного, просто использую MediaPlayer и, похоже, работает на широком спектре телефонов. Однако я использую метод, описанный в этом сообщении, чтобы отключить звуки, если getRingerMode() возвращает что-то другое, кроме RINGER_MODE_NORMAL. Таким образом, если у пользователя есть свой телефон на "вибрировать только", они не получают неожиданного звука (поскольку носители и звонки используют отдельные регуляторы громкости).

Возможно ли, что на планшете Android функция getRingerMode() возвращает RINGER_MODE_SILENT, если планшет не имеет возможности телефона?

EDIT: просто обратите внимание, что на эмуляторе, ничего не меняя, я получаю RINGER_MODE_NORMAL.

РЕДАКТИРОВАТЬ 2. В заключительном отчаянии я удалил проверку режима звонка и повторно опубликовал на рынке. Парень только что подтвердил, что звуки теперь работают. Кажется, что getRingerMode() возвращает не что-то иное, чем RINGER_MODE_NORMAL, на некоторых таблицах.

Теги:
android-3.0-honeycomb

1 ответ

2
Лучший ответ

Это код из GingerBread. Он вернет RINGER_MODE_NORMAL, если IAudioService не сможет вернуть getRingerMode();

/**
 * Returns the current ringtone mode.
 *
 * @return The current ringtone mode, one of {@link #RINGER_MODE_NORMAL},
 *         {@link #RINGER_MODE_SILENT}, or {@link #RINGER_MODE_VIBRATE}.
 * @see #setRingerMode(int)
 */
public int getRingerMode() {
    IAudioService service = getService();
    try {
        return service.getRingerMode();
    } catch (RemoteException e) {
        Log.e(TAG, "Dead object in getRingerMode", e);
        return RINGER_MODE_NORMAL;
    }
}

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/media/AudioManager.java/?v=source

Один шаг ниже,

IAudioService#getRingerMode() throws android.os.RemoteException

Единственное отличие в Honeycomb (чтение chengelog) в AudioManager:

Добавленные поля     int MODE_IN_COMMUNICATION

И ничего в 3.1 в этом классе, поэтому я предполагаю, что код Gingerbread по-прежнему действителен.

http://developer.android.com/sdk/api_diff/11/changes.html

  • 0
    +1 Имеет смысл, мое единственное сомнение в том, что реализация IAudioService может делать что-либо с реальными предпочтениями за кулисами. Я думаю, что мне просто нужно «пососать и посмотреть», снять чек, посмотреть, решит ли это проблему.
  • 0
    @ Rich Я не смог точно понять, что делал IAudioService, и у нас нет доступа к источнику 3.0, поэтому я, к сожалению, не могу рассказать вам больше, чем написал.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню