记一次帮别人处理iOS录音问题引发的惨案

为什么总是返回-160或者-120

第一步。百度。谷歌,,这个我试了,看过所有的结果后我真想骂娘,只有一个答案就是将audioSession设置AVAudioSessionCategoryPlayAndRecord或者其他Record类的,可我就是这样设置的,尼玛真够了。放弃。
第二步。请教同事,同事做过类似微信发语音的,找了他的代码,看了一下,一行一行对比,结果没有发现什么问题,可是人家的就能运行。放弃。
第三步。自己作最后的挣扎,一步一步调试,尼玛什么,[_audioRecorder prepareToRecord]这个玩意返回NO,看到了胜利的曙光,_audioRecorder都没有准备好,还怎么录音,怎么不返回-160之类的呢,于是继续往上找,没有准备好,就说明_audioRecorder配置有问题,于是我查了录音设置字典没有问题,查了录音保存路径,什么,等等,NSDocumentationDirectory这是什么玩意,不仔细看,真让他给我骗了,记得目录结构里面没有这个东西啊,于是我换成了NSDocumentDirectory。大功告成。自己试着录了一段,播放一了,都正常。

我想说的是,虽然百度、谷歌很强大,也很方便,但是如果你遇到一个问题,最好是在搜索引擎上不要花过多的时间,能找到就看,不能找到就立马放弃,回到代码上自己单步调试跟踪,这未尝不是一个自我学习升华的过程。

提示:[_audioRecorder recordForDuration:60]设置完后,[self.audioRecorder isRecording]的状态会立马返回YES
刚才说的目录问题,也在这里给大家普及一下,我们iOS开发是在沙盒中开发,我们只能在Documents、tmp、Library/Caches这三个文件夹读写,NSDocumentationDirectory这个对应的是Library/Documentation,这个路径我们是没有读写权限的。

忘了说自己的初衷了,本来是想帮朋友一个忙的,朋友有这样一个需求,,他们做一个教育类软件,需要上课,老师和同学可以语音聊天,如果正在上课的时候,我返回到home,屏幕最上方应该会有一个红色的提示条,类似于系统的打电话软件一样,点击红色的提示条,会返回到通话里面,不知道我描述的清不清楚,QQ语音也有这个功能,其实可以搜索VoIP相关就可以。我也帮他整了一下,其实就是在info.plist里面加一条设置就可以了,好像这个不加,录音都不行,毕竟录音是要请求权限的,如果是这样的话,那就直接可以实现直接从home轻触返回到你的APP上了。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,540评论 24 692
  • (一) 故事的开始总是找不到原因,就像我从不曾想过会遇见你。 那一年,一七五左右的你在一群基本都不到一米七的人群里...
    七月二十五阅读 129评论 0 0
  • 今天才得见自己有多白,社会经验少得可怕,真的是面对自己队员的时候,很容易不知道如何去聊。 因为工作经验少,社会经验...
    梦游世界阅读 90评论 1 3
  • 七个好朋友围着一张桌子开启了他们美好的聚会之夜,招待大家的女主人Eva突然提出要玩一个刺激的游戏,每个人都将手机拿...
    沐_心阅读 234评论 0 1
  • 使用流程 创建一个logger 创建一个handler,用于写入日志文件 定义handler的输出格式 将hand...
    cws阅读 137评论 0 1