如何使用media.newRecording录制和播放音频

我已经创建了3个正方形。我希望第一个正方形可以记录并保存录音,第二个正方形可以停止录音,第三个正方形可以获取录音并播放回来。

我在电脑上使用应用程序时可以得到响应,但结果不是很清晰(我没有麦克风)。当我在手机上测试时,我没有得到任何响应。

该如何使这个应用程序工作?

function startRecording ()
print( "startRec tap" )
recordPath = system.pathForFile( "recordings.wav", system.DocumentsDirectory )
recording = media.newRecording( recordPath )
recording:startTuner( )
recording:startRecording( )

proof1 = display.newText( "proof1", 80, 300,nil , 20 )
end

function stopRecording(  )
print( "stopRec tap" )
proof2 = display.newText( "proof2", 280, 300,nil , 20 )
recording:stopRecording( )
recording:stopTuner( )
end

function playRecording ()
print( "Play back recording" )
findRecording = audio.loadSound( "recordings.wav" , system.DocumentsDirectory )
audio.play( findRecording)
proof3 = display.newText( "proof3", 400, 300,nil , 20 )
end

*更新:我已经将实际有声音的.wav文件加载到系统.DocumentsDirectory中。结果:它在corona模拟器中可以听到声音,但在我的手机上却不能听到声音。 *** 我相信问题在于我的手机无法访问system.DocumentsDirectory中的文件。

以下是我编辑测试的代码,sample.wav是带有实际声音的音频文件。有人有什么见解吗?

function playRecording ()
print( "Play back recording" )
findRecording = audio.loadSound( "sample.wav" , system.DocumentsDirectory )
audio.play( findRecording)
proof3 = display.newText( "proof3", 400, 300,nil , 20 )

end

感谢您的时间。

点赞
用户869951
用户869951

以下是需要检查的几个事项:

  • 配置文件中是否授予 RECORD_AUDIO 权限
  • 在启动和停止录制之间,IsRecording 变量是否为 true
  • 创建的声音文件大小是否正确
  • 如果已经创建文件,则将其复制到您的电脑上并检查是否可以播放

更新:

如果您确实知道所有条件都为真,即已经拥有一个声音文件,那么您需要检查以下几个问题:

  • 可能是无法找到要播放的文件。
  • 模拟器中是否正常工作?
  • 在设备上是否可以听到其他(非 Corona)游戏或应用程序的声音?
  • 当您在设备上播放有声音的 corona 示例应用时,是否可以听到声音?

更新2:

如果以上所有问题都没有问题,那么 "我相信问题在于我的手机无法访问 system.DocumentsDirectory 中的文件" 就不太可能是真的,除非您的应用程序中存在一些不同于示例应用程序的配置权限。

将可以工作的 Corona 示例复制到一个新项目中,然后开始添加来自您的应用程序的代码。经常进行测试,因为您可能最终会添加一些应用程序代码,导致它不再工作,然后您就会看到原始应用程序的问题在哪里,或者您将拥有您修改/扩展的应用程序所需的一切,并且您永远不会知道问题在哪里,但是您随后可以放弃您一直在使用的原始源代码。

2014-04-19 11:22:21