2011-01-14 2 views
8

J'écris une application iPad qui utilise le moteur de synthèse vocale "Flite" pour annoncer des événements spécifiques. Le moteur Flite utilise une instance AVAudioPlayer pour lire l'audio vocal une fois qu'il est rendu. Pour le plaisir, j'ai décidé d'ajouter quelques contrôles simples à mon application pour permettre à l'utilisateur de contrôler la lecture de l'iPod (suivant, précédent, lecture/pause et volume - les bases) pendant que mon application fonctionne avec MPMusicPlayerController (bien sûr). Le problème que j'ai est que lorsque j'ajuste le volume de l'iPod en utilisant MPMusicPlayerController, tout mon audio est affecté, y compris d'autres effets sonores et l'audio de la parole. Je règle le volume de ces autres lecteurs audio (instances AVAudioPlayer) à 1.0 avant de jouer le son mais il semble que le volume soit toujours plafonné quel que soit le volume du lecteur iPod ...Le niveau du volume de l'iPod affecte le niveau du volume de l'application

Est-ce normal? Et que puis-je faire pour le contourner? Je souhaite que l'audio de mon application soit diffusée au volume total du système, quel que soit le niveau de volume du lecteur iPod. (Exemple: L'utilisateur a réglé le volume du système à 80% du maximum de l'appareil.) Je veux que mon application joue l'audio à 100% de ce 80% tout en permettant à l'utilisateur d'ajuster la lecture audio de l'iPod à 0-100% %.) Remarque: je ne suis pas intéressé par "ducking", mais en réglant le volume de l'iPod à tout moment pendant que mon application est en cours d'exécution (musique de fond). J'ai également le problème, que -parfois- lorsque vous lancez l'application pour la première fois et que vous appuyez sur play sur le lecteur iPod (qui envoie l'appel [player play]), l'iPod ne répond pas. Si j'appuie sur le bouton d'accueil, allez dans l'application iPod et démarrez la lecture puis, une fois de retour dans mon application, cela fonctionne très bien. Quel est le problème avec ça?

Merci d'avance pour toute aide !!

+0

Salut Vic, Avez-vous eu la solution pour cela puisque je suis également confronté au même problème avec MPMusicPlayerController & AVAudioPlayer. –

+0

Non, j'ai implémenté "ducking" mais cette solution n'est pas le comportement que mes utilisateurs ou moi-même ... – Vic320

Répondre

1

Cela peut être lié à la catégorie de session audio que vous avez spécifiée. Consultez le Audio Session Programming Guide pour voir si vous avez choisi la bonne catégorie.

+0

Cette documentation n'a pas aidé. La seule chose que je peux faire est d'implémenter "ducking" ce que j'ai fait, mais ce n'est pas ce que je, ou mes utilisateurs veulent ... – Vic320

+0

Quelle catégorie de session audio utilisez-vous? – jdmunro

+0

J'utilise la catégorie: kAudioSessionCategory_MediaPlayback. – Vic320

0

Les boutons de volume latéraux contrôlent le volume du système et, par extension, le volume des sons de votre application. Je suppose que c'est considéré comme le contrôle de volume principal.

+0

Je n'essaie pas de remplacer le contrôle du volume du bouton latéral. J'essaie de réduire le volume de l'application iPod par rapport au volume de mon application.Cependant, lorsque je baisse le volume de l'application iPod, le volume de mon application est également plus bas. Tous les niveaux de volume sont inférieurs ou égaux au volume principal défini par les boutons. – Vic320

0

vous pouvez régler le volume d'échantillons spécifiques ou des sons en utilisant la setVolume de AVItem

[article setVolume]

Vous pouvez créer un AVItem pour référencer un fichier audio existant dans votre application ou sur l'iPhone. Le code est assez simple et ressemble à ceci ->

AVItem * item [[AVItem alloc] initWithPath: @ "le fichier"]; [item setVolume];

btw, cela n'affectera pas le reste du canal audio (instancié par un objet AVController) et le volume que vous avez défini dans votre code ne sera pas affiché sur votre écran, donc je ne sais pas si vous pouvez changer au moment de l'exécution.

+0

Cela ne fonctionne pas. Même si je règle le volume à 100% (1.0), il n'est jamais plus élevé que le volume de l'application de l'iPod. Je ne vois pas pourquoi le réglage du volume de l'iPod devrait affecter le volume de mon application. Bien sûr, je m'attends à ce que le volume de mon application ne dépasse pas le niveau du volume principal. Je me demande si Apple rend le volume principal identique au volume de l'iPod ... – Vic320

+0

Utilisez-vous un AVAudioPlayer? – luca590

+0

sinon vous pourriez vouloir le considérer. Parce que c'est dans la même API que [setVolume], cela fonctionnera probablement beaucoup mieux. – luca590

Questions connexes