Estoy usando xcode 4.2 y creando una aplicación para el iPhone, y tengo una vista que cuando se abre reproduce una transmisión de audio.
Lo que intento lograr es que la aplicación continúe reproduciéndose incluso si entra en segundo plano.
He intentado cualquier posible solución que encontré en stackoverflow o en otro lugar (y hay muchas disponibles), pero no puedo hacer que funcione. Cuando la aplicación ingresa en segundo plano, el audio se detiene, cuando abro la aplicación nuevamente, el audio continúa.iphone - reproducir transmisión de audio en el fondo
En mis ia Info.plist han establecido 2 filas:
Required Background Modes -> App plays audio
&
Application does not run in background -> NO
¿Qué me falta? ¿Qué más se necesita para seguir reproduciendo el audio en el fondo?
Gracias de antemano.
EDIT: Veo muchas respuestas sobre el tema, sugiero el uso de AVAudio Framework. ¿Hay alguna posibilidad de que MPMoviePlayerController no pueda reproducir la transmisión en segundo plano? ¿Debo cambiar a AVAudio?
EDIT 2:
Ok, parece que es demasiado complejo para mí lograrlo. Le doy el código exacto, espero que esto ayude.
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
posible duplicado de [iOS 5 - reproducir el archivo de audio en el fondo cuando se inicia la aplicación] (http://stackoverflow.com/questions/9199095/ios-5-play-audio-file-in-the-background -cuando-la-aplicación-se-lanzó) –
Gracias Parth. En este Q se usa AVAudioPlayer, no MPMoviePlayerController. ¿Crees que no hay diferencia? – CrisDeBlonde
La pregunta es la misma .. El único enfoque es diferente. Puedes cambiar tu enfoque, si eso funciona para ti. –