2011-01-14 35 views
8

Tôi đang viết một ứng dụng iPad sử dụng công cụ chuyển văn bản thành giọng nói "Flite" để thông báo các sự kiện cụ thể. Động cơ Flite sử dụng một cá thể AVAudioPlayer để phát âm thanh giọng nói khi nó hiển thị. Để giải trí, tôi quyết định thêm một số điều khiển đơn giản vào ứng dụng của mình để cho phép người dùng điều khiển phát lại iPod (tiếp theo, thắng, phát/tạm dừng và âm lượng) trong khi ứng dụng của tôi đang chạy bằng MPMusicPlayerController (tất nhiên).Mức âm lượng iPod ảnh hưởng đến Mức âm lượng ứng dụng

Sự cố tôi gặp phải là khi tôi điều chỉnh âm lượng iPod bằng MPMusicPlayerController, tất cả âm thanh của tôi bị ảnh hưởng, bao gồm các hiệu ứng âm thanh và âm thanh giọng nói khác. Tôi đặt âm lượng cho các trình phát âm thanh khác (phiên bản AVAudioPlayer) thành 1.0 trước khi phát âm thanh nhưng có vẻ như âm lượng luôn được giới hạn ở bất kỳ mức âm lượng máy nghe nhạc nào được đặt thành ...

Điều này có bình thường không? Và tôi có thể làm gì để vượt qua nó? Tôi muốn âm thanh của ứng dụng của tôi phát ở mức âm lượng toàn hệ thống bất kể mức âm lượng của trình phát iPod. (Ví dụ: Người dùng đã đặt âm lượng hệ thống lên 80% tối đa của thiết bị. Tôi muốn ứng dụng của mình phát âm thanh ở 100% trong số đó 80% trong khi cho phép người dùng điều chỉnh phát lại âm thanh iPod tới 0-100% trong số đó 80 %.) Lưu ý: Tôi không quan tâm đến "vịt" nhưng thiết lập âm lượng iPod thấp hơn mọi lúc trong khi ứng dụng của tôi đang chạy (nhạc nền).

Tôi cũng gặp sự cố, đôi khi - khi bạn khởi chạy ứng dụng lần đầu tiên và nhấn phát trên trình phát iPod (gửi cuộc gọi [trình phát], iPod không phản hồi. Nếu tôi nhấn nút Home, hãy vào ứng dụng iPod và bắt đầu phát lại sau đó, một khi trở lại ứng dụng của tôi, nó hoạt động tốt. Những gì đối phó với điều đó?

Cảm ơn bạn đã giúp đỡ !!

+0

Xin chào Vic, Bạn đã có giải pháp cho điều này vì tôi cũng phải đối mặt với cùng một vấn đề với MPMusicPlayerController & AVAudioPlayer. –

+0

Không, tôi đã thực hiện "ducking" nhưng giải pháp này không phải là hành vi mà tôi hoặc người dùng của tôi ... – Vic320

Trả lời

1

Có thể có gì đó liên quan đến danh mục phiên âm thanh mà bạn đã chỉ định. Hãy xem Audio Session Programming Guide để xem bạn đã chọn đúng danh mục chưa.

+0

Tài liệu này không giúp được gì. Điều duy nhất mà tôi có thể làm là thực hiện "ducking" mà tôi đã làm, nhưng đây không phải là những gì tôi, hoặc người dùng của tôi muốn ... – Vic320

+0

Bạn đang sử dụng loại phiên âm thanh nào? – jdmunro

+0

Tôi đang sử dụng: kAudioSessionCategory_MediaDanh mục phát lại. – Vic320

0

Các nút âm lượng ở phía bên điều khiển âm lượng hệ thống và mở rộng âm lượng của âm thanh của ứng dụng.

Tôi đoán nó được coi là điều khiển âm lượng chính.

+0

Tôi không cố gắng ghi đè điều khiển âm lượng nút bên. Tôi đang cố gắng giảm âm lượng của ứng dụng iPod tương ứng với khối lượng của ứng dụng.Tuy nhiên, khi tôi giảm âm lượng của ứng dụng iPod, nó cũng làm giảm âm lượng của ứng dụng của tôi. Tất cả các mức âm lượng đều bằng hoặc thấp hơn thì âm lượng chính được đặt bởi các nút. – Vic320

0

bạn có thể đặt âm lượng cho mẫu cụ thể hoặc âm thanh bằng cách sử dụng của AVItem setVolume

[mục setVolume]

Bạn có thể tạo một AVItem để tham khảo một tập tin âm thanh hiện có trong ứng dụng của bạn hoặc trên iphone. Mã này khá đơn giản và trông giống như thế này ->

AVItem * mục [[AVItem alloc] initWithPath: @ "the file"]; [item setVolume];

btw, điều này sẽ không ảnh hưởng đến phần còn lại của kênh âm thanh (do một số đối tượng AVController khởi tạo) và âm lượng bạn đã đặt trong mã sẽ không hiển thị trên màn hình. nó tại thời gian chạy.

+0

Điều này không hoạt động. Ngay cả khi tôi đặt âm lượng là 100% (1.0), nó vẫn chưa bao giờ cao hơn mức âm lượng của ứng dụng iPod. Tôi không thấy lý do tại sao cài đặt âm lượng iPod sẽ ảnh hưởng đến âm lượng của ứng dụng của tôi. Tất nhiên, tôi mong đợi khối lượng ứng dụng của tôi không vượt quá mức âm lượng chính. Tôi tự hỏi nếu Apple làm cho âm lượng chính giống như âm lượng iPod ... – Vic320

+0

Bạn có đang sử dụng AVAudioPlayer không? – luca590

+0

nếu không bạn có thể muốn xem xét nó. Bởi vì thats trong cùng một API như [setVolume] như vậy có lẽ sẽ làm việc tốt hơn nhiều – luca590

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