繁体   English   中英

iOS App要求访问麦克风,甚至要求kAudioSessionCategory_MediaPlayback

[英]iOS App asks for microphone access, even for kAudioSessionCategory_MediaPlayback

我正在使用来自以下网址的Novocaine库: https : //github.com/alexbw/novocaine播放wav文件。 我知道iOS有自己的媒体播放器API,但是它的局限性在于预设的均衡器。 我需要使用Novocaine,因为我正在使用NVDSP https://github.com/bartolsthoorn/NVDSP来实现10频段图形均衡器。

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

“通过使用AVAudioSessionCategoryRecord或AVAudioSessionCategoryPlayAndRecord音频类别生成麦克风同意请求”

在Novocaine.m中,我修改了setupAudio

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord

对这些:

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

但在上述每种情况下,该应用仍要求使用麦克风。

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

为了进行测试,每次修改之后,您都必须在iPod上执行以下操作:

设置->常规->重置->重置位置和隐私

否则测试无效。

我使用XCode调试器单步执行了几乎所有的Novocaine代码,但是诊断起来非常困难,因为麦克风访问弹出窗口仅在显示视图时显示,但是,对代码的检查要早得多。

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

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

Github的DMT4u完全归功于此,但是,是的,他/她的解决方案对我有用! 注释掉以下几行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM