Android Использовать громкость рингтона для уведомлений

Я пытаюсь изменить громкость потока уведомлений (не звонка) на HTC One с Android 4.3. Я использую этот код:

int setting = Settings.System.getInt(getContentResolver(), "notifications_use_ring_volume", -20);
boolean b = Settings.System.putInt(getContentResolver(), "notifications_use_ring_volume", 1 - setting);

поэтому каждый раз, когда b истинно (это означает, что изменение было внесено), и каждый раз, когда я ставлю 0 или 1. Теперь, после того, как я изменил значение, когда я его прочитал, оно отображает значение, которое я обновил в avove, но когда я захожу в Настройки->Звук->Громкость,

Использовать громкость рингтона для уведомлений

флажок остается неизменным (когда этот параметр равен 0 или 1). Я что-то упустил здесь? Как обновить этот параметр из кода, чтобы я мог видеть это изменение в настройках телефона?


person Buda Gavril    schedule 03.01.2014    source источник


Ответы (3)


Вам нужно использовать AudioManager. У него есть метод с именем setStreamVolume. (), который помогает управлять громкостью аудиопотоков.

Вот пример приложения, которое демонстрирует, что вы хотите. Ссылка к образцу приложения.

person Chintan Soni    schedule 09.01.2014
comment
да, но сначала я должен разделить эти два потока, если такая настройка существует. И если он существует, я должен установить для параметраnotifications_use_ring_volume значение 0, потому что в противном случае поток ting и потоки уведомлений связаны, и изменение кольцевого потока также изменяет поток уведомлений. Итак, моя проблема заключается в изменении этого параметра, чтобы я мог видеть изменения на экране настроек. - person Buda Gavril; 09.01.2014
comment
@BudaGavril Android ICS и более поздние версии объединили тома звонка и уведомлений в один том. Невозможно с помощью кода отключить эти регуляторы громкости. Однако вы можете настроить новую унифицированную громкость уведомлений в зависимости от условий. Скажем, например, вы можете использовать управление звуком, когда кто-то звонит, он применяет предварительно выбранную настройку громкости, чтобы имитировать громкость звонка, и возвращается к предыдущей настройке после завершения вызова. - person Chintan Soni; 09.01.2014
comment
Я знаю это, но если этот параметр (Использовать громкость рингтона для уведомлений) существует, если вы снимите этот флажок, у вас могут быть отдельные потоки. И я хочу снять отметку с кода, но я не могу этого сделать. это моя проблема - person Buda Gavril; 09.01.2014

Попробуй это.

AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), AudioManager.FLAG_PLAY_SOUND);

Вы можете контролировать громкость, чтобы изменить второй параметр. (am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION))

setStreamVolume(int, int, int )

person Kyoung-june Yi    schedule 03.01.2014
comment
если ОС Android 4.0 или выше, потоки звонков и уведомлений связаны и изменяют один из этих двух, изменяют и другой, и я не хочу менять оба, как я указал выше - person Buda Gavril; 03.01.2014

Создайте «сырую» папку в папке ресурсов вашего приложения и поместите файл мелодии звонка (.mp3) в эту необработанную папку, а затем добавьте эту строку при получении уведомления.

уведомление.звук = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.sapphire);

OR

int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
notification.sound = Uri.parse("android.resource://"
            + context.getPackageName() + "/" + R.raw.sapphire);

А затем создайте и свое намерение и ожидающее намерение и назовите это

уведомление.setLatestEventInfo(контекст, сообщение, заголовок, ожидаемое намерение);
уведомлениеManager.notify(0, уведомление);

person Mukesh Y    schedule 07.01.2014
comment
это не работает, но зачем вам создавать уведомление для этой задачи? - person Buda Gavril; 07.01.2014