2011-11-10 19 views
12

Ứng dụng của tôi sử dụng AVAudioPlayer để phát qua danh sách phát âm thanh. Tôi chưa thay đổi mã giữa iOS4.3 và iOS5. Tuy nhiên, âm thanh trên iOS5 tạm dừng trên màn hình khóa mặc dù tôi đã đặt danh mục thành AVAudioSessionCategoryPlayback.AVAudioPlayer ngừng phát trên khóa màn hình mặc dù danh mục là AVAudioSessionCategoryPlayback

Tôi đã thử nghiệm mã trên thiết bị iOS4.3 và iOS5 và sự cố này xảy ra trên thiết bị iOS5.

Có ai khác phải đối mặt với vấn đề này không? Tôi đang thua lỗ vì tôi thậm chí không biết bắt đầu gỡ lỗi vấn đề này ở đâu. Gỡ lỗi của tôi đã bắt đầu và kết thúc bằng việc kiểm tra cài đặt AVAudioSessionCategory.

Mã nơi tôi làm việc đó là:

[[AVAudioSession sharedInstance] setDelegate: self]; 
NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; 

Edit:

tôi đã thực hiện và xử lý audioPlayerBeginInterruption

Chỉnh sửa # 2: Giải Quyết! Cảm ơn Rhythmic Fistman's Answer

Đây là những gì đã xảy ra và những gì tôi đã làm. Thay đổi iOS5 giờ đây đẩy ứng dụng của bạn lên nền ngay cả khi màn hình bị khóa. Điều này có nghĩa là bạn cần bật âm thanh nền trong ứng dụng của mình và làm cho bất kỳ chế độ xem/chế độ xem nào xử lý âm thanh đó làm bộ trả lời đầu tiên.

Bước 1: Enable background audio in your app

Bước 2: Enable remote events and become the first responder on the viewcontroller/view responsible for handling your audio playlist

LƯU Ý: Hãy chắc chắn để kiểm tra điều này trên thiết bị. Trình mô phỏng sẽ làm cho nó có vẻ như mã không hoạt động.

Trả lời

12

Khóa màn hình đã thay đổi trong iOS5, bây giờ nó sẽ gửi ứng dụng của bạn về nền, vì vậy nếu bạn muốn âm thanh tiếp tục, bạn phải thêm "âm thanh" dưới dạng UIBackGroundModes vào tệp Info.plist của mình.

Điều gần nhất tôi có thể tìm thấy trong tài liệu này là một số Apple devforumposts (yêu cầu đăng nhập).

+0

Cảm ơn! Tôi đã bỏ lỡ điều này ... Tôi đã thực hiện các thay đổi cho plist nhưng nó vẫn không giúp đỡ. Tuy nhiên đây là một khởi đầu tốt để thực hiện một số tiến bộ .... – Sid

+1

Biến ra, nó không hoạt động trong trình mô phỏng nhưng hoạt động trên thiết bị! Cảm ơn bạn!Bước tiếp theo cho tôi là thiết lập tác vụ nền để chạy qua danh sách phát, vì nó dừng sau khi phát bản nhạc hiện tại. – Sid

+0

Khi tôi đã hoàn tất vấn đề này, tôi sẽ quay lại và chỉnh sửa câu hỏi này để giúp người lang thang không ngừng nghỉ: D – Sid

1

Tôi không quen với âm thanh, nhưng bạn có nhìn về sự gián đoạn không? Tôi đã đọc một cái gì đó mà nói (trong ký ức của tôi) rằng âm thanh có thể được dừng lại khi vi bị gián đoạn xảy ra, và đó là công việc của bạn để làm cho nó chơi một lần nữa.

Nhưng nó chỉ là một cái gì đó đến từ bộ nhớ của tôi. Cái đó có giúp ích không ?

+0

Xin chào Oliver, cảm ơn bạn đã trả lời. Tôi đã triển khai audioPlayerBeginInterruption và đã đặt điểm ngắt trong phương thức đó. Điểm dừng không bị đánh trúng, nên tôi không nghĩ đó là nguyên nhân, thật đáng buồn. :) – Sid

+0

@Sid: Như bạn muốn, tôi có thể để lại câu trả lời của tôi ở đó để giúp những người khác nhìn thấy sự tiến triển của những nỗ lực của bạn, hoặc bạn có thể chèn nó như là một chỉnh sửa trong câu hỏi của bạn và sau đó tôi có thể xóa câu trả lời của tôi nếu bạn muốn để câu hỏi của bạn được đánh dấu là "không có câu trả lời". Như bạn muốn. – Oliver

+0

Để lại câu trả lời là :) Tôi cũng sẽ thực hiện chỉnh sửa cho câu hỏi .... cảm ơn – Sid

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