From f18bc46b54a0f042a4d29e3f02507fb29941082f Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Tue, 10 May 2022 12:58:05 -0700 Subject: [PATCH] SpatializerHelper: Remove custom sensor handling Created for sc-v2 dev use, no longer needed in T. Use Sensor.TYPE_HEAD_TRACKER instead. Also, prefer to match head tracker to audio device uuid. Test: head tracking BT buds works fine Bug: 231977974 Bug: 232131275 Change-Id: Icef3ec27a513e31e5f49c1e8adf72d375232dd5f --- .../server/audio/SpatializerHelper.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java index 4ac611bb7e2ad..0b9cb19776438 100644 --- a/services/core/java/com/android/server/audio/SpatializerHelper.java +++ b/services/core/java/com/android/server/audio/SpatializerHelper.java @@ -70,12 +70,6 @@ public class SpatializerHelper { private @Nullable SensorManager mSensorManager; //------------------------------------------------------------ - /** head tracker sensor name */ - // TODO: replace with generic head tracker sensor name. - // the current implementation refers to the "google" namespace but will be replaced - // by an android name at the next API level revision, it is not Google-specific. - private static final String HEADTRACKER_SENSOR = - "com.google.hardware.sensor.hid_dynamic.headtracker"; private static final SparseIntArray SPAT_MODE_FOR_DEVICE_TYPE = new SparseIntArray(15) { { @@ -1522,24 +1516,24 @@ public class SpatializerHelper { private int getHeadSensorHandleUpdateTracker() { int headHandle = -1; UUID routingDeviceUuid = mAudioService.getDeviceSensorUuid(ROUTING_DEVICES[0]); - List sensors = new ArrayList(0); - sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_HEAD_TRACKER)); - sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_DEVICE_PRIVATE_BASE)); + // We limit only to Sensor.TYPE_HEAD_TRACKER here to avoid confusion + // with gaming sensors. (Note that Sensor.TYPE_ROTATION_VECTOR + // and Sensor.TYPE_GAME_ROTATION_VECTOR are supported internally by + // SensorPoseProvider). + // Note: this is a dynamic sensor list right now. + List sensors = mSensorManager.getDynamicSensorList(Sensor.TYPE_HEAD_TRACKER); for (Sensor sensor : sensors) { - if (sensor.getType() == Sensor.TYPE_HEAD_TRACKER - || sensor.getStringType().equals(HEADTRACKER_SENSOR)) { - UUID uuid = sensor.getUuid(); - if (uuid.equals(routingDeviceUuid)) { - headHandle = sensor.getHandle(); - if (!setHasHeadTracker(ROUTING_DEVICES[0])) { - headHandle = -1; - } - break; - } - if (uuid.equals(UuidUtils.STANDALONE_UUID)) { - headHandle = sensor.getHandle(); - break; + final UUID uuid = sensor.getUuid(); + if (uuid.equals(routingDeviceUuid)) { + headHandle = sensor.getHandle(); + if (!setHasHeadTracker(ROUTING_DEVICES[0])) { + headHandle = -1; } + break; + } + if (uuid.equals(UuidUtils.STANDALONE_UUID)) { + headHandle = sensor.getHandle(); + // we do not break, perhaps we find a head tracker on device. } } return headHandle;