Что возвращает getRingerMode () на планшете Android? - PullRequest
1 голос
/ 15 мая 2011

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

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

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

РЕДАКТИРОВАТЬ : Просто обратите внимание, что на эмуляторе, ничего не меняя, я получаю RINGER_MODE_NORMAL.

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

1 Ответ

2 голосов
/ 15 мая 2011

Это код из 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() бросков android.os.RemoteException

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

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

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

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

...