2

.caf オーディオ ファイルを再生するためのコードを使用します。同じコードは iPhone 4s と iPad 2 では正常に動作しますが、iPhone 5 ではまったく再生されません...

これはコードです:

-(IBAction)checkSound:(id)sender
 {
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Lunatic.caf", [[NSBundle mainBundle] resourcePath]]]; 

NSLog(@"%@",url);

NSError *error;

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

self.audioPlayer.numberOfLoops = 0; 

self.audioPlayer.volume = 1; 


NSLog(@"log audioplayer: %@",audioPlayer);

if (audioPlayer != nil)
{
    [self.audioPlayer prepareToPlay];
    [self.audioPlayer play];
}


if (audioPlayer.playing == NO)
{
    NSLog(@"not playing, error: %@",error);
}


if([[NSFileManager defaultManager] fileExistsAtPath:@"file://localhost/var/mobile/Applications/0D3F5169-8DB1-4398-A09A-DB2FBADF57EF/myApp.app/Lunatic.caf"])
{
    NSLog(@"file exist");
}
else
{
    NSLog(@"file doesn't exist");
}


 }

これはログ出力です:

2013-08-07 20:05:52.694 myApp[7006:907] ファイル://localhost/var/mobile/Applications/0D3F5169-8DB1-4398-A09A-DB2FBADF57EF/myApp.app/Lunatic.caf 2013-08-07 20:05:52.697 myApp[7006:907] log audioplayer: (null) 2013-08-07 20:05:52.701 myApp[7006:907] 再生していません、エラー: エラー Domain=NSOSStatusErrorDomain Code=-43 "操作できませんでした「完了できません。(OSStatus エラー -43.)」 2013-08-07 20:05:52.703 myApp[7006:907] ファイルが存在しません

ご覧のとおり、audioplayer のログには "null" が表示され、エラー ログにはエラー -43 が表示されます。繰り返しますが、iPhone 4s ではすべて正常に動作します。

なぜこれが起こっているのですか?iPhone 5 のオーディオで何か変更がありましたか? iPhone 5 の設定が音の再生を妨げている可能性はありますか? どんな助けでも大歓迎です

4

1 に答える 1

1

[audioPlayer prepareToPlay]プレイに電話する前に電話しましたか? また、audioRoutes を再確認して、適切なチャンネルから再生されていることを確認しましたか?

適切なサニティ チェックは次の 2 つです。

1.) 呼び出し[audioPlayer isPlaying]て、play を呼び出した後に yes または no が返されるかどうかを確認します。

2.) を設定しAVAudioPlayerDelegate、コールバックがオンになるのを待ちaudioPlayerDidFinishPlaying:、オーディオの長さの後に呼び出されるかどうかを確認します。

http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

編集:ファイルが実際に再生されていないため、呼び出しているパスに何か問題がある可能性があります。

NSLog を使用してパスを出力し、次を使用してファイルが実際に存在するかどうかを確認します。

if([[NSFileManager defaultManager] fileExistsAtPath:yourPath])
{

}
于 2013-08-07T17:03:21.430 に答える