2009-11-11 16 views
5

को पुनरारंभ नहीं करता है मेरे पास एक लघु परिचय वीडियो वाला एक आईफोन ऐप है। यदि कोई उपयोगकर्ता अपना आईपॉड संगीत चलाते समय ऐप लॉन्च करता है, तो वीडियो वीडियो चलाए जाने पर संगीत बंद हो जाएगा (वीडियो को ध्वनि है या नहीं), और वीडियो प्लेबैक के बाद ऑडियो स्थायी रूप से रुक जाता है। ऐप्पल यह इंगित करता है कि आप इसे ऑडियो सत्र चाल के साथ हल कर सकते हैं: http://www.devworld.apple.com/iphone/library/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/WorkingWithOpenALiPodMusicandMovies/WorkingWithOpenALiPodMusicandMovies.htmlMPMoviePlayerController आइपॉड प्लेबैक रोकता है और

लेकिन उनके सुझाव यहां काम नहीं करते हैं; ऐसा लगता है जैसे MPMoviePlayerController अपने स्वयं के उद्देश्यों के लिए ऑडियो सत्र कॉन्फ़िगरेशन को ओवरराइड करता है। आदर्श रूप से मैं फिल्म ऑडियो को आइपॉड ऑडियो पर मिश्रित करता हूं या शायद डकिंग का उपयोग करता हूं, लेकिन संगीत को पुनरारंभ करने से भी एक निष्क्रिय फिक्स हो सकता है। कोई विचार?

+0

बस एक त्वरित टिप्पणी: ऐप्पल के साथ आगे और पीछे ईमेल करना यह इंगित करता है कि यह शायद ऐप्पल की तरफ एक बग है, और वे इस विशेष समस्या को हल करने के किसी भी तरीके से नहीं जानते हैं। :( – jexe

+0

ऐप्पल से कोई अपडेट? मैंने अब इस समस्या में भाग लिया है –

+0

जो दस्तावेज़ आपने लिंक किया है, वह आपके एप्लिकेशन के भीतर से आईपॉड लाइब्रेरी एक्सेस को संदर्भित करता है, जबकि आपने संकेत दिया है कि आप अपने संगीत को संगीत से संगीत के साथ मिश्रित करना चाहते हैं आइपॉड ऐप - जो एक पूरी तरह से अलग बात है। –

उत्तर

1

आप किसी भी समय एक ही संगीत-प्रदान करने वाला ऐप और किसी भी समय (संक्षिप्त) ध्वनि के स्रोतों को प्राप्त कर सकते हैं। यदि कोई पृष्ठभूमि ऐप संगीत बजा रहा है, तो आपका ऐप संक्षिप्त ध्वनियों को ओवरले कर सकता है। यदि आप संगीत बजाना चाहते हैं, तो पृष्ठभूमि ऐप को रोकना होगा।

इसलिए मुझे नहीं लगता कि आप जो हासिल करने की कोशिश कर रहे हैं वह MPMoviePlayerController (या उच्च स्तरीय ऑडियो ढांचे में से किसी भी) का उपयोग करना संभव है। यदि आप पर्याप्त रूप से कम हैं, तो आप मूवी के ऑडियो ट्रैक को ओवरले करने में सक्षम हो सकते हैं लेकिन MPMoviePlayerController शायद इसके लिए अच्छा नहीं है।

+0

सच नहीं है, यह संभव है प्रलेखन, और एक नए निश्चित संस्करण में संभव है जिसके बारे में मैं बात नहीं कर सकता और मूल रूप से ऐप्पल के साथ खुद को पुष्टि कर रहा हूं कि यह उनके पक्ष में एक बग है। –

+0

क्या आप एक उदाहरण पोस्ट कर सकते हैं? धन्यवाद। –

+0

यदि आप उससे जुड़े दस्तावेज़ के बारे में बात कर रहे हैं @ जेएक्सई द्वारा, यह आईपॉड ऐप का जिक्र नहीं कर रहा है, लेकिन आईपॉड लाइब्रेरी एक्सेस, जो अधिक मिश्रण विकल्पों की अनुमति देता है। मुझे कोई बग नहीं दिख रहा है ऐप्पल की तरफ यहाँ। –

2

मुझे इसके लिए एक अच्छा समाधान मिला है। .h फ़ाइल में, आपको "wasPlaying" नामक एक बूल बनाना होगा। अपना वीडियो चलाने से पहले, यदि आप खेल रहे थे तो आप आईपॉड से पूछेंगे।

if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) 
{ 
    NSLog(@"Music was playing, lets put YES to the bool"); 
    wasPlaying = YES; 
} 

उसके बाद, आप खेलने के लिए फिल्म खिलाड़ी बताने के बाद, आप कॉल निम्नलिखित:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishedPlaying) name:MPMoviePlayerPlaybackDidFinishNotification object: moviePlayer]; 

और उसके बाद, विधि finishedPlaying में:

if (wasPlaying ==YES) 
{ 
    NSLog(@"Music was playing, lets play music again"); 
    [[MPMusicPlayerController iPodMusicPlayer] play]; 
} 

मेरे लिए यह काम किया ठीक!

+0

यह काम नहीं करता है अगर यह ऐपस्टोर से स्थापित एक तृतीय पक्ष ऐप है। फिर से शुरू नहीं किया जा सकता है। कोई भी समाधान? – honcheng

+0

यह डिवाइस पर परीक्षण करते समय मेरे लिए काम किया। क्या आपने अपना प्रयास किया? –

2

मुझे लगता है कि आप इस के लिए इसी तरह ऑडियो सत्र आरंभ करके ऐसा कर सकते:

: जब आप ऑडियो सत्र आप बतख के लिए आइपॉड ऑडियो वीडियो ट्रैक सेट कर सकते हैं का उपयोग करना चाहते तो

NSError *audioSessionError = nil; 
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategoryAmbient 
          error:&audioSessionError] == YES) 

AudioSessionInitialize (NULL, NULL, NULL, NULL); 
OSStatus propertySetError = 0; 
UInt32 allowMixing = true; 
propertySetError |= AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(allowMixing), &allowMixing); 
AudioSessionSetActive(YES); 
संबंधित मुद्दे