2014-01-24 25 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