testRecord.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --- 模块功能:录音功能测试.
  2. -- @author openLuat
  3. -- @module record.testRecord
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.27
  7. module(...,package.seeall)
  8. require"record"
  9. require"audio"
  10. --每次读取的录音文件长度
  11. local RCD_READ_UNIT = 1024
  12. --rcdoffset:当前读取的录音文件内容起始位置
  13. --rcdsize:录音文件总长度
  14. --rcdcnt:当前需要读取多少次录音文件,才能全部读取
  15. local rcdoffset,rcdsize,rcdcnt
  16. --设置为spk播放,耳机mic输入
  17. --audio.setChannel(2, 3)
  18. --设置录音时mic增益为7级
  19. --audio.setMicGain("record",7)
  20. --[[
  21. 函数名:playcb
  22. 功能 :播放录音结束后的回调函数
  23. 参数 :无
  24. 返回值:无
  25. ]]
  26. local function playcb(r)
  27. log.info("testRecord.playcb",r)
  28. --删除录音文件
  29. record.delete()
  30. record.start(5,rcdcb)
  31. sys.timerStart(record.stop,3000)
  32. end
  33. --[[
  34. 函数名:readrcd
  35. 功能 :读取录音文件内容
  36. 参数 :无
  37. 返回值:无
  38. ]]
  39. local function readrcd()
  40. local s = record.getData(rcdoffset,RCD_READ_UNIT)
  41. log.info("testRecord.readrcd",rcdoffset,rcdcnt,string.len(s))
  42. rcdcnt = rcdcnt-1
  43. --录音文件内容已经全部读取出来
  44. if rcdcnt<=0 then
  45. sys.timerStop(readrcd)
  46. --播放录音内容
  47. audio.play(0,"FILE",record.getFilePath(),7,playcb)
  48. --还没有全部读取出来
  49. else
  50. rcdoffset = rcdoffset+RCD_READ_UNIT
  51. end
  52. end
  53. --[[
  54. 函数名:rcdcb
  55. 功能 :录音结束后的回调函数
  56. 参数 :
  57. result:录音结果,true表示成功,false或者nil表示失败
  58. size:number类型,录音文件的大小,单位是字节,在result为true时才有意义
  59. 返回值:无
  60. ]]
  61. function rcdcb(result,size)
  62. log.info("testRecord.rcdcb",result,size)
  63. if result then
  64. rcdoffset,rcdsize,rcdcnt = 0,size,(size-1)/RCD_READ_UNIT+1
  65. sys.timerLoopStart(readrcd,1000)
  66. end
  67. end
  68. --5秒后,开始录音
  69. sys.timerStart(record.start,5000,5,rcdcb)