2009-08-04 7 views
1

J'écris une application et une partie de celle-ci enregistre et joue le son en utilisant les classes AVAudioRecorder et AVAudioPlayer. J'ai mis en place le fichier son comme ci-dessous.Le son ne fonctionne pas dans l'appareil

NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; 
resourcePath = [resourcePath stringByAppendingString:@"/sound.caf"];  
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 

Quand je lance l'application dans le simulateur, il fonctionne fine.However quand je charger l'application dans l'appareil, il ne work.Does quelqu'un a une idée de ce que pourrait être le problème.


Salut coob. J'ai essayé avec votre réponse. Mais pas de son dans l'appareil. Il fonctionne dans un simulateur. Quand j'ai testé dans un périphérique de distribution j'ai reçu un rapport d'erreur "unknown kernal [0]: ERREUR: AMC reset [erreur non fatale]: impossible de verrouiller BSU"

Répondre

1

Je ne pense pas que vous puissiez écrire sur le chemin de ressources l'appareil, c'est protégé. Trouvez le répertoire des documents App et écrire quelque part là-bas:

NSArray *filePaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *recordingDirectory = [filePaths objectAtIndex: 0]; 
NSString *resourcePath = [recordingDirectory stringByAppendingString:@"/sound.caf"]; 
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 
0

Est-il possible que vous avez fait la même chose que je l'ai fait la première fois que je voulais obtenir un son de travailler sur un iPhone? Le son est-il coupé?

Une autre possibilité:

J'ai découvert que les noms de fichiers dans le paquet sont sensibles à la casse sur l'appareil, mais pas dans le simulateur. (Ou plus sensible à la casse - je n'ai pas expérimenté exactement ce qui fonctionne sur chacun.) Donc, si le cas est faux sur un fichier, il peut simplement glisser sur le simulateur, mais renvoyer nil au lieu du fichier fonctionne sur l'appareil. Je sais, ça semble étrange, mais je viens de le confirmer dans mon propre projet. Essayez de prendre un fichier que vous savez charger correctement, changer la casse du nom de fichier et voir comment cela fonctionne sur l'appareil. - clarification - change la casse du nom par lequel vous récupérez le fichier afin qu'il ne corresponde plus au nom de fichier dans le paquet. Ne veut pas dire que c'est votre problème, mais quelque chose à surveiller quand même.

+0

Essayé avec la solution ci-dessus. Puis aussi la même chose se produit.Travaille en simulateur et pas de son dans l'appareil. D'autres alternatives? – diana

+0

Donc vous dites que vous avez vérifié le cas (capitalisation) des noms de fichiers, pour vous assurer que ce que vous demandez correspond exactement à ce qui est dans le paquet? (Je suppose que la réponse est oui, mais je veux juste m'assurer.) – Amagrammer

0

Je viens d'examiner une partie de mon code. Correspondant à vos intentions, je viens avec:

NSString *soundName = @"sound"; // without extension -- mimicing your naming 
NSString *resourcePath = [[NSBundle mainBundle] pathForResource: soundName ofType: @"caf"]] 
self.soundFileURL = [NSURL fileURLWithPath:resourcePath]; 

Est-ce que cela fonctionne?

0

Assurez-vous que votre appareil n'est pas en mode silencieux. Les sons courts ne fonctionnent pas en mode silencieux.

0

J'ai eu le même problème que j'ajoute Audiosession alors ça fonctionne très bien.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 

Espérons que cela fonctionnera.