2014-01-03 2 views
3

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

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

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

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

ответ

0

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

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)

+0

Если android os 4.0 или выше, потоки звонков и уведомлений связаны друг с другом и меняют один из этих двух, изменения и другие, и я не хочу менять их, как я уже говорил выше –

+0

, скопированный с http : //androiddev.orkitra.com/? p = 117672 –

-1

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

notification.sound = Uri.parse ("android.resource: //" + context.getPackageName() + "/" + R.raw.sapphire);

ИЛИ

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); 

А затем создать и ваше намерение и до Намерение и называем это

notification.setLatestEventInfo (контекст, сообщение, название, pendingIntent);
notificationManager.notify (0, уведомление);

+0

это не работает, но зачем вам нужно создавать уведомление для этой задачи? –

1

Необходимо использовать AudioManager. Он имеет метод с именем, setStreamVolume(), который помогает вам управлять томом для аудиопотоков.

Вот пример приложения, которое демонстрирует, что вы хотите. Link to sample applcation.

+0

Да, но во-первых, я должен «разделить» эти два потока, если такая настройка существует. И если он существует, я должен установить значение «notifications_use_ring_volume» равным 0, поскольку в противном случае потоки потока уведомлений и потоки уведомлений связаны, а изменение потока звонков также изменяет поток уведомлений. Поэтому моя проблема заключается в изменении этого параметра, поэтому я вижу изменения в экране настроек. –

+0

@BudaGavril Android ICS и далее объединили громкости звонка и уведомлений в один том. Нет никакого способа с помощью кода отключить эти регуляторы громкости.Однако вы можете подключить новый единый уровень уведомлений на основе условий. Скажем, например, вы можете использовать Audio Control, когда кто-то звонит, он применяет предварительно выбранную настройку громкости, чтобы имитировать громкость звонка и после завершения вызова настраивается на предыдущую настройку. –

+0

Я знаю это, но если этот параметр (Использовать громкость мелодии для уведомлений) существует, если вы снимете его, вы можете иметь отдельные потоки. И я хочу снять его с кода, но я не могу этого сделать. это моя проблема –

Смежные вопросы