2009-08-04 11 views
1

私はアプリケーションを作成しており、その一部はAVAudioRecorderおよびAVAudioPlayerクラスを使用してサウンドを録音して再生しています。私は以下のようにサウンドファイルを設定しました。デバイスでサウンドが機能しない

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

私はシミュレータでアプリを実行すると、私はそれがないwork.Doesは誰問題は何ができるか任意のアイデアを持っているデバイスにアプリケーションをロードするとき、それはfine.Howeverに動作します。


こんにちは。私はあなたの答えを試みた。しかし、デバイス内の音。それはシミュレータで動作します。私が配信デバイスでテストしたとき、私はクラッシュレポート「不明なカーネル[0]:ERROR:AMCリセット[致命的でないエラー]:BSUをロックできませんでした」を得ました

答えて

1

私はあなたがresourcePathデバイス、それは保護されています。アプリケーションのドキュメントディレクトリを検索し、どこかの書き込み:

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

が、それはあなたが私はiPhone上で動作するように音を取得しようとした最初の時間をした同じことを行っていることは可能ですか?音はミュートされていますか?

別の可能性:

私はバンドル内のファイル名は、デバイス上ではなく、シミュレータでは大文字と小文字が区別されることを発見しました。 (大文字と小文字を区別 - 私はそれぞれのファイルで何がうまくいくのか試してみませんでした。)ファイルが間違っていると、単にシミュレータ上を滑っているかもしれませんが、デバイス上で実行されます。

私は知っている、それは奇妙に聞こえるが、私は自分のプロジェクトでそれを確認した。読み込みが適切であることを知っているファイルを取り出し、ファイル名の大文字と小文字を変更し、デバイス上でどのように動作するかを確認してください。 - 明確化 - バンドル内のファイル名と一致しなくなるようにファイルを取得する名前の大/小文字を変更します。

それはあなたの問題ではありませんが、それにもかかわらず注意すべきことです。

+0

上記の溶液で試しました。次に、同じことがhappend.Worksシミュレータでは、デバイス内のサウンドはありません。他の選択肢はありますか? – diana

+0

ファイル名の大文字小文字をチェックして、束ねられているものと正確に一致するものがあることを確認していると言っていますか? (私は答えがイエスだと仮定しますが、私は確信しています。) – Amagrammer

0

私は自分のコードの一部を見直しました。あなたの意図にマッチして、私は来る:

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

それは動作しますか?

0

デバイスがサイレントモードでないことを確認してください。短い音はサイレントモードでは機能しません。

0

私はAudiosessionを追加するのと同じ問題がありましたが、うまくいきます。

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

これはうまくいきます。

関連する問題