2010-06-15 18 views
14

Mi mp3 código de jugar es:AVAudioPlayer trabajando en el simulador, pero no en el dispositivo

NSError *error; 
soundObject = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:audioPathString] error:&error]; 
if (soundObject == nil) NSLog(@"%@", [error description]); 
soundObject.delegate = self; 
soundObject.numberOfLoops = 0; 
soundObject.volume = 1.0; 
NSLog(@"about to play"); 
[soundObject prepareToPlay]; 
[soundObject play]; 
NSLog(@"[soundObject play];"); 

El mp3 se utiliza para jugar bien, y todavía lo hace en el simulador. Pero no en el dispositivo.

Recientemente he agregado un código de grabación de sonido (no mío) al software. Utiliza material AudioQueue que está un poco más allá de mí. ¿Eso entra en conflicto con AVAudioPlayer? ¿O cuál podría ser el problema? Me he dado cuenta de que tan pronto como el código de grabación de audio comienza a funcionar, ya no puedo ajustar el volumen en el dispositivo, por lo que tal vez bloquea la reproducción de audio.


EDITAR

La solución parece ser la de poner esto en mi código. Lo puse en applicationDidFinishLaunching:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

La primera línea permite tanto la reproducción y grabación, mientras que las otras líneas aparentemente reencaminar las cosas para que el volumen más alto.

Todo el código de audio es vudú para mí.

+0

¿Qué parte no funciona? –

+0

Reproducir sonidos no funciona, en el dispositivo. Funciona en simulador. – cannyboy

Respuesta

1

Aquí es una cosa rápida, sencilla intentar:

me encontré con un problema similar con imágenes, así como sonidos. El iPhone es sensible a la tapa, incluso las extensiones de archivo, pero el simulador no. Compruebe el objeto NSURL! = Nil además de soundObject.

También es posible que desee probar [[NSBundle mainBundle] URLForResource:@"sound" ofType:@"mp3"]; y asegúrese de que el archivo se copia en el .app bajo YourApp.app/Resources/

-Stephen

+0

Eso no parece ser el problema. – cannyboy

2

Parte del código sé que funciona:

- (void)playOnce:(NSString *)aSound { 

// Gets the file system path to the sound to play. 
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:aSound ofType:@"caf"]; 

// Converts the sound's file path to an NSURL object 
NSURL *soundURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 
self.soundFileURL = soundURL; 
[soundURL release]; 

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error:nil]; 
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded 

[newAudio release]; // release the audio safely 

[theAudio prepareToPlay]; 

// set it up and play 
[theAudio setNumberOfLoops:0]; 
[theAudio setVolume: volumeLevel]; 
[theAudio setDelegate: self]; 
[theAudio play]; 

} 
0

cuando algo funciona en el simulador y no en el dispositivo, lo primero que debe hacer es reiniciar el dispositivo y verificar. a veces, reiniciar el dispositivo me ha funcionado y me ha ahorrado mucho tiempo. De lo contrario, puede comenzar a depurar

10

Asegúrese de que el "Ringer Button" de su iPhone no muestre el color rojo.

+0

¡Qué tonto ... y sin embargo, qué cierto! Ese fue mi problema :) –

+0

¡Lo mismo y ahora me siento como un completo idiota! : D – Shiri

+0

OH, el interruptor lateral que silencia el teléfono. Bleh !! lol –

0

Tenía sonido en el simulador, pero no en el dispositivo. Comenzó a funcionar cuando establecí el delegado de AVAudioPlayer

0

Si está ejecutando código en el simulador iOS 10, no solicita permisos de seguridad pero, si está ejecutando código en el dispositivo ios 10, entonces necesita agregar la clave de permiso de audio en plist. Agregar privacidad - Clave de descripción de uso de micrófono en plist.

Cuestiones relacionadas