2011-01-14 11 views
8

Sto scrivendo un'app per iPad che utilizza il motore di sintesi vocale "Flite" per annunciare eventi specifici. Il motore Flite utilizza un'istanza di AVAudioPlayer per riprodurre l'audio vocale una volta eseguito il rendering. Per divertimento, ho deciso di aggiungere alcuni semplici controlli alla mia app per consentire all'utente di controllare la riproduzione dell'iPod (next, prev, play/pause e volume - le basi) mentre la mia app è in esecuzione usando MPMusicPlayerController (ovviamente).Livello volume iPod influisce sul livello del volume dell'app

Il problema che sto avendo è che quando regolo il volume dell'iPod usando MPMusicPlayerController, tutto il mio audio è interessato, inclusi altri effetti sonori e l'audio della voce. Ho impostato il volume di questi altri lettori audio (istanze di AVAudioPlayer) a 1.0 prima di riprodurre il suono ma sembra che il volume sia sempre limitato a qualsiasi volume del lettore iPod sia impostato su ...

È normale? E cosa posso fare per aggirarlo? Voglio che l'audio della mia app suoni a pieno volume del sistema indipendentemente dal livello del volume del lettore iPod. (Esempio: l'utente aveva impostato il volume del sistema all'80% del massimo del dispositivo. Desidero che l'app riproduca l'audio al 100% di tale 80% pur consentendo all'utente di regolare la riproduzione audio dell'iPod allo 0-100% di quella 80 %.) Nota: non sono interessato a "ducking", ma ad abbassare il volume dell'iPod in qualsiasi momento mentre la mia app è in esecuzione (musica di sottofondo).

Ho anche il problema, che - a volte - quando si avvia l'app per la prima volta e si preme play sul lettore iPod (che invia la chiamata [play player]), l'iPod non risponde. Se premo il pulsante Home, vai all'app iPod e avvia la riproduzione, quindi, una volta tornato alla mia app, funziona perfettamente. Quale accordo?

Grazie in anticipo per qualsiasi aiuto !!

+0

Hi Vic, Hai ottenuto la soluzione per questo poiché anch'io sto affrontando lo stesso problema con MPMusicPlayerController e AVAudioPlayer. –

+0

No, ho implementato "ducking" ma questa soluzione non è il comportamento che io oi miei utenti cosa ... – Vic320

risposta

1

Potrebbe essere qualcosa a che fare con la categoria di sessione audio che hai specificato. Controlla lo Audio Session Programming Guide per vedere se hai scelto la categoria giusta.

+0

Questa documentazione non è stata di aiuto. L'unica cosa che posso fare è implementare "ducking" che ho fatto, ma questo non è quello che io, oi miei utenti vogliono ... – Vic320

+0

Quale categoria di sessione audio stai usando? – jdmunro

+0

Sto usando la categoria: kAudioSessionCategory_MediaPlayback. – Vic320

0

I pulsanti del volume sul lato controllano il volume del sistema e, per estensione, il volume dei suoni della vostra app.

Suppongo che sia considerato il controllo volume Master.

+0

Non sto cercando di ignorare il controllo del volume del pulsante laterale. Sto provando ad abbassare il volume dell'app iPod rispetto al volume della mia app.Tuttavia, quando abbasso il volume dell'app per iPod, diminuisci anche il volume della mia app. Tutti i livelli di volume sono pari o inferiori al volume principale impostato dai pulsanti. – Vic320

0

è possibile impostare il volume per i campioni specifici o suoni usando del AVItem setVolume

[voce setVolume]

È possibile creare un AVItem per fare riferimento a un file audio esistente nell'applicazione o su iPhone. Il codice è piuttosto semplice e assomiglia a questo ->

AVItem * elemento [[allocazione AVItem] initWithPath: @ "il file"]; [item setVolume];

btw, questo non influirà sul resto del canale audio (creato da un tipo di oggetto AVController) e il volume impostato nel codice non verrà visualizzato sullo schermo, quindi non sono sicuro che sia possibile modificare a tempo di esecuzione.

+0

Questo non funziona. Anche se imposto il volume su 100% (1.0), non è mai superiore a quello impostato sul volume dell'app iPod. Non vedo perché l'impostazione del volume dell'iPod possa influire sul volume della mia app. Naturalmente, mi aspetto che il volume della mia app non superi il livello del volume principale. Mi chiedo se Apple rende il volume principale uguale al volume dell'iPod ... – Vic320

+0

Stai utilizzando un AVAudioPlayer? – luca590

+0

se non si potrebbe voler considerarlo. Perché questo è nella stessa API di [setVolume], quindi probabilmente funzionerà molto meglio – luca590