2012-07-02 100 views
5

我的主要活動如何以編程方式設置通知音量?

private void beep() 
{ 
    AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 
      AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 
    Uri notification = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), 
      notification); 
    r.play(); 
} 

據我瞭解,通知音量應STREAM_NOTIFICATION調控有此方法。但是儘管setStreamVolume方法中的卷號碼通知總是以相同的卷播放。這是爲什麼?

回答

5

我以另一種方式。這不完全是我的問題的答案,但適當的。當我在STREAM_MUSIC播放通知時,一切都很好。因此,通知,體積究竟扮演我通過作爲參數傳遞給函數

private void beep(int volume) 
{ 
    AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0); 

    Uri notification = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    MediaPlayer player = MediaPlayer.create(getApplicationContext(), notification); 
    player.start(); 
} 
+0

當設備設置中的通知關閉時,聲音仍在播放。有沒有人使用上面的代碼來面對這個問題?注 - 我正在使用GCM最新庫。 –

2

首先,我希望你意識到你正在嘗試播放兩個通知,因此可能會發生衝突。 AudioManager.FLAG_PLAY_SOUNDr.play()都會嘗試播放聲音。向用戶提供一種類型的信息通常足以通過用戶界面或通過播放新音量的嘟嘟聲。我建議你刪除其中一個標誌。如果你不需要任何的,只要給它0

來到的主要問題,我不知道,如果你可以的音量設置爲0嘗試把1,像

manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 1, AudioManager.FLAG_SHOW_UI); 

如果您想要將通知靜音,請嘗試使用setStreamMute,這相當於將音量設置爲0.

+0

沒有幫助。我刪除了兩個標誌,但是當我將** 1 **或** 7 **設爲相同音量時,通知仍然播放。** –

+0

您是否已將MODIFY_AUDIO_SETTINGS權限添加到清單文件中? – Erol

+0

沒有什麼改變後,我在清單中添加此部分 -

-1

寫一個函數如下,或複製並粘貼以下,

public void ringtone() { 
    try { 
     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
     r.play(); 
    } catch (Exception e) {} 
} 

,並呼籲ringtone()當你想蜂鳴聲通知。

+0

它對我來說很完美...希望它能幫助你.. – Ragu

相關問題