Tôi đang sử dụng xcode 4.2 và tạo ứng dụng iphone và có chế độ xem khi mở được phát một luồng âm thanh.
Những gì tôi cố gắng đạt được là có ứng dụng tiếp tục phát ngay cả khi nó đi vào nền.
Tôi đã thử bất kỳ giải pháp có thể nào mà tôi đã tìm thấy trong stackoverflow hoặc ở nơi khác (và có nhiều sẵn có), nhưng không thể làm cho nó hoạt động. Khi ứng dụng vào nền âm thanh dừng lại, khi tôi mở lại ứng dụng, âm thanh sẽ tiếp tục.iphone - phát dòng âm thanh ở chế độ nền
Trong ia Info.plist tôi đã thiết lập 2 hàng:
Required Background Modes -> App plays audio
&
Application does not run in background -> NO
am i thiếu gì? những gì khác là cần thiết để tiếp tục chơi âm thanh trong nền?
Cảm ơn bạn trước.
EDIT: Tôi thấy nhiều câu trả lời về vấn đề này, đề xuất việc sử dụng khung AVAudio. Có bất kỳ cơ hội nào mà MPMoviePlayerController không thể phát luồng trong nền không? Tôi có nên đổi sang AVAudio không?
CHỈNH SỬA 2:
Ok, có vẻ quá phức tạp để tôi đạt được. Tôi đưa ra mã chính xác, hy vọng điều này sẽ giúp ích.
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
bản sao có thể có của [iOS 5 - phát tệp âm thanh trong nền khi ứng dụng được khởi chạy] (http://stackoverflow.com/questions/9199095/ios-5-play-audio-file-in-the-background -when-the-app-is-launch) –
Cảm ơn Parth. Trong Q AVAudioPlayer này được sử dụng, không phải MPMoviePlayerController. Bạn nghĩ rằng nó không có sự khác biệt? – CrisDeBlonde
Câu hỏi là như nhau .. Cách tiếp cận duy nhất là khác nhau. Bạn có thể thay đổi cách tiếp cận của bạn, nếu điều đó làm việc cho bạn. –