I am trying to get audio recording to work. I must be doing something wrong… The below code works fine on the Corona Simulator, but when I compile and run it on the iOS simulator I can hit start, but I can’t stop the record.
[code]
–
– scenetemplate.lua
local storyboard = require( “storyboard” )
storyboard.purgeOnSceneChange = true
local scene = storyboard.newScene()
– iOS 5 -only workaround for known Apple bug (Bug ID:9948362 and 10508829)
local platVersion = system.getInfo( “platformVersion” )
platVersion = string.sub( platVersion, 1, 1 )
if system.getInfo( “platformName” ) == “iPhone OS” and platVersion == “5” then
if audio.supportsSessionProperty then
audio.setSessionProperty(audio.MixMode, audio.PlayAndRecordMixMode)
end
end
local dataFileName = “testfile”
if “simulator” == system.getInfo(“environment”) then
dataFileName = dataFileName … “.aif”
else
local platformName = system.getInfo( “platformName” )
if “iPhone OS” == platformName then
dataFileName = dataFileName … “.aif”
elseif “Android” == platformName then
dataFileName = dataFileName … “.pcm”
else
print("Unknown OS " … platformName )
end
end
print (dataFileName)
local r – media object for audio recording
local recButton – gui buttons
local fSoundPlaying = false – sound playback state
local fSoundPaused = false – sound pause state
local rateUpButton
local rateDownButton
local recordingStatus
local samplingRate
local globalGroup
– *** Event Handlers ***
local function onCompleteSound (event)
fSoundPlaying = false
fSoundPaused = false
– Free the audio memory and close the file now that we are done playing it.
–audio.dispose(event.handle)
–updateStatus ()
end
local function recButtonPress ( event )
if r then
if r:isRecording () then
recordButton:setLabel ( “Record”)
r:stopRecording()
local filePath = system.pathForFile( dataFileName, system.DocumentsDirectory )
– Play back the recording
–[[
local file = io.open( filePath, “r” )
if file then
io.close( file )
–media.playSound( dataFileName, system.DocumentsDirectory, onCompleteSound )
playbackSoundHandle = audio.loadStream( dataFileName, system.DocumentsDirectory )
audio.play( playbackSoundHandle, { onComplete=onCompleteSound } )
end
–]]
media.playSound( dataFileName, system.DocumentsDirectory, onCompleteSound )
else
recordButton:setLabel ( “Stop Record”)
r:startRecording()
end
end
–updateStatus ()
end
–
– NOTE:
– Code outside of listener functions (below) will only be executed once,
– unless storyboard.removeScene() is called.
– BEGINNING OF YOUR IMPLEMENTATION
– Called when the scene’s view does not exist:
function scene:createScene( event )
local group = self.view
print (“audioTest:scene:createScene”)
– CREATE display objects and add them to ‘group’ here.
– Example use-case: Restore ‘group’ from previously saved state.
end
– Called BEFORE scene has moved onscreen:
function scene:willEnterScene( event )
local group = self.view
print (“audioTest:scene:willEnterScene”)
– This event requires build 2012.782 or later.
globalGroup = self.view
–dataFileName = “test.aif”
local filePath = system.pathForFile( dataFileName, system.DocumentsDirectory )
r = media.newRecording( filePath)
print("Creating data file at " … filePath)
recordButton = widget.newButton{
id = “btn001”,
left = 100,
top = 200,
label = “Record”,
width = 150, height = 28,
cornerRadius = 8,
onRelease = recButtonPress
}
end
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
print (“audioTest:scene:enterScene”)
– INSERT code here (e.g. start timers, load audio, start listeners, etc.)
end
– Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
print (“audioTest:scene:exitScene”)
– INSERT code here (e.g. stop timers, remove listeners, unload sounds, etc.)
end
– Called AFTER scene has finished moving offscreen:
function scene:didExitScene( event )
local group = self.view
print (“audioTest:scene:didExitScene”)
– This event requires build 2012.782 or later.
end
– Called prior to the removal of scene’s “view” (display group)
function scene:destroyScene( event )
local group = self.view
print (“audioTest:scene:destroyScene”)
– INSERT code here (e.g. remove listeners, widgets, save state, etc.)
end
– Called if/when overlay scene is displayed via storyboard.showOverlay()
function scene:overlayBegan( event )
local group = self.view
local overlay_scene = event.sceneName – overlay scene name
print (“audioTest:scene:overlayBegan”)
– This event requires build 2012.797 or later.
end
– Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded( event )
local group = self.view
local overlay_scene = event.sceneName – overlay scene name
print (“audioTest:scene:overlayEnded”)
– This event requires build 2012.797 or later.
end
– END OF YOUR IMPLEMENTATION
– “createScene” event is dispatched if scene’s view does not exist
scene:addEventListener( “createScene”, scene )
– “willEnterScene” event is dispatched before scene transition begins
scene:addEventListener( “willEnterScene”, scene )
– “enterScene” event is dispatched whenever scene transition has finished
scene:addEventListener( “enterScene”, scene )
– “exitScene” event is dispatched before next scene’s transition begins
scene:addEventListener( “exitScene”, scene )
– “didExitScene” event is dispatched after scene has finished transitioning out
scene:addEventListener( “didExitScene”, scene )
– “destroyScene” event is dispatched before view is unloaded, which can be
– automatically unloaded in low memory situations, or explicitly via a call to
– storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( “destroyScene”, scene )
– “overlayBegan” event is dispatched when an overlay scene is shown
scene:addEventListener( “overlayBegan”, scene )
– “overlayEnded” event is dispatched when an overlay scene is hidden/removed
scene:addEventListener( “overlayEnded”, scene )
return scene
[/code] [import]uid: 10280 topic_id: 30722 reply_id: 330722[/import]