Sto lavorando a un'app Podcast. Questo riproduce l'audio usando il tipo di sessione AVAudioSessionCategoryPlayback
. Questo fa quasi tutto ciò che voglio che faccia. Mette in pausa altri brani musicali, viene interrotto quando arriva una chiamata e generalmente funziona esattamente come voglio.Rileva quando AVAudioSession sta "Ducked"
Con un'eccezione. Quando viene riprodotto audio con priorità più alta (ad esempio, quando si esegue un'applicazione di navigazione turn-by-turn), l'audio nella mia applicazione viene ridotto in volume ma continua a funzionare. Questo crea una terribile fusione delle due voci che non è desiderata. Preferisco invece che l'audio della mia applicazione si interrompa durante il suono sovra-riprodotto, quindi riprendo una volta terminato.
Ho provato a cambiare le diverse proprietà di AVAudioSession come AVAudioSessionCategoryOptionMixWithOthers
, ma questi cambiano solo il modo in cui i suoni con priorità più bassa si fondono con la mia applicazione. Non cambiano il modo in cui il mio si fonde con i suoni con priorità più alta. Ho anche provato ad osservare la proprietà otherAudioPlaying
dello sharedSession
, ma questo non ha comportato alcun cambiamento quando questi brevi clip sono stati sovrapposti.
C'è un modo per rilevare quando l'audio nella mia app viene ridotto per poterlo invece mettere in pausa? Oppure, in alternativa, per evitare che l'audio della mia app venga schivato in modo che possa trattare questi altri suoni come interruzioni?
Grazie.
Hai provato a utilizzare 'kAudioSessionBeginInterruption' e' kAudioSessionEndInterruption'? – iwasrobbed
Sì, ma il ducking overlay non conta come una "interruzione" per quanto riguarda AVAudioSession. Quindi queste callback/notifiche non vengono attivate. –
Si consiglia di archiviare un radar con Apple a tale proposito, se si ritiene che dovrebbe essere. A mio parere, sembra logico che dovrebbe essere considerata un'interruzione della sessione audio. – iwasrobbed