Вопрос по android – Android ICS управляет отключением, вибрацией или отключением звука в тихом режиме

3

Я искал повсюду, где мог найти ответ, и есть много вопросов об аудио в Android, но ни одного, который я не могу найти, который рассказывал бы о новых настройках в ICS.

Мое приложение имеет функцию, при которой пользователи могут нажимать кнопку, и звонок телефона будет тихим, без вибрации. Вот мой код, который до сих пор работал нормально:

        mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);

Теперь происходит то, что, когда пользователь нажимает кнопку, громкость по-прежнему уменьшается до 0, но телефон, в частности Galaxy S3, имеет короткую вибрацию. Затем в «Настройки» -> «Звук» тихий режим был изменен с «Выкл.» На «Вибрация». Поэтому всякий раз, когда происходят определенные вещи, у него все еще есть такое короткое вибрирующее уведомление. Я не смог протестировать достаточно тщательно, чтобы знать, что конкретно происходит, чтобы он вибрировал подобным образом, но суть вопроса не в этом.

У меня вопрос, как мы можем контролировать настройки ICS Silent Mode «Выкл.», «Вибрация» и «Отключение звука»? Я хочу иметь возможность установить его на «Без звука», когда они нажимают на эту кнопку, а затем вернуться к «Выкл.» Или к тому, на что он был установлен, когда они нажмут на нее снова. Я пытался использовать метод mAudioManager.setStreamMute, но это нежелательный эффект, и он также не меняет настройки бесшумного режима.

Заранее благодарим за любую помощь, это очень ценится!

Павел

mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); установит бесшумный режим. Я думаю, что эта линия сделает работу. iTurki
Я удалил свой комментарий, что он не работает, потому что другие факторы, похоже, были вовлечены! Я думаю, что это действительно работает, но я оставлю еще один комментарий, когда точно знаю. Я собираюсь упростить мой код, чтобы я мог легко проверить, так как он делает многое для того, чтобы прямо сейчас убедиться в этом единственном параметре. Спасибо!! zpert

Ваш Ответ

1   ответ
4

ОК, я понял это !!!! +1 итуркам за помощь, спасибо !! Я уже пробовал RINGER_MODE_SILENT, но не думал, что это сработало. Это не сработало, но это потому, что это была только половина решения. Это необходимо, хотя!

Вот как это работает для меня каждый раз:

Я обнаружил, что с настройкой AudioManager.RINGER_MODE_NORMAL или AudioManager.RINGER_MODE_SILENT я все еще получал вибрации для уведомлений. Вот почему я заметил, что это не сработало. После дальнейшего тестирования я обнаружил, что это вызвано не настройкой RINGER_MODE, а строкой кода:

mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);

По какой-то неизвестной мне причине, когда для параметра RINGER_MODE установлено значение NORMAL или SILENT, когда для громкости STREAM_RING установлено значение 0, таким образом, параметр «Беззвучный режим» в настройках -> Звук - Вибрация.

Решение:

    mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

Мне пришлось удалить настройку STREAM_RING и просто оставить ее в покое. Теперь, когда я установил RINGER_MODE_SILENT и оставил STREAM_RING в покое, больше не надоедают полсекундные вибрации !!! Еще одна заметка, которую я протестировал, не установив VibrateSetting в положение OFF, и она все еще работала, но я оставляю ее по другим причинам в моем приложении.

ВАЖНО! Я не знаю, как это изменение с RINGER_MODE_NORMAL на RINGER_MODE_SILENT повлияет на предыдущие версии Android, поэтому будьте осторожны. Если кто-то точно знает, как это изменение повлияет на предыдущие версии, пожалуйста, сообщите нам об этом!

Еще раз спасибо итурки за помощь!

Трудно найти это решение, но это было именно то, что я искал. Этот код работает и на предыдущей версии Android - я проверял с 2.3.5.
Добро пожаловать. И спасибо, что поделились решением :-)

Похожие вопросы