2010-07-21 72 views
6

Tôi đang cố gắng phát chuỗi các tệp âm thanh trong nền bằng AVAudioPlayer. Khi ứng dụng không ở chế độ nền, nó sẽ phát tốt nhưng khi ứng dụng chuyển sang nền, ứng dụng sẽ không phát bài hát thứ hai.iphone: đang phát danh sách phát âm thanh trong nền?

Đây là mã của tôi:

-(void)playAudio:(NSString *)path{ 
    NSURL *url = [NSURL fileURLWithPath:path]; 

    NSError *error; 
    AVAudioPlayer *ap = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 
    ap.delegate = self; 

    mainController.audioPlayer = ap; 
    [ap release]; 


    if (mainController.audioPlayer == nil) 
     NSLog([error description]); 
    else{ 


     UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid; 

     [mainController.audioPlayer prepareToPlay]; 

     if([mainController.audioPlayer play]){ 

      newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 

     } 

     if (newTaskId != UIBackgroundTaskInvalid && bgTaskId != UIBackgroundTaskInvalid) 
      [[UIApplication sharedApplication] endBackgroundTask: bgTaskId]; 

     bgTaskId = newTaskId; 
    } 

} 

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ 
    NSLog(@"finished now next..."); 
    [self playAudio:[self getNextAudio]]; 

} 

tôi sửa lỗi ứng dụng và có vẻ như rằng khi đó là về để chơi bài hát thứ hai [mainController.audioPlayer chơi] trả NO, có nghĩa là nó không thể chơi. Vậy bạn nghĩ sao?


CẬP NHẬT

Sau một số thử nghiệm có vẻ như nó không tiếp tục đóng đúng chỉ khi khóa thiết bị, nhưng nếu người dùng nhấn nút home và ứng dụng đi vào nền vấn đề vẫn còn

+0

Một chút giúp đỡ cho bạn: http://stackoverflow.com/questions/3161635/entering-background-on-ios4-to-play-audio/3161899#3161899 – iwasrobbed

+0

Vâng Tôi nhìn tại chuỗi đó trước đó và một phần mã của tôi là từ đó. vì một số lý do mà AVAudioPlayer từ chối phát một bản nhạc mới khi anh ấy ở chế độ nền. – Alex1987

+0

@IWasRobbed - Có vẻ như bạn có vấn đề tương tự. bạn có thể đăng một số mã của bạn không? Cảm ơn – Alex1987

Trả lời

9

GIẢI PHÁP

Chỉ cần thêm [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; và một số điều chỉnh khác. Đó là tất cả ở đây

https://devforums.apple.com/message/264397

+0

tuyệt đối phao cứu sinh! Tôi đã googling cho điều này trong một ngày và một nửa :) – kritzikratzi

+0

liên kết để giải thích là bị hỏng – Shaybc

Các vấn đề liên quan