Tôi đang cố gắng để ứng dụng âm thanh của mình phát trong nền. Cho đến nay tôi đã thêm "ứng dụng đóng âm thanh" đến "chế độ đòi hỏi nền" trong info.plist và cũng là mã sau ngay trước khi bắt đầu phát âm thanh của tôi:Âm thanh nền iOS dừng khi màn hình bị khóa
AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, &interruptionListener, sgD);
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, &routeChangeListener, sgD);
// select "Playback" audio session category
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];
OSStatus propertySetError = 0;
UInt32 category = kAudioSessionCategory_MediaPlayback;
propertySetError = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (category), &category);
AudioSessionSetActive(true);
Tuy nhiên, điều này chỉ hoạt động khi tôi chuyển sang ứng dụng khác hoặc màn hình chính của iPod. Khi tôi tắt màn hình, nó cũng tắt đầu ra âm thanh của tôi, mà chắc chắn không phải là những gì tôi muốn. Tuy nhiên, tất cả các hướng dẫn/tài liệu/câu trả lời cho các câu hỏi trên stackoverflow dường như chỉ ra rằng việc giữ cho âm thanh chạy trong khi màn hình tắt tự động khi bạn nhận được âm thanh nền hoạt động. Có ai có gợi ý cho tôi không? Cảm ơn rất nhiều trước! Fritz
Những gì tôi quên nói: Tôi đang sử dụng AudioQueues để tạo luồng đầu ra âm thanh. Lệnh gọi lại âm thanh được gọi khi màn hình tắt, nhưng âm thanh không được nghe thấy ở tai nghe. Điều này có thể cho biết một số vấn đề về tuyến đường âm thanh. Tuy nhiên, cuộc gọi lại thay đổi tuyến đường của tôi không bao giờ được gọi. –
Ok, sự cố đã được giải quyết ... Nó chỉ ra rằng kích thước bộ đệm âm thanh phải đủ lớn nếu nó chạy trong khi màn hình tắt. Tôi không biết nếu điều này áp dụng cho tất cả các ứng dụng, nhưng ứng dụng của tôi cần kích thước bộ đệm của ít nhất 2048 mẫu. Với 1024 mẫu nó chỉ dừng hoạt động. –
Nếu bạn có thể làm cho nó hoạt động, bạn có thể thêm giải pháp của mình làm câu trả lời không? Cảm ơn. –