2012-07-12 15 views
14

बंद कर देता है मेरे पास एक अभ्यास ऐप है जिसे ध्वनि चलाने की आवश्यकता है। मैं ध्वनि चलाने के लिए AVAudioPlayer का उपयोग करता हूं। लेकिन जब ऑडियो बजाना शुरू होता है, तो दूसरे ऐप (रेडियो स्ट्रीमिंग ऐप) से पृष्ठभूमि संगीत बंद हो जाता है।आईओएस AVAudioPlayer अन्य ऐप के पृष्ठभूमि संगीत को

मैं पृष्ठभूमि संगीत को बाधित नहीं कर सकता हूं? क्योंकि मैं व्यायाम करने के दौरान उपयोगकर्ता को संगीत सुनना चाहता हूं।

धन्यवाद। SujithPt के उत्तर यहाँ के आधार पर

[[AVAudioSession sharedInstance] setDelegate:self]; 
+1

की [iPhone AVAudioPlayer पृष्ठभूमि संगीत रोक] संभव डुप्लिकेट (http://stackoverflow.com/questions/1672602/आईफोन-एवाउडियोप्लेयर-स्टॉपिंग-पृष्ठभूमि-संगीत) – benzado

+0

आपको एक अलग प्रकार के ऑडियो सत्र – bkbeachlabs

उत्तर

26

आप नीचे दिए गए कोड जहां AVAudioPlayer का उपयोग उपयोग कर सकते हैं स्विफ्ट में एक ही बात है:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil) 
+0

का उपयोग करने की आवश्यकता है क्या आपको वास्तव में प्रतिनिधि को सेट करने की आवश्यकता है। यह श्रेणी सेट करने के लिए पर्याप्त होना चाहिए। –

+0

मैंने कोड का परीक्षण किया है और सेट श्रेणी के लिए केवल एक कॉल की आवश्यकता है। तदनुसार नमूना कोड बदल दिया। –

+0

जब पृष्ठभूमि में अन्य ऐप्स से ऑडियो खेला जाता है, तो मेरा ऐप कारण से दुर्घटनाग्रस्त हो जाएगा: 'आवश्यक शर्त गलत है: _engine-> IsRunning()'। इस मुद्दे को हल किया। – vikzilla

5

:

// Set AudioSession 
    NSError *sessionError = nil; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&sessionError]; 
    [[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; 

आप एक प्रतिनिधि सेट करना चाहते हैं, तो आप कोड की इस पंक्ति जोड़ सकते हैं:

5

मेरे मामले में, मैं चाहता था कि पृष्ठभूमि ऑडियो खेला जाए एक कम मात्रा, क्योंकि मेरे ऐप द्वारा खेली गई आवाज एक चेतावनी की तरह है।

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // prevents our app from stopping other audio, 
    // e.g. music, podcats, etc. that may be playing when launched 
    // our audio will be played at a higher volume 
    // and the background audio will "duck" until done 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryMultiRoute 
            withOptions:AVAudioSessionCategoryOptionDuckOthers 
              error:nil]; 
} 
1

स्विफ्ट 2.2 के लिए, यह कहीं भी इससे पहले कि आप खेल सकते हैं या preparetoplay जोड़ें:: मैं इस का उपयोग

_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
संबंधित मुद्दे