1

https://github.com/alexbw/novocaineの Novocaine ライブラリを使用してwav ファイルを再生しています。iOS には独自のメディア プレーヤー API があることは知っていますが、その制限はプリセット イコライザーにあります。NVDSP https://github.com/bartolsthoorn/NVDSPを使用して 10 バンドのグラフィック イコライザーを実装しているため、Novocaine を使用する必要があります。

Apple は、マイクへのアクセスを要求するという理由で提出されたアプリを拒否しましたが、これは再生アプリにすぎません。彼らは言った:

「マイクの同意要求は、AVAudioSessionCategoryRecord または AVAudioSessionCategoryPlayAndRecord オーディオ カテゴリを使用して生成されます」

Novocaine.m では、setupAudio を次のように変更しました。

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord

これらのそれぞれに:

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

ただし、上記の各ケースで、アプリは引き続きマイクへのアクセスを要求しました。

すべてのコードを検索しましたが、これはオーディオ セッション カテゴリが設定されている唯一の場所です。

テストするには、すべての変更後に、iPod で次の操作を行う必要があります。

設定 -> 一般 -> リセット -> 位置情報とプライバシーをリセット

それ以外の場合、テストは無効です。

XCode デバッガーを使用して Novocaine コードのほぼすべてを 1 ステップ実行しましたが、マイク アクセス ポップアップはビューが表示されているときにのみ表示されるため、診断が非常に困難です。

マイクへのアクセスを要求する、または副作用としてマイクへのアクセスに影響を与えるコード内の他の場所はありますか?

iOS SDK 7.0 で XCode 5.0.2 (5A3005) を使用しています。私の唯一のテスト デバイスは iPod Touch 第 5 世代です。

4

1 に答える 1

1

これについては、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

于 2014-03-10T20:23:30.067 に答える