0

iPhone / iPodがスリープまたはロックされたときにオーディオを再生し続けるために、次のコードを使用しています。

mv = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://myurl/myMusic.mp3"]];
mv.movieSourceType = MPMovieSourceTypeUnknown;
[self.view addSubview:mv.view];
[mv play];

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory); AudioSessionSetActive(true);  

このコードを使用すると、デバイスはスリープモードになりませんが、デバイスはスリープモードになりますが、オーディオの再生は停止しません。ファイル
に と を追加Required background modesApp plays audioました。info.plist

どこが間違っているのか教えてください。デバイスがスリープ モード/ロックされないのはなぜですか?

4

2 に答える 2

2

viewdidload で次のコードを使用します。

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];

それは私にとってはうまくいっています。

于 2012-09-11T06:16:41.160 に答える
1

まず、次のフレームワークをプロジェクトに含めます: AudioToolbox、CoreAudio、MediaPlayer、および AVFoundation。それらをすべて、プレーヤーが配置されるviewControllerにインポートします。オーディオを割り当てて再生を開始したら、次のコードを挿入します。

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
AudioSessionSetActive(true);

最後に、アプリの Info.plist ファイルに移動し、UIBackgroundModes という名前の行を追加します。新しい行は配列になり、1 つの項目 (項目 0) が含まれます。これには、値を audio として設定するだけです。そして、あなたは完了です!バックグラウンドオーディオ再生アプリをお楽しみください!

それが役に立てば幸い。幸せなコーディング:)

于 2012-09-10T11:22:51.557 に答える