2011-01-14 20 views
8

Piszę aplikację na iPada, która wykorzystuje mechanizm "tekstowy na mowę" "Flite" do zgłaszania określonych zdarzeń. Silnik Flite wykorzystuje instancję AVAudioPlayer do odtwarzania dźwięku mowy po jego renderowaniu. Dla zabawy postanowiłem dodać kilka prostych kontrolek do mojej aplikacji, aby umożliwić użytkownikowi sterowanie odtwarzaniem iPoda (następny, poprzedni, odtwarzanie/pauza i głośność - podstawy), podczas gdy moja aplikacja działa przy użyciu MPMusicPlayerController (oczywiście).Poziom głośności iPoda wpływa na poziom głośności aplikacji

Problem polega na tym, że gdy reguluję głośność iPoda za pomocą MPMusicPlayerController, wpływa to na wszystkie moje audio, w tym inne efekty dźwiękowe i dźwięk mowy. Ustawiłem głośność dla innych odtwarzaczy audio (instancji AVAudioPlayer) na 1.0 przed odtworzeniem dźwięku, ale wydaje się, że głośność jest zawsze ograniczona do wartości ustawionej dla głośności iPoda ...

Czy to normalne? I co mogę zrobić, aby ominąć to? Chcę, aby dźwięk mojej aplikacji był odtwarzany przy pełnej głośności systemu, niezależnie od poziomu głośności odtwarzacza iPod. (Przykład: użytkownik ustawił głośność systemu na 80% maksimum urządzenia Chcę, aby moja aplikacja odtwarzała dźwięk w 100% z tego 80%, jednocześnie umożliwiając użytkownikowi dostosowanie odtwarzania dźwięku iPod do 0-100% z tego 80 %.) Uwaga: Nie jestem zainteresowany "kaczeniem", ale ustawiam obniżenie poziomu głośności iPoda przez cały czas, gdy moja aplikacja jest uruchomiona (muzyka w tle).

Mam również problem, że - czasami - po pierwszym uruchomieniu aplikacji i naciśnięciu przycisku odtwarzania na odtwarzaczu iPod (który wysyła połączenie [odtwarzane przez odtwarzacz]) iPod nie odpowiada. Jeśli naciśniesz przycisk strony głównej, wejdź do aplikacji iPod i rozpocznij odtwarzanie, a po powrocie do mojej aplikacji działa dobrze. Co z tym wspólnego?

Z góry dziękuję za pomoc!

+0

Witam Vic, Czy masz na to rozwiązanie, ponieważ mam do czynienia z tym samym problemem z MPMusicPlayerController i AVAudioPlayer. –

+0

Nie, wprowadziłem "kaczenie", ale to rozwiązanie nie jest zachowanie, które ja lub moi użytkownicy, co ... – Vic320

Odpowiedz

1

Może to mieć coś wspólnego z podaną kategorią sesji audio. Sprawdź numer Audio Session Programming Guide, aby sprawdzić, czy wybrałeś właściwą kategorię.

+0

Ta dokumentacja nie pomogła. Jedyne, co mogę zrobić, to zaimplementować "kaczki", które zrobiłem, ale to nie jest to, czego ja lub moi użytkownicy chcą ... – Vic320

+0

Z jakiej kategorii sesji audio korzystasz? – jdmunro

+0

Używam kategorii: kAudioSessionCategory_MediaPlayback. – Vic320

0

Przyciski głośności z boku sterują głośnością systemu, a po nim głośnością dźwięków aplikacji.

Domyślam się, że to jest uważane za główną regulację głośności.

+0

Nie próbuję przesłonić regulacji głośności przycisku bocznego. Próbuję zmniejszyć głośność aplikacji iPoda w stosunku do głośności mojej aplikacji.Jednak po obniżeniu głośności aplikacji na iPodzie zmniejsza się też głośność mojej aplikacji. Wszystkie poziomy głośności są niższe lub niższe niż głośność ustawiona za pomocą przycisków. – Vic320

0

można ustawić głośność dla poszczególnych próbek lub dźwięków za pomocą tego AVItem za setVolume

[element setVolume]

Można utworzyć AVItem odwołać istniejącego pliku dźwiękowego w aplikacji lub na iPhone. Kod jest dość prosty i wygląda tak: ->

AVItem * pozycja [[przydzielanie AVItem] initWithPath: @ "plik"]; [pozycja setVolume];

btw, nie wpłynie to na resztę kanału audio (utworzony przez jakiś obiekt AVController), a głośność ustawiona w kodzie nie będzie wyświetlana na ekranie, więc nie jestem pewien, czy możesz zmienić w czasie wykonywania.

+0

To nie działa. Nawet jeśli ustawię głośność na 100% (1,0), nigdy nie będzie ona wyższa niż objętość aplikacji na iPodzie. Nie widzę powodu, dla którego ustawienie głośności iPoda powinno wpłynąć na głośność mojej aplikacji. Oczywiście oczekuję, że poziom głośności mojej aplikacji nie przekroczy głównego poziomu głośności. Zastanawiam się, czy Apple sprawia, że ​​głośność master jest taka sama jak w iPodzie ... – Vic320

+0

Czy używasz AVAudioPlayer? – luca590

+0

jeśli nie, możesz to rozważyć. Ponieważ jest to w tym samym API co [setVolume], więc prawdopodobnie będzie działało znacznie lepiej – luca590

Powiązane problemy