2014-01-24 28 views
0

我正在使用来自:https://github.com/alexbw/novocaine的Novocaine库来播放wav文件。我知道iOS有自己的媒体播放器API,但它的局限性在于预设均衡器。我需要使用Novocaine,因为我正在使用NVDSP https://github.com/bartolsthoorn/NVDSP来实现10频段图形均衡器。iOS应用程序请求麦克风访问,即使对于kAudioSessionCategory_MediaPlayback

Apple拒绝了我提交的应用程序,因为它要求输入麦克风,但它只是一个回放应用程序。他们说:

在Novocaine.m“麦克风同意请求是通过使用任一AVAudioSessionCategoryRecord或AVAudioSessionCategoryPlayAndRecord音频类别的生成”,我修改了setupAudio从

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord 

到每个其中:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback 
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound 
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound 

但在上述每种情况下,应用程序仍然要求麦克风访问。

我搜索了所有的代码,这是设置音频会话类别的唯一地方。

要进行测试,每次修改后,你必须做这在iPod:

设置 - >通用 - >设置 - >还原位置&隐私

否则测试无效。

通过几乎所有的Xcode调试的奴佛卡因码的我单步,但它是非常难以诊断,因为麦克风接入弹出只显示在显示视图,但是,对于它的支票发生得更早在代码中。

在请求麦克风访问或作为副作用影响麦克风访问的代码中是否还有其他地方?

我在iOS SDK 7.0中使用XCode 5.0.2(5A3005),而我唯一的测试设备是iPod Touch第5代。

+0

我遇到了同样的问题。任何运气找到解决方案? – Rogare

回答

0

完整功劳归于DMT4u在Github上,但是,他/她的解决方案为我工作!注释掉以下行:

UInt32 one = 1; 
CheckError(AudioUnitSetProperty(inputUnit, 
kAudioOutputUnitPropertyEnableIO, 
kAudioUnitScope_Input, 
kInputBus, 
&one, 
sizeof(one)), "Couldn't enable IO on the input scope of output unit"); 

来源:https://github.com/alexbw/novocaine/issues/76