Tôi gặp sự cố với MPMoviePlayerController. Tôi sử dụng một thể hiện để phát một nguồn âm thanh m3u8:MPMoviePlayerController/AVAudioSession trong nền không khởi động lại phát sau khi cuộc gọi đến
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
if (setCategoryError) {
}
NSError *activationError = nil;
[audioSession setActive:YES error:&activationError];
if (activationError) {
}
self.player =
[[MPMoviePlayerController alloc] initWithContentURL: [NSURL URLWithString:url]];
player.view.hidden = YES;
player.shouldAutoplay = YES;
[player release];
[btnContainer addSubview: player.view];
player.useApplicationAudioSession = NO;
nó được thiết kế để phát khi ứng dụng chuyển sang nền và mọi thứ đang hoạt động OK.
Vấn đề là khi nó ở chế độ nền và tôi nhận được cuộc gọi đến. Trong trường hợp đó, luồng tạm dừng, nhưng không quay lại sau khi kết thúc cuộc gọi. Trong thực tế, giao diện điều khiển nói
2011-01-12 12:02:27.729 RAC1[1571:307] MP _playbackInterruptionDidEndNotification :: NSConcreteNotification 0x155890 {name = AVController_PlaybackInterruptionDidEndNotification; object = <AVController: 0x180d50>; userInfo = {
"AVController_InterruptionStatusNotificationParameter" = "call.declined";
"AVController_InterruptorNameNotificationParameter" = Phone;
}}, _state = 6
2011-01-12 12:02:27.730 RAC1[1571:307] MP _playbackInterruptionDidEndNotification :: resuming playback!
và ứng dụng không hiển thị các dòng như MPMoviePlaybackStatePlaying
, nhưng âm thanh dường như dừng lại. Tôi đã thử thực hiện
[[AVAudioSession sharedInstance] setActive: YES error: &err]
nhưng có vẻ như không thành công.
Có ai có đầu mối không?
cảm ơn!
Tôi bắt đầu nhận các sự kiện điều khiển từ xa khi nhấn nút phát và kết thúc nhận các sự kiện điều khiển khi nhấn nút dừng. Ngoài ra tôi cần phải đợi 1 giây trước khi tiếp tục phát khi ứng dụng đang phát âm thanh trên nền. sử dụng: dispatch_after (dispatch_time (DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(),^{ // Tiếp tục phát }) –