Um die Systemstabilität und die Möglichkeit, in Energiesparmodi wie „Suspend-to-RAM“ (S2R) oder „Suspend-to-Disk“ (S2D) zu wechseln, zu gewährleisten, ist es wichtig, dass Audioressourcen während der Energieübergänge richtig verwaltet werden.
Apps geben Audio-Ein- oder Ausgabestreams möglicherweise nicht immer frei, wenn das System einen Ruhezustand einleitet. Aktive Audiostreams können verhindern, dass das Audiosubsystem und die zugrunde liegende Hardware in den Leerlaufmodus wechseln. Dadurch kann das System-on-a-Chip (SoC) nicht in den Tiefschlafmodus wechseln. Dies führt zu fehlgeschlagenen Versuchen, den Ruhemodus zu aktivieren, und zu einem erhöhten Stromverbrauch.
OEMs müssen in ihrer Implementierung der Audio-Hardware-Abstraktionsschicht (HAL) einen robusten Fallback-Mechanismus implementieren, um aktive Audio-Streams während des Übergangs in den Ruhezustand zu verarbeiten. Dies ist unabhängig vom App-Verhalten für die Stabilität der Plattform unerlässlich.
Apps sollten Audioressourcen richtig verwalten, aber das System kann sich bei grundlegenden Übergängen des Energiestatus nicht darauf verlassen. Das Audio-HAL ist die geeignete Ebene, um die Deaktivierung von Ressourcen zu erzwingen, damit das System in den Ruhezustand wechseln kann. Wir empfehlen diesen Ansatz für ein robustes Energiemanagement.
Energiesparmodus implementieren
So implementieren Sie eine robuste Energieverwaltung im Audio-HAL:
Änderungen des Systembetriebszustands erkennen, insbesondere den Übergang in den Ruhezustand.
Wenn das System sich auf das Anhalten vorbereitet, greifen Sie ein, falls noch Audiostreams (sowohl Ein- als auch Ausgabestreams) aktiv sind:
- Hardware-Ausgabestreams freigeben und eingehende Daten aus dem Audio-Framework verwerfen.
- Hardware-Eingabestreams freigeben und stummes Audio an das Framework senden.
Diese Aktion auf HAL-Ebene sorgt dafür, dass die Audiohardware in den Leerlauf versetzt werden kann, sodass das System erfolgreich in den Ruhezustand versetzt werden kann, auch wenn eine App ihre Audioressourcen nicht freigegeben hat.
Wenn das System aus dem Ruhezustand reaktiviert wird, stellen Sie den aktiven Zustand des Audio-Subsystems wieder her. Dabei werden alle zuvor stummgeschalteten Ausgabestreams wieder aktiviert und Eingabestreams reaktiviert, sodass Apps die Audioausgabe und ‑aufnahme fortsetzen können.
Auswirkungen auf Apps
Die HAL-Ebenenverwaltung von Audioressourcen während des Anhaltens wirkt sich auf folgende Weise auf Apps aus:
- Transparenter Ruhezustand:Bei Apps, die ein Mikrofon verwenden, ist der Ruhezustand des Systems (Wechsel in den S2D- oder S2R-Zustand) transparent.
- Stummschalten von Audio während des Übergangs:Nachdem der Übergang in den inaktiven Zustand eingeleitet wurde, werden aktive Streams auf der HAL-Ebene stummgeschaltet. Die App wird weiterhin ausgeführt, empfängt aber während des Suspend-Vorgangs nur stummgeschaltetes Audio.
- Automatisches Fortsetzen:Wenn das System fortgesetzt wird, beginnt die App automatisch wieder mit dem Empfangen oder Senden von Audio-Echtzeitdaten, ohne dass Ressourcen neu angefordert oder Wiederherstellungsaktionen ausgeführt werden müssen.