Titanium Community Questions & Answer Archive

We felt that 6+ years of knowledge should not die so this is the Titanium Community Questions & Answer Archive

Switch to turn sound on/off for entire APP

Greetings. I am having trouble figuring out how to turn off/on all sound for the app via a switch. Right now I have around 30 items in a tableview. The last item in the tableview is the switch for sound control. All 30 tableview items click to a new window with sounds on them. How do I make the switch in the tableview turn on/off the sounds for all those windows. Would like the user to have a silent app experience if they so choose.

Tableview code:

var soundSwitch = Titanium.UI.createSwitch({
    value:true,
    top:8,
    left:130
});

var soundControl = Ti.UI.createTableViewRow({
    height:44,
    backgroundColor:'fff',
    backgroundImage:'img/rowup.png'
});

soundControl.add(soundSwitch);

soundSwitch.addEventListener('change', function()
{     
        if (soundSwitch.value == false)
        {
            Ti.App.fireEvent('volume_down');
        }
        else if (soundSwitch.value == true)
        {
           Titanium.App.fireEvent('volume_up');
        }
});

tableview.addEventListener('click', function(e)
{
    if (e.rowData.detail) {
        var newwin = Titanium.UI.createWindow({url:e.rowData.detail});
    }
    newwin.open({fullscreen:true});
});

> Tableview item clicked - new window opens. Code:

var file = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory,'whoosh3.caf');
var sound = Titanium.Media.createSound({
    sound:file, 
    preload:true, 
    volume:1.0
});

// VOLUME ON

Ti.App.addEventListener('volume_up', function()
{
    if (sound.volume < 1.0)
    {
        sound.volume = 1.0;
    }
});

// VOLUME OFF

Ti.App.addEventListener('volume_down', function()
{
    if (sound.volume > 0)
    {
        sound.volume = 0.0;
    }
});

sound.play();
— asked October 6th 2010 by Derrick Wynes
  • fireevent
  • sound
  • switch
0 Comments

1 Answer

  • Accepted Answer

    I would use a global variable:

    soundSwitch.addEventListener('change', function()
    {     
            if (soundSwitch.value == false)
            {
                Ti.App.soundOn = false;
            }
            else if (soundSwitch.value == true)
            {
               Ti.App.soundOn = true;
            }
    });
    
    if(Ti.App.soundOn) {
       var sound = Titanium.Media.createSound({
          sound:file, 
          preload:true, 
          volume:1.0
       });
       sound.play();
    }
    
    — answered October 7th 2010 by Roger Chapman
    permalink
    0 Comments
The ownership of individual contributions to this community generated content is retained by the authors of their contributions.
All trademarks remain the property of the respective owner.