2012-09-10 14 views
6

Soy nuevo en desarrollo en Android. Tengo una vista con un ToggleButton en ella que cuando se presiona apagará todo el sonido hasta que se presione nuevamente el ToggleButton.Cómo desactivar todos los sonidos en Android

Actualmente, tengo este código. Puedo ver los eventos de registro sucediendo, pero el sonido no se está apagando. ¿Alguien puede dar alguna idea?

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

¡Gracias de antemano!

+0

chk este Ques http://stackoverflow.com/questions/7558650/how-to-set-volume-for-text-to-speech-speak-method –

+0

Pero, ¿cómo puedo desactivar todos los sonidos para que incluso otra aplicación no pueda cambiar ningún volumen? me refiero a cómo desactivar por completo AudioManager desde otra aplicación. @SunnyKumarAditya –

Respuesta

7

que era capaz de hacer que funcione cambiando el evento para un oyente

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

encontré entrada mirando estas preguntas: How to turn off all sounds and vibration via Android API y éste: attach onClickListener to ToggleButton

+1

Pero, ¿cómo puedo desactivar todos los sonidos para que incluso otra aplicación no pueda cambiar ningún volumen? me refiero a cómo desactivar por completo AudioManager desde otra aplicación? @briandus –

Cuestiones relacionadas