2013-09-26 3 views
4

NSData를 사용하여 오디오 파일을로드해도 여기있는 다른 옵션을 모두 시도했습니다. mp3, m4a, caf 파일을 시도했지만 아무것도 작동하지 않습니다.AVAudioPlayer가 iOS7에서 작동하지 않습니다.

오류 메시지가 없으며 아무 것도 표시되지 않습니다.

이것은 XCODE 5, iOS7을 사용하는 새로운 앱입니다. 내가

- (void)playOnce:(NSString *)aSound 
{ 


    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    [audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil]; 
    [audioSession setActive:YES error:nil]; 

    // Gets the file system path to the sound to play. 
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:aSound ofType:@"m4a"]; 

    // Converts the sound's file path to an NSURL object 
    NSURL *soundURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 
    AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL: soundURL error:nil]; 


    [newAudio prepareToPlay]; 

    // set it up and play 
    [newAudio setNumberOfLoops:0]; 
    [newAudio setVolume: 1]; 
    [newAudio setDelegate: self]; 
    [newAudio play]; 

} 

어떤 도움을 크게 감사를 사용하고 어떤

이입니다. 나는 이것들에 너무 오래 머물렀다.

미리 감사드립니다.

+0

아이폰 OS 7에서 오디오 파일을 재생 할 수 있었다? 오류가 없다고 말하면 문제가 무엇입니까? 오디오 소리가 들리지 않니? 시뮬레이터 나 장치를 사용하고 있습니까? –

+0

실제로 아무 일도 일어나지 않습니다. 소리도, 아무것도. 시뮬레이터와 장치 모두. 나는 버튼을 사용하여 연주를 시작했고 버튼은 몇 초 동안 비활성화되고 다시 활성화되지만 아무 일도 일어나지 않습니다. 어떤 소리도 들리지 않습니다. – Elkucho

+0

다음 코드를 추가했지만 아직 아무것도 ... AVAudioSession * audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory : AVAudioSessionCategoryPlayAndRecord 오류 : nil]; [audioSession setActive : 예 오류 : nil]; – Elkucho

답변

17

당신은 당신이하는 방법에 AVAudioPlayer를 선언하면이 방법이 실행되었다 직후에 발표 될 예정이다

@property (strong, nonatomic) AVAudioPlayer * newAudio; 

아래와 같이 뷰 컨트롤러에 강한 참조 @property 같은 AVAudioPlayer를 선언 할 필요가없는 소리를 낼 수있는 충분한 시간.

+0

예, 알았습니다. 고마워. – Elkucho

+0

이것은 매우 멋지다! –

2

나는이 같은 노력하고 내가 정확히 작동하지 않습니다 무엇

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL* url = [[NSBundle mainBundle] URLForResource:@"DR" withExtension:@"mp3"]; 
    NSAssert(url, @"URL is valid."); 
    NSError* error = nil; 
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    if(!self.player) { 
    NSLog(@"Error creating player: %@", error); 
    } 
    self.player.delegate = self; 
    [self.player prepareToPlay]; 
} 

- (IBAction)playAction:(id)sender { 
    [self.player play]; 
} 
+0

self.player는 강력한 속성으로 선언하는 것과 같습니다. ARC는 스코프가이 메소드를 넘어서는 것을 요구하며, 그렇지 않으면 디스로 액트된다. –

관련 문제