Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

l'audio

Icône Android Audio HAL

La couche d'abstraction matérielle (HAL) audio d'Android connecte les API de cadre spécifiques à l'audio de niveau supérieur dans android.media au pilote audio et au matériel sous-jacents. Cette section comprend des instructions de mise en œuvre et des conseils pour améliorer les performances.

L'architecture audio Android définit la manière dont la fonctionnalité audio est mise en œuvre et pointe vers le code source pertinent impliqué dans la mise en œuvre.

Architecture audio

Figure 1. Architecture audio Android

Cadre d'application
Le cadre d'application comprend le code de l'application, qui utilise les API android.media pour interagir avec le matériel audio. En interne, ce code appelle les classes de colle JNI correspondantes pour accéder au code natif qui interagit avec le matériel audio.
JNI
Le code JNI associé à android.media appelle le code natif de niveau inférieur pour accéder au matériel audio. JNI se trouve dans frameworks/base/core/jni/ et frameworks/base/media/jni .
Cadre natif
Le framework natif fournit un équivalent natif du package android.media , appelant les proxys Binder IPC pour accéder aux services audio spécifiques du serveur multimédia. Le code du framework natif se trouve dans frameworks/av/media/libmedia .
Classeur IPC
Les proxys IPC Binder facilitent la communication au-delà des limites du processus. Les proxies sont situés dans les frameworks/av/media/libmedia et commencent par la lettre «I».
Serveur multimédia
Le serveur multimédia contient des services audio, qui sont le code réel qui interagit avec vos implémentations HAL. Le serveur multimédia est situé dans frameworks/av/services/audioflinger .
HAL
Le HAL définit l'interface standard à laquelle les services audio appellent et que vous devez implémenter pour que votre matériel audio fonctionne correctement. Les interfaces audio HAL se trouvent dans hardware/libhardware/include/hardware . Pour plus de détails, voir audio.h .
Pilote du noyau
Le pilote audio interagit avec votre matériel et l'implémentation HAL. Vous pouvez utiliser Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) ou un pilote personnalisé (HAL est indépendant du pilote).

Remarque : si vous utilisez ALSA, nous recommandons external/tinyalsa pour la partie utilisateur du pilote en raison de sa licence compatible (la bibliothèque en mode utilisateur standard est sous licence GPL).

Audio natif Android basé sur Open SL ES (non illustré)
Cette API est exposée dans le cadre d' Android NDK et est au même niveau d'architecture que android.media .