Android 13 est compatible avec l'audio spatial grâce à des API qui permettent aux développeurs d'applications de déterminer si la combinaison actuelle d'implémentation du téléphone, du casque connecté et des paramètres utilisateur permet la lecture de contenu audio multicanal de manière immersive.
Les OEM peuvent fournir un effet audio spatialiseur avec prise en charge du suivi des mouvements de la tête avec le niveau de performances et la latence requis, en utilisant la nouvelle architecture de pipeline audio et l'intégration du framework de capteurs. Le protocole HID spécifie comment associer un appareil de suivi de la tête via Bluetooth et le rendre disponible en tant qu'appareil HID via le framework de capteur Android. Pour en savoir plus sur les exigences et la validation, consultez Son spatial et suivi de la tête.
Les consignes de cette page s'appliquent à une solution audio spatial qui adopte les nouvelles API et l'architecture audio avec un téléphone Android équipé d'Android 13 ou version ultérieure, et des casques compatibles avec un capteur de suivi de la tête.
Consignes pour l'implémentation des modes audio spatial dynamique et statique
Le son spatial statique ne nécessite pas de suivi de la tête. Aucune fonctionnalité spécifique n'est donc requise dans le casque. Tous les casques filaires et sans fil sont compatibles avec le son spatial statique.
Implémentation de l'API
Les OEM DOIVENT implémenter la classe Spatializer
introduite dans Android 12. L'implémentation doit réussir les tests CTS introduits pour la classe Spatializer
.
Une implémentation robuste de l'API permet aux développeurs d'applications, en particulier les services de streaming multimédia, de s'appuyer sur un comportement cohérent dans l'écosystème et de choisir le meilleur contenu en fonction des capacités de l'appareil, du contexte de rendu actuel et des choix de l'utilisateur.
Interface utilisateur
Après avoir implémenté la classe Spatializer
, vérifiez que votre UI présente le comportement suivant :
Lorsque le casque compatible avec le son spatial est associé, les paramètres de l'appareil Bluetooth pour ce casque affichent un bouton bascule Son spatial :
Figure 1 : Paramètre du son spatial.
Les paramètres sont disponibles lorsque le casque est déconnecté.
L'état par défaut du son spatial après le premier appairage du casque est activé.
L'état sélectionné par l'utilisateur (activé ou désactivé) est conservé même si le téléphone est redémarré ou si le casque est dissocié puis associé.
Comportement fonctionnel
Formats audio
Les formats audio suivants DOIVENT être rendus par l'effet spatialiseur lorsque le son spatial est activé et que l'appareil de rendu est un casque filaire ou Bluetooth :
- AAC, 5.1 canaux
- PCM brut, 5.1 canaux
Pour une meilleure expérience utilisateur, nous vous recommandons vivement de prendre en charge les formats/configurations de canaux suivants :
- Dolby Digital Plus
- Canaux 5.1.2, 7.1, 7.1.2, 7.1.4
Lecture de contenu stéréo
Le contenu stéréo ne doit pas être rendu par le biais du moteur d'effets de spatialisation, même si le son spatial est activé. Si une implémentation permet la spatialisation du contenu stéréo, elle doit présenter une UI personnalisée qui permet à l'utilisateur d'activer ou de désactiver facilement cette fonctionnalité. Lorsque l'audio spatial est activé, il doit être possible de passer de la lecture de contenu multicanal spatialisé à celle de contenu stéréo non spatialisé sans nécessiter de modification des paramètres utilisateur ni de reconnexion ou de reconfiguration du casque. La transition entre le contenu audio spatialisé et le contenu stéréo doit se faire avec un minimum de perturbations audio.
Transitions de cas d'utilisation et simultanéité
Gérez les cas d'utilisation spéciaux comme suit :
- Les notifications doivent être mixées avec le contenu audio spatial de la même manière qu'avec le contenu audio non spatial.
- Les sonneries doivent pouvoir être mixées avec du contenu audio spatial. Toutefois, par défaut, le mécanisme de priorité audio met en pause le contenu audio spatial lorsqu'une sonnerie retentit.
- Lorsque l'utilisateur répond à un appel téléphonique ou à une visioconférence, ou en passe un, la lecture de l'audio spatial doit se mettre en pause. La lecture audio spatial doit reprendre avec les mêmes paramètres audio spatial lorsque l'appel se termine. La reconfiguration d'un chemin audio pour passer du mode audio spatial au mode conversationnel doit se faire rapidement et de manière fluide afin de ne pas affecter l'expérience d'appel.
Rendu sur les enceintes
La prise en charge de la spatialisation audio sur les enceintes, ou mode transaural, n'est pas requise.
Consignes pour l'implémentation du suivi de la tête
Cette section se concentre sur le son spatial dynamique, qui nécessite un casque spécifique.
Interface utilisateur
Une fois le casque compatible avec le son spatial implémenté et associé, vérifiez que votre UI présente le comportement suivant :
Dans les paramètres de l'appareil Bluetooth, lorsque le paramètre Son spatial du casque est activé, un paramètre Suivi de la tête s'affiche sous Son spatial :
Figure 2. Paramètre du son spatial et du suivi de la tête.
Le paramètre de suivi de la tête n'est PAS visible lorsque le son spatial est désactivé.
L'état par défaut du suivi de la tête après le premier appairage du casque est activé.
L'état sélectionné par l'utilisateur (activé ou désactivé) doit persister après le redémarrage du téléphone ou le déjumelage et le jumelage du casque.
Comportement fonctionnel
Rapports sur la pose de la tête
- Les informations sur la pose de la tête, en coordonnées x, y et z, envoyées du casque à l'appareil Android doivent refléter les mouvements de la tête de l'utilisateur rapidement et précisément.
- Le signalement de la pose de la tête via la connexion Bluetooth doit suivre le protocole défini sur HID.
- Le casque ne doit envoyer les informations de suivi de la tête au téléphone Android que lorsque l'utilisateur active l'option Suivi de la tête dans l'interface utilisateur des paramètres de l'appareil Bluetooth.
Performances
Tardive
La latence du suivi de la tête correspond au temps qui s'écoule entre le mouvement de la tête capturé par l'unité de mesure inertielle (IMU) et la détection par les transducteurs du casque du changement de son causé par ce mouvement. La latence du suivi de la tête ne doit pas dépasser 150 ms.
Fréquence de signalement de la pose de la tête
Lorsque le suivi de la tête est actif, le casque doit signaler la pose de la tête à une fréquence périodique recommandée d'environ 20 ms. Pour éviter de déclencher la logique de détection d'entrée obsolète sur le téléphone lors d'un jitter de transmission du Bluetooth, le délai maximal entre deux mises à jour ne doit pas dépasser 40 ms.
Optimisation de l'alimentation
Pour optimiser la consommation d'énergie, nous recommandons que l'implémentation utilise les mécanismes de changement de codec Bluetooth et de sélection du mode de latence fournis par les interfaces HAL audio et HAL audio Bluetooth.
Les implémentations AOSP du framework audio et de la pile Bluetooth prennent déjà en charge les signaux permettant de contrôler le changement de codec. Si l'implémentation de l'OEM utilise le HAL audio principal pour l'audio Bluetooth, connu sous le nom de mode de déchargement du codec, l'OEM doit s'assurer que le HAL audio relaie ces signaux entre le HAL audio et la pile Bluetooth.
Changement de codec
Lorsque le son spatial dynamique et le suivi de la tête sont activés, utilisez un codec à faible latence, tel que Opus. Lorsque vous lisez du contenu audio non spatial, utilisez un codec basse consommation tel que Advanced Audio Coding (AAC).
Suivez ces règles lors du changement de codec :
- Ne suivez que l'activité sur les flux de sortie HAL audio suivants :
- Sortie du spatialiseur dédiée
- Flux spécifiques aux contenus multimédias, tels que la lecture avec mise en mémoire tampon profonde ou décompression
Lorsque tous les flux concernés sont inactifs et que le flux du spatialiseur démarre, lancez le flux Bluetooth avec
isLowLatency
défini surtrue
pour spécifier un codec à faible latence.Lorsque tous les flux pertinents sont inactifs et qu'un flux multimédia démarre, démarrez le flux Bluetooth avec
isLowLatency
défini surfalse
pour spécifier un codec basse consommation.Si un flux multimédia est actif et que le flux du spatialiseur démarre, redémarrez le flux Bluetooth avec
isLowLatency
défini surtrue
.
Du côté du casque, celui-ci doit prendre en charge les décodeurs à faible latence et à faible consommation d'énergie, et implémenter le protocole standard de sélection des codecs.
Ajustement du mode de latence
L'ajustement du mode de latence se produit lorsque le codec à faible latence est sélectionné.
Selon que le suivi de la tête est activé ou désactivé, l'ajustement du mode de latence utilise les mécanismes disponibles pour réduire ou augmenter la latence afin d'obtenir le meilleur compromis entre latence, puissance et qualité audio. Lorsque le son spatial et le suivi de la tête sont activés, le mode à faible latence est sélectionné. Lorsque le son spatial est activé et le suivi de la tête désactivé, le mode sans latence est sélectionné. Le réglage de la latence permet de réaliser d'importantes économies d'énergie et d'améliorer la robustesse de la liaison audio Bluetooth lorsque seul le son spatial statique est demandé. Le mécanisme d'ajustement de la latence le plus courant consiste à réduire ou à étendre la taille de la mémoire tampon de gigue dans le casque Bluetooth.
Consultez Suivi de la tête avec LE Audio pour savoir comment ajuster le mode de latence pour LE Audio.