2012-03-26 16 views
5

मैं xcode 4.2 का उपयोग कर रहा हूं और एक आईफोन ऐप बना रहा हूं, और एक दृश्य है कि जब खोला जाता है तो ऑडियो स्ट्रीम चलाता है।
मैं जो हासिल करने का प्रयास करता हूं वह है कि ऐप पृष्ठभूमि में प्रवेश करने पर भी खेलना जारी रखे।
मैंने किसी भी संभावित समाधान की कोशिश की है जिसे मैंने स्टैक ओवरफ्लो या अन्य जगहों में पाया है (और कई उपलब्ध हैं), लेकिन यह काम नहीं कर सकता है। जब एप्लिकेशन पृष्ठभूमि में प्रवेश करता है तो ऑडियो बंद हो जाता है, जब मैं ऐप खोलता हूं तो ऑडियो जारी रहता है।
Required Background Modes -> App plays audio &
Application does not run in background -> NOआईफोन - पृष्ठभूमि में ऑडियो स्ट्रीम चलाएं

मैं क्या याद आ रही है:

मेरी Info.plist आइए में 2 पंक्तियाँ निर्धारित किया है? पृष्ठभूमि में ऑडियो बजाने के लिए और क्या चाहिए?
अग्रिम धन्यवाद।

संपादित करें: मुझे इस मुद्दे पर कई उत्तरों दिखाई देते हैं, AVAudio Framework के उपयोग का सुझाव देते हैं। क्या कोई मौका है कि MPMoviePlayerController पृष्ठभूमि में स्ट्रीम चलाने में सक्षम नहीं है? क्या मुझे AVAudio में बदलना चाहिए?

संपादित करें 2:
ठीक है, ऐसा लगता है कि यह मेरे लिए बहुत जटिल है। मैं सही कोड दे रहा हूं, उम्मीद है कि इससे मदद मिलेगी।

RadioStreamer.h

#import <UIKit/UIKit.h> 
#import "MediaPlayer/MediaPlayer.h" 
@interface RadioStreamer : UIViewController { 
    MPMoviePlayerController *player; 
    IBOutlet UIButton *playButton; 
    IBOutlet UIButton *pauseButton; 
} 
@property (nonatomic, retain) MPMoviePlayerController *player; 
@property (nonatomic, retain) IBOutlet UIButton *playButton; 
@property (nonatomic, retain) IBOutlet UIButton *pauseButton; 

- (IBAction)playButtonPressed:(id)button; 
- (IBAction)pauseButtonPressed:(id)button; 
- (void) playAudio; 
- (void) pauseAudio; 
@end 

RadioStreamer.m

#import "RadioStreamer.h" 
#import "tabbartestAppDelegate.h" 

@implementation RadioStreamer 
@synthesize player; 
@synthesize playButton; 
@synthesize pauseButton; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    return self; 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [email protected]""; 
    // Do any additional setup after loading the view from its nib. 

    if (!self.player) { 
     player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://s6.onweb.gr:8006/listen.pls"]]; 
     player.movieSourceType = MPMovieSourceTypeStreaming; 
     player.view.frame = CGRectMake(55, 180, 200, 30); 
     player.backgroundView.backgroundColor = [UIColor clearColor]; 
     player.view.backgroundColor = [UIColor clearColor]; 
     [self.view addSubview:player.view]; 
     [player play]; 
    } 
} 

- (void) playAudio { 
    if (player.playbackState != MPMoviePlaybackStatePlaying){ 
     [player play]; 
    } 
} 

- (void) pauseAudio { 
    if (player.playbackState == MPMoviePlaybackStatePlaying) { 
     [player pause]; 
    } 
} 

- (IBAction)playButtonPressed:(id)button { 
    [self playAudio]; 
} 

- (IBAction)pauseButtonPressed:(id)button { 
    [self pauseAudio]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 


- (void)dealloc { 
    [self.player release]; 
    [self.playButton release]; 
    [self.pauseButton release]; 
    self.player = nil; 
    self.playButton = nil; 
    self.pauseButton = nil; 
} 

@end 
+0

ऐप लॉन्च होने पर पृष्ठभूमि में आईओएस 5 - ऑडियो फाइल चलाने के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/9199095/ios-5-play-audio-file-in-the-background -वेन-द-ऐप-लॉन्च) –

+0

धन्यवाद पार्थ। इस क्यू में AVAudioPlayer का उपयोग किया जाता है, MPMoviePlayerController नहीं। आपको लगता है कि इसमें कोई फर्क नहीं पड़ता? – CrisDeBlonde

+0

प्रश्न वही है .. केवल दृष्टिकोण अलग है। यदि आप अपने लिए काम करते हैं तो आप अपना दृष्टिकोण बदल सकते हैं। –

उत्तर

6

आपके ऑडियो सत्र सेटअप की जांच करें कि के रूप में कुछ अतिरिक्त ध्यान देने की आवश्यकता हो सकती है।

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
             error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES 
            error:nil]; 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
+0

हाय, मेरे प्रश्न के साथ परेशान करने के लिए धन्यवाद। MPMoviePlayerController के साथ AVAudioSession को क्या करना है? क्या आप कृपया समझा सकते हैं? किसी भी तरह, आपके कोड को जोड़ने से कोई फर्क नहीं पड़ता। – CrisDeBlonde

+0

@CrisDeBlonde आपको वास्तव में ऑडियो सत्र दस्तावेज़ों की जांच करनी चाहिए। – Till

+1

अंततः यह समाधान प्रतीत होता है, लेकिन किसी कारण से, सिम्युलेटर में यह पृष्ठभूमि में नहीं चलता है। हालांकि डिवाइस पर इसका परीक्षण करना, आकर्षण की तरह काम करता है। – CrisDeBlonde

0

इस जगह पर विवरण में प्रोग्रामिंग ट्यूटोरियल पर कितना ठोकर खाई। http://mobisoftinfotech.com/integrate-music-player-in-iphone/

यह ऐप के भीतर संगीत बजाना चाहिए और यदि आप अपना ऐप पृष्ठभूमि में लेते हैं तो भी खेलना जारी रखें।

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