Setting play SoundFile or play Empty Too Quickly Causes Crash in iOS

Brahmanathaswami brahma at hindu.org
Fri Sep 11 19:06:42 EDT 2015


I have the following behavior running in a series of buttons that play 
audio which is local to the app.

They work fine on the desktop (OS X) but in iOS  if I click on any 
button too soon, the app crashes.

I've done some  tests and I have to wait at about 5.5 seconds  before 
clicking again, if we allow the app to have this time... then it does 
not crash.

   This "must wait" delta  is more than users would want to experience.

It seems to be coming from  toggling between

play empty
play soundfile
play empty
play soundfile

it too rapid a succession...

play empty
      # wait 5.5 seconds
play soundfile
      # wait 5.5 seconds
play empty
      # wait 5.5 seconds
play soundfile
  # wait 5.5 seconds

and everything works fine.

It's almost as if iOS needs to clear something in the mobile player... 
before you can reset it. i don't think any of the other 
processes/handlers in my script are causing this...

Anyone have any clues?

------------------
global gPlayerIsRunning, gCurrentAudio

local aAudioMetadata,tTitle,tDuration,tAudioPath,tButton

on mouseUp
    set the itemdel to "_"
    put item 2 of the short name of me into tButton # e.g "audio_2"
    set the itemdel to comma

# metadata for eight audio files is stored locally in a JSON file.
    put fetchAudioJson() into aAudioMetadata
    put (localPath() & "audio/"& 
aAudioMetadata["audioOnBoard"][tButton]["filename"]) into tAudioPath

# the rest is very simple, play the sound, move some indicators on the 
UI or stop the sound:

    if (gPlayerIsRunning = 1) AND (gCurrentAudio = (the label of me) ) then
       # We are just stopping the current audio
       # by tapping on the same audio button
       set the icon of btn "audioToggle" to 1304 # start playing icon
       if the environment <> "mobile" then
          set the dontUseQT to true
          stop player "listenToGurudeva"
       else
          play empty
       end if
       put 0 into gPlayerIsRunning

    else
   put the loc of btn "audioToggle" into tNewLoc
    put the loc of fld "duration" into tNewDurationLoc
    put the loc of me into tCurrentLoc
    put ( (item 2 of tCurrentLoc) ) into item 2 of tNewLoc
    set the loc of btn "audioToggle" to tNewLoc
    put ( (item 2 of tCurrentLoc)  +2 ) into item 2 of tNewDurationLoc
    set the loc of fld "duration"  to tNewDurationLoc
     put the uDuration of me into fld "duration"
       set the icon of btn "audioToggle" to 1303 # pause icon
       if the environment <> "mobile" then
          set the dontUseQT to true
          set the filename of player "listenToGurudeva" to tAudioPath
          start player "ListenToGurudeva"
       else
          play tAudioPath
       end if
       put 1 into gPlayerIsRunning
       put the label of me into gCurrentAudio
    end if
end mouseUp

BR




More information about the use-livecode mailing list