From 388680caf3df25cd3cc2644bc1eb8ed4631b98a8 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Mon, 16 May 2022 22:09:19 +0000 Subject: [PATCH] SpatializerHelper: report head tracking disabled "disconnect" head tracking APIs when headtracking is not supported so UI doesn't attempt to expose HT properties for audio devices. Bug: 226474336 Test: atest android.media.audio.cts.SpatializerTest Change-Id: Ie98da0fec60e9173fd984c3cf4b7ce1bae03f56a --- .../server/audio/SpatializerHelper.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java index 8b8577c8b339a..c61bad41eb4a6 100644 --- a/services/core/java/com/android/server/audio/SpatializerHelper.java +++ b/services/core/java/com/android/server/audio/SpatializerHelper.java @@ -243,6 +243,9 @@ public class SpatializerHelper { } mActualHeadTrackingMode = headTrackingModeTypeToSpatializerInt(spat.getActualHeadTrackingMode()); + } else { + mDesiredHeadTrackingModeWhenEnabled = Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED; + mDesiredHeadTrackingMode = Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED; } byte[] spatModes = spat.getSupportedModes(); @@ -1048,6 +1051,10 @@ public class SpatializerHelper { } synchronized void setHeadTrackerEnabled(boolean enabled, @NonNull AudioDeviceAttributes ada) { + if (!mIsHeadTrackingSupported) { + Log.v(TAG, "no headtracking support, ignoring setHeadTrackerEnabled to " + enabled + + " for " + ada); + } final int deviceType = ada.getType(); final boolean wireless = isWireless(deviceType); @@ -1075,6 +1082,10 @@ public class SpatializerHelper { } synchronized boolean hasHeadTracker(@NonNull AudioDeviceAttributes ada) { + if (!mIsHeadTrackingSupported) { + Log.v(TAG, "no headtracking support, hasHeadTracker always false for " + ada); + return false; + } final int deviceType = ada.getType(); final boolean wireless = isWireless(deviceType); @@ -1094,6 +1105,10 @@ public class SpatializerHelper { * @return true if the head tracker is enabled, false otherwise or if device not found */ synchronized boolean setHasHeadTracker(@NonNull AudioDeviceAttributes ada) { + if (!mIsHeadTrackingSupported) { + Log.v(TAG, "no headtracking support, setHasHeadTracker always false for " + ada); + return false; + } final int deviceType = ada.getType(); final boolean wireless = isWireless(deviceType); @@ -1113,6 +1128,10 @@ public class SpatializerHelper { } synchronized boolean isHeadTrackerEnabled(@NonNull AudioDeviceAttributes ada) { + if (!mIsHeadTrackingSupported) { + Log.v(TAG, "no headtracking support, isHeadTrackerEnabled always false for " + ada); + return false; + } final int deviceType = ada.getType(); final boolean wireless = isWireless(deviceType);