2012-11-29 3 views
4

오디오 파일을 재생하는 아주 간단한 코드를 작성하려고합니다. 코드는 iPad2 시뮬레이터에서 제대로 작동합니다. 그러나 내 iPad2 기기에서는 [audooPlayer play]가 false를 반환하고 아무 소리도 들리지 않습니다.AVAudioPlayer play가 하드웨어에서 false를 반환합니다.

.caf 및 .wav 파일을 모두 시도했습니다. 내 iPad2를 재부팅하고 음소거 스위치가 꺼져 있는지 확인했습니다. 디버깅하는 방법에 대한 팁은 입니다. 매우입니다.

샘플 코드 :

- (void)playAudio { 
    NSString *file = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"]; 
    url = [NSURL fileURLWithPath:file]; 
    NSError *error = nil; 
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    if (error != nil) { 
     NSLog(@"Error creating audio player: %@", [error localizedDescription]); 
     return; 
    } 
    [audioPlayer setDelegate:self]; 
    if (![audioPlayer prepareToPlay]) { 
     NSLog(@"Error preparing audio"); 
     return; 
    } 
    // Everything works fine up to this point 
    if (![audioPlayer play]) { 
     // I hit this on hardware. Works perfect on the simulator. 
     NSLog(@"Error playing audio"); 
     return; 
    } 
+1

나는 iPhone 시뮬레이터와 iPhone 장치 (둘 다 iOS 6.0 임)에서 코드를 테스트했으며 잘 작동합니다! iPad 장치가 없습니다. 너의 잘못은 뭐니? 'audioPlayerDecodeErrorDidOccur'가 호출 되었습니까? – sunkehappy

+1

도와 주셔서 감사합니다. 결과는 다른 곳에 문제가 있다는 것을 알게 해주었습니다. 내 대답은 아래를 참조하십시오. – Brad

+0

나는 둘 다 아이폰 시뮬레이터에서 코드를 테스트 해봤는데 잘 작동한다. 하지만 실제 기기에서는 작동하지 않습니다. : (( –

답변

12

너무 많은 디버깅 후, 나는 마침내 범인을 발견. 나는 가이드를 따라 http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html#//apple_ref/doc/uid/TP40009767-CH2에 있었고, 이전에 오디오를 재생하기 전에 내 앱에서 오디오를 녹음했다. 그 가이드를 기반으로 전화했을 때

[[AVAudioSession sharedInstance] setActive: NO error: nil]; 

레코딩 완료시. 이로 인해 AVAudioPlayer가 오디오 재생에 실패하게됩니다. 전화를 변경하면

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

대신 사물을 수정합니다. 이것은 시뮬레이터에서 문제가 아니지만 하드웨어에 문제를 일으키는 것은 매우 이상합니다.

+1

고마워요. 이걸 찾지 못했을 겁니다.) – Linuxios

+0

Ditto. 감사합니다. 디버깅 시간을 절약 해 주셨습니다. – mbm29414

관련 문제