domingo, 30 de diciembre de 2012

Crear un Reproductor de audio en XCode.

Crear un Reproductor de audio en XCode.


Crear un simple reproductor de audio en el que podemos hacer Play, Pause y Stop, y nos muestra una etiqueta con algunos datos del archivo de audio que estamos reproduciendo.


Código del Archivo ViewController.h:

//
//  ViewController.h
//  audio
//
//  Created by Francisco on 28/12/12.
//  Copyright (c) 2012 Francisco. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h> //Importamos el Framework para poder usar los metodos de AVAdioPlayer


@interface ViewController : UIViewController <AVAudioPlayerDelegate>

//Creamos un objeto llamado reproductor que heredada de la clase AVAudioPlayer.
@property (nonatomic,strong)AVAudioPlayer *reproductor;

//Creamos un objeto etiqueta  que hereda de la clase UILabel, donde mostraremos datos de la reproducccion.
@property (strong, nonatomic) IBOutlet UILabel *etiqueta;

- (IBAction)play:(id)sender;
- (IBAction)pause:(id)sender;
- (IBAction)stop:(id)sender;
- (IBAction)cambioVolumen:(id)sender;

@end




Código Archivo ViewController.m:


//
//  ViewController.m
//  audio
//
//  Created by Francisco on 28/12/12.
//  Copyright (c) 2012 Francisco. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize reproductor,etiqueta;
- (void)viewDidLoad
{
    [super viewDidLoad];
    //Creamos el reproductor y le damos la ruta donde tenemos el archivo de audio
    NSError *error;
    NSString *ruta =[[NSBundle mainBundle]pathForResource:@"Adele" ofType:@"mp3"];
    NSURL *url =[[NSURL alloc]initFileURLWithPath:ruta];
    self.reproductor=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
    self.reproductor.pan =0;// Es para darle el Balance, altavoz derecho o altavoz izquerdo, -1 Izquerda, 0 se escucha igual en los dos, y  1 solo la derecha.
    self.reproductor.enableRate=YES;
    self.reproductor.rate=1;// Es para la velocidad de reproduccion va de 0.5 a 2.
    self.reproductor.numberOfLoops =-1;//Para determinar el numero de repeticiones del archivo.Si ponemos un signo negativo se repite indefinidamente y con un numero positivo ejemplo 3, se repite tres veces.
    
    self.reproductor.volume=1;//Maneja el volumen y su valor es entre 0 y 1.
    [self.reproductor prepareToPlay];//Aqui le estamos diciendo que se prepare para reproducir sonido y asi es mas rapido cuando pulsamos play.
    
    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];

}

- (IBAction)play:(id)sender {
    [self.reproductor play];
}

- (IBAction)pause:(id)sender {
    
      etiqueta.text = [[NSString alloc]initWithFormat:@"Duracion:  %f, TiempoTranscurrido: %f Volumen: %f",self.reproductor.duration,self.reproductor.currentTime,self.reproductor.volume];
    [self.reproductor pause];
    
    
}

- (IBAction)stop:(id)sender {
    
  
    [self.reproductor stop];
}

- (IBAction)cambioVolumen:(id)sender {
    
    self.reproductor.volume=((UISlider *)sender).value;
}
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    
    //Con este metodo podemos saber si nuestro audio a finalizado y si a llegado al final del archivo de audio y hacer algo, tambien tenemos una bandera"flag" con un valor Booleano que nos da YES si el audio a terminado y NO si no a finalizado.
}
@end

4 comentarios:

Anónimo dijo...

saludos acabo de intentarlo he igual copie el codigo pero no me funciono

Francisco (Promedi) dijo...

Se supone que estos fragmentos de código son para personas que ya tengan un poco de nociones sobre programación y por lo tanto he omitido decir que una vez colocados los botones y las etiquetas y el UISlider hay que conectarlos con sus métodos correspondientes, si no sabes como hacerlo me lo dices y creo un pequeño tutorial explicándolo.
Saludos.

Francisco (Promedi) dijo...

Aqui eta el proyecto completo para descargartelo si quieres.

http://rapidshare.com/files/4130815200/Reproducir%20Audio.zip

Saludos.

Unknown dijo...

El Stop funciona como si fuese pausa, al darle play empieza donde quedo y no desde el inicio, porque sucede ello.