7

applicationDidEnterBackground:トリガーすると、次を使用して再生中のオーディオを一時停止しますAVAudioPlayer

[self.avPlayer pause];

applicationWillEnterForeground:トリガーされると、オーディオが自動的に再生されます。オーディオを開始していないため、ユーザー インターフェイスは更新されず、オーディオがまだ一時停止状態にあることが示されます。

どうしたの?これは、iPad 2 の iOS 6.x で発生しています。この問題は、iOS 5.x を実行している古い iPad では再現されません。

これは私がセットアップする方法ですAVAudioSession

// Setup the audio session
BOOL succeeded = NO;
NSError *sessionError = nil;
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setDelegate:self];

if ([session respondsToSelector:@selector(setPreferredSampleRate:error:)]) {
    succeeded = [session setPreferredSampleRate:128000.0f error:&sessionError];

} else {
    succeeded = [session setPreferredHardwareSampleRate:128000.0f error:&sessionError];
}

succeeded = [session setCategory:AVAudioSessionCategorySoloAmbient error:&sessionError];
succeeded = [session setActive:YES error:&sessionError];
4

5 に答える 5

1

私の最近のアプリの 1 つで、オーディオ再生が自動的に一時停止し、通話によって中断された後に再開され、アプリで GUI が更新されないという同様の問題を発見しました。次の方法を使用して問題を修正しました。

これをプレイヤーコードを扱うクラスに登録する

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

AVAudioSessionアプリケーションが再開された後、の audioPlayerEndInterruptionデリゲート メソッドを使用して制御を取得します。この関数では、再生を再開し、それに応じて UI を更新できます。

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags

お役に立てれば。

于 2013-07-08T13:38:51.893 に答える
0

HRM のソリューションは私にはうまくいきませんでした。再生が自動的に再開されないようにする唯一の方法は、stop: [self.avPlayer stop] を使用することです。

于 2014-06-04T10:29:14.273 に答える