Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8eb1c333 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

Define FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY

Feature to express the headtracking used for spatial
audio is low-latency, i.e. below a threshold defined
in the CDD.

Bug: 324291076
Test: atest SpatializerTest#testLowLatencyHeadtrackingFeature
Change-Id: Id420320c5ddbe7c9d841c3730cd836f04b1b1319
parent dc86f285
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12996,6 +12996,7 @@ package android.content.pm {
    field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
    field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
    field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
    field @FlaggedApi("android.media.audio.feature_spatial_audio_headtracking_low_latency") public static final String FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY = "android.hardware.audio.spatial.headtracking.low_latency";
    field public static final String FEATURE_AUTOFILL = "android.software.autofill";
    field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
    field public static final String FEATURE_BACKUP = "android.software.backup";
+13 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.content.pm;

import static android.media.audio.Flags.FLAG_FEATURE_SPATIAL_AUDIO_HEADTRACKING_LOW_LATENCY;

import static com.android.internal.pm.pkg.parsing.ParsingPackageUtils.PARSE_COLLECT_CERTIFICATES;

import android.Manifest;
@@ -3064,6 +3066,17 @@ public abstract class PackageManager {
    @SdkConstant(SdkConstantType.FEATURE)
    public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}
     * which indicates whether head tracking for spatial audio operates with low-latency,
     * as defined by the CDD criteria for the feature.
     *
     */
    @SdkConstant(SdkConstantType.FEATURE)
    @FlaggedApi(FLAG_FEATURE_SPATIAL_AUDIO_HEADTRACKING_LOW_LATENCY)
    public static final String FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY =
            "android.hardware.audio.spatial.headtracking.low_latency";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and
     * {@link #hasSystemFeature}: The device is capable of communicating with
+5 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import static android.media.AudioManager.RINGER_MODE_VIBRATE;
import static android.media.AudioManager.STREAM_SYSTEM;
import static android.media.audio.Flags.autoPublicVolumeApiHardening;
import static android.media.audio.Flags.automaticBtDeviceType;
import static android.media.audio.Flags.featureSpatialAudioHeadtrackingLowLatency;
import static android.media.audio.Flags.focusFreezeTestApi;
import static android.media.audiopolicy.Flags.enableFadeManagerConfiguration;
import static android.os.Process.FIRST_APPLICATION_UID;
@@ -4513,6 +4514,10 @@ public class AudioService extends IAudioService.Stub
        pw.println("\nFun with Flags: ");
        pw.println("\tandroid.media.audio.autoPublicVolumeApiHardening:"
                + autoPublicVolumeApiHardening());
        pw.println("\tandroid.media.audio.Flags.automaticBtDeviceType:"
                + automaticBtDeviceType());
        pw.println("\tandroid.media.audio.featureSpatialAudioHeadtrackingLowLatency:"
                + featureSpatialAudioHeadtrackingLowLatency());
        pw.println("\tandroid.media.audio.focusFreezeTestApi:"
                + focusFreezeTestApi());
        pw.println("\tcom.android.media.audio.bluetoothMacAddressAnonymization:"
+4 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static com.android.media.audio.Flags.dsaOverBtLeAudio;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.media.AudioAttributes;
@@ -1611,6 +1612,9 @@ public class SpatializerHelper {
        pw.println("\tsupports binaural:" + mBinauralSupported + " / transaural:"
                + mTransauralSupported);
        pw.println("\tmSpatOutput:" + mSpatOutput);
        pw.println("\thas FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY:"
                + mAudioService.mContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY));
    }

    private static String spatStateString(int state) {