2012-09-10 101 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 –

相关问题