2011-01-12 14 views
6

के बाद प्ले को पुनरारंभ नहीं करता है मुझे MPMoviePlayerController के साथ कोई समस्या है।पृष्ठभूमि में MPMoviePlayerController/AVAudioSession आने वाली कॉल

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; 

यह है कि एप्लिकेशन को पृष्ठभूमि में चला जाता है, और सब कुछ ठीक काम कर रहा है खेलने के लिए बनाया गया है: मैं एक m3u8 ऑडियो स्रोत खेलने के लिए एक उदाहरण का उपयोग करें।

समस्या तब होती है जब यह पृष्ठभूमि में होती है और मुझे आने वाली कॉल मिलती है। उस स्थिति में, स्ट्रीम रुक जाती है, लेकिन कॉल समाप्त होने के बाद वापस नहीं आती है। वास्तव में, सांत्वना कहते

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! 

और एप्लिकेशन MPMoviePlaybackStatePlaying के रूप में धारा दिखाने करता है, लेकिन ध्वनि को रोकने के लिए लगता है। मैंने

[[AVAudioSession sharedInstance] setActive: YES error: &err] 

करने की कोशिश की है लेकिन ऐसा लगता है।

क्या किसी के पास कोई सुराग है?

धन्यवाद!

उत्तर

3

ऐसा लगता है

+0

जब प्ले बटन दबाया जाता है और स्टॉप बटन दबाए जाने पर नियंत्रण घटनाओं को प्राप्त करने के दौरान रिमोट कंट्रोल ईवेंट प्राप्त करना शुरू होता है। जब ऐप पृष्ठभूमि पर ऑडियो चला रहा है तो मुझे फिर से शुरू करने से पहले 1 सेकंड का इंतजार करना होगा। का उपयोग कर: dispatch_after (dispatch_time (DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(),^{ // } बजाना फिर से शुरू करें) –

1

जैसे मैं

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

करने के लिए अपने ViewController की viewDidAppear में .... जरूरत आप this link पर देखने के ऑडियो रुकावट को संभालने के लिए किया। आपको AVAudioSessionDelegate सेट करने और बाधाओं को संभालने की आवश्यकता है।

संबंधित मुद्दे