web-dev-qa-db-ja.com

iOS7を搭載したAVAudioRecorderとAVAudioPlayerが正しく機能しない

aVFoundationフレームワークに問題があります。 iOS 6で、オーディオの録音、再生、デシベルの計算を行うデモアプリを作成しました。どちらも、iOSシミュレーターに組み込まれたxcode4.6.3とiOS6.1.3を搭載したiPhoneで動作しました。

これで、xcodeをバージョン5に更新し、appaを再度テストしました。組み込みのシミュレーターを使用すると、動作します(iOS6.1およびiOS7シミュレーターの両方で)。しかし、iOS 7.0でアプリをiPhoneにデプロイすると、機能しなくなります。

AVAudioRecorderAVAudioPlayerを使用しています。

何が問題なのかわかりません。助言がありますか?ありがとうございました!

20
carlodonz

同じ問題が発生していました... AppleはAVAudioSessionを使用する前にAVAudioRecorderを使用する必要があるようです。この要件の変更に関するドキュメントを見つけてください。ただし、私のアプリの記録部分は現在機能しています。

audioSessionを作成し、カテゴリを設定して、アクティブに設定するだけでした。 prepareToRecordを呼び出す前にこれを行い、prepareToRecord...を呼び出した後に両方の方法で試しました。

これで問題が解決することを願っています!

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
60
Mr.Hardy

同じ問題。

AVAudioSessionを使用して修正しました。さらに、AVAudioSessionのカテゴリを適切に設定します。

使用を記録する場合:

[self.audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

使用をプレイするとき:

[self.audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

再生時にカテゴリを切り替えないと、登録音量が非常に小さくなります。

幸運を!

5
rossodisera

私もこの問題に直面しているので、最初に[設定]-> [プライバシー]-> [マイク]に移動して、アプリにマイクの使用許可があることを確認する必要がありました。その後、成功しました。

1
Anil Prasad

マイクにアクセスできない可能性があります。このコードを使用します:

if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
    [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
        if (granted) {
            // Microphone enabled code
        }
        else {
            // Microphone disabled code
        }
    }];
}
0
Alexander