2010-06-15 20 views
14

mio mp3 codice di giocare è:AVAudioPlayer lavorando in Simulator, ma non sul 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];"); 

mp3 usato per giocare bene, ed è fa ancora sul simulatore. Ma non sul dispositivo.

Ho aggiunto recentemente del codice di registrazione del suono (non mio) al software. Usa roba AudioQueue che è leggermente oltre me. Questo è in conflitto con AVAudioPlayer? O quale potrebbe essere il problema? Ho notato che non appena il codice di audiorecording inizia a funzionare, non riesco più a regolare il volume del dispositivo, quindi forse blocca la riproduzione dell'audio ?.


EDIT

La soluzione sembra essere quella di mettere questo nel mio codice. Ho messo in applicationDidFinishLaunching:

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

La prima linea consente sia la riproduzione e la registrazione, mentre le altre linee apparentemente reindirizzare le cose per rendere il volume più forte.

Tutto il codice audio è per me voodoo.

+0

Quale parte non funziona? –

+0

La riproduzione dei suoni non funziona, sul dispositivo. Funziona sul simulatore. – cannyboy

risposta

1

Ecco una rapida, semplice cosa da provare:

mi sono imbattuto in un problema simile con le immagini così come i suoni. L'iPhone è sensibile alla caps, anche le estensioni dei file, ma il simulatore no. Controllare l'oggetto NSURL! = Nil oltre a soundObject.

Si potrebbe anche voler provare [[NSBundle mainBundle] URLForResource:@"sound" ofType:@"mp3"]; e assicurarsi che il file sia copiato nella .app sotto YourApp.app/Resources/

-Stephen

+0

Questo non sembra essere il problema. – cannyboy

2

Alcuni codice So opere:

- (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

quando qualcosa funziona su simulatore e non sul dispositivo, la prima cosa da fare è riavviare il dispositivo e controllare. a volte il riavvio del dispositivo ha funzionato per me e ho risparmiato un sacco di tempo. Altrimenti, puoi avviare il debug

10

Assicurati che il tuo iPhone "Ringer Button" non mostri il colore rosso.

+0

Che sciocco ... e quanto è vero! Quello era il mio problema :) –

+0

Stesso e ora mi sento un completo idiota! : D – Shiri

+0

OH, l'interruttore laterale che silenzia il telefono. Bleh !! lol –

0

Avevo audio nel simulatore, ma non sul dispositivo. Ha iniziato a funzionare quando ho impostato delegato AVAudioPlayer

0

Se si sta eseguendo il codice sul simulatore iOS 10, non richiede i permessi di sicurezza ma, se si sta eseguendo il codice sul dispositivo ios 10, è necessario aggiungere la chiave di autorizzazione audio in plist. Aggiungi Privacy - Microfono Utilizzo Descrizione chiave in plist.

Problemi correlati