2012-09-10 71 views
6

我是Android上的新開發人員。我有一個視圖上的按鈕,當按下時會關閉所有聲音,直到再次按下ToggleButton。如何關閉Android上的所有聲音

目前,我有這個代碼。我可以看到日誌事件正在發生,但聲音並未關閉。誰能提供一些見解?

public void onToggleClicked(View view) { 
    Log.i("onToggleClicked", "ToggleClick Event Started"); 
    // Is the toggle on? 
    boolean on = ((ToggleButton) view).isChecked(); 

    if (on) { 
     Log.i("onToggleIsChecked", "ToggleClick Is On"); 
     //turn off sound, disable notifications 
     amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 
     Log.i("STREAM_SYSTEM", "Set to true"); 
     //notifications 
     amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 
     Log.i("STREAM_NOTIFICATION", "Set to true"); 
     //alarm 
     amanager.setStreamMute(AudioManager.STREAM_ALARM, true); 
     Log.i("STREAM_ALARM", "Set to true"); 
     //ringer 
     amanager.setStreamMute(AudioManager.STREAM_RING, true); 
     Log.i("STREAM_RING", "Set to true"); 
     //media 
     amanager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
     Log.i("STREAM_MUSIC", "Set to true"); 

    } else { 
     Log.i("onToggleIsChecked", "ToggleClick Is Off"); 
     // turn on sound, enable notifications 
     amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false); 
     Log.i("STREAM_SYSTEM", "Set to False"); 
     //notifications 
     amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false); 
     Log.i("STREAM_NOTIFICATION", "Set to False"); 
     //alarm 
     amanager.setStreamMute(AudioManager.STREAM_ALARM, false); 
     Log.i("STREAM_ALARM", "Set to False"); 
     //ringer 
     amanager.setStreamMute(AudioManager.STREAM_RING, false); 
     Log.i("STREAM_RING", "Set to False"); 
     //media 
     amanager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
     Log.i("STREAM_MUSIC", "Set to False"); 
    } 
    Log.i("onToggleClicked", "ToggleClick Event Ended"); 
} 

在此先感謝!

+0

CHK這個疑問句的http:/ /stackoverflow.com/questions/7558650/how-to-set-volume-for-text-to-speech-speak-method –

+0

但是,我如何禁用所有的聲音,以便即使其他應用程序不能更改任何音量。我的意思是如何從其他應用程序完全禁用AudioManager。 @SunnyKumarAditya –

回答

7

我能夠使其通過改變事件偵聽器

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //create the toggle button ref and instantiate 
    ToggleButton tb = (ToggleButton)this.findViewById(R.id.tglSetStatus); 
    tb.setTextOff(getString(R.string.available_status)); 
    tb.setTextOn(getString(R.string.driving_status)); 
    //default to being available 
    tb.setChecked(false); 
    // attach an OnClickListener 
    tb.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      // your click actions go here 
      Log.i("onToggleClicked", "ToggleClick Event Started"); 
      //an AudioManager object, to change the volume settings 
      AudioManager amanager; 
      amanager = (AudioManager)getSystemService(AUDIO_SERVICE); 

      // Is the toggle on? 
      boolean on = ((ToggleButton)v).isChecked(); 

      if (on) { 
       Log.i("onToggleIsChecked", "ToggleClick Is On"); 
       //turn ringer silent 
       amanager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
       Log.i("RINGER_MODE_SILENT", "Set to true"); 

       //turn off sound, disable notifications 
       amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 
       Log.i("STREAM_SYSTEM", "Set to true"); 
       //notifications 
       amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 
       Log.i("STREAM_NOTIFICATION", "Set to true"); 
       //alarm 
       amanager.setStreamMute(AudioManager.STREAM_ALARM, true); 
       Log.i("STREAM_ALARM", "Set to true"); 
       //ringer 
       amanager.setStreamMute(AudioManager.STREAM_RING, true); 
       Log.i("STREAM_RING", "Set to true"); 
       //media 
       amanager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
       Log.i("STREAM_MUSIC", "Set to true"); 

      } else { 
       Log.i("onToggleIsChecked", "ToggleClick Is Off"); 

       //turn ringer silent 
       amanager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
       Log.i(".RINGER_MODE_NORMAL", "Set to true"); 

       // turn on sound, enable notifications 
       amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false); 
       Log.i("STREAM_SYSTEM", "Set to False"); 
       //notifications 
       amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false); 
       Log.i("STREAM_NOTIFICATION", "Set to False"); 
       //alarm 
       amanager.setStreamMute(AudioManager.STREAM_ALARM, false); 
       Log.i("STREAM_ALARM", "Set to False"); 
       //ringer 
       amanager.setStreamMute(AudioManager.STREAM_RING, false); 
       Log.i("STREAM_RING", "Set to False"); 
       //media 
       amanager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
       Log.i("STREAM_MUSIC", "Set to False"); 
      } 
      Log.i("onToggleClicked", "ToggleClick Event Ended"); 
     } 
    }); 

我發現輸入通過看這些問題的工作:How to turn off all sounds and vibration via Android API 這一個:attach onClickListener to ToggleButton

+1

但我怎麼能禁用所有的聲音,以便即使其他應用程序不能改變任何音量。我的意思是如何從其他應用程序完全禁用AudioManager? @briandus –

相關問題