diff options
| author | 2022-03-17 13:54:42 +0000 | |
|---|---|---|
| committer | 2022-03-17 13:54:42 +0000 | |
| commit | 0c938e3f89fa095a4869585ef48d26c401140fc4 (patch) | |
| tree | ba37a44f8b82fd7aea4b467d8b1c01052ca80603 | |
| parent | a49b347f573f6be04aa34f53f8ff4f60c0124a7b (diff) | |
| parent | 511336f1b96084efd0dda45338ae6afdb13c9bb0 (diff) | |
[automerge] audio: SpatializerHelper: fix exceptions when head tracking is not supported 2p: 511336f1b9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17238104
Bug: 224623509
Change-Id: I0406c2f15c625130922e02e1111f2ad78f0ac7b7
Merged-In: I3be6b3f05c9542404379a07f4fc734e45a75152a
| -rw-r--r-- | services/core/java/com/android/server/audio/SpatializerHelper.java | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java index 399ca0326313..d4dc288fbece 100644 --- a/services/core/java/com/android/server/audio/SpatializerHelper.java +++ b/services/core/java/com/android/server/audio/SpatializerHelper.java @@ -90,6 +90,7 @@ public class SpatializerHelper { private @Nullable SpatializerCallback mSpatCallback; private @Nullable SpatializerHeadTrackingCallback mSpatHeadTrackingCallback; private @Nullable HelperDynamicSensorCallback mDynSensorCallback; + private boolean mIsHeadTrackingSupported = false; // default attributes and format that determine basic availability of spatialization private static final AudioAttributes DEFAULT_ATTRIBUTES = new AudioAttributes.Builder() @@ -497,8 +498,9 @@ public class SpatializerHelper { mSpat = AudioSystem.getSpatializer(mSpatCallback); try { mSpat.setLevel((byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL); + mIsHeadTrackingSupported = mSpat.isHeadTrackingSupported(); //TODO: register heatracking callback only when sensors are registered - if (mSpat.isHeadTrackingSupported()) { + if (mIsHeadTrackingSupported) { mSpat.registerHeadTrackingCallback(mSpatHeadTrackingCallback); } } catch (RemoteException e) { @@ -516,11 +518,14 @@ public class SpatializerHelper { if (mSpat != null) { mSpatCallback = null; try { - mSpat.registerHeadTrackingCallback(null); + if (mIsHeadTrackingSupported) { + mSpat.registerHeadTrackingCallback(null); + } mSpat.release(); } catch (RemoteException e) { Log.e(TAG, "Can't set release spatializer cleanly", e); } + mIsHeadTrackingSupported = false; mSpat = null; } } @@ -687,7 +692,6 @@ public class SpatializerHelper { mDesiredHeadTrackingMode = mode; dispatchDesiredHeadTrackingMode(mode); } - } catch (RemoteException e) { Log.e(TAG, "Error calling setDesiredHeadTrackingMode", e); } @@ -708,7 +712,7 @@ public class SpatializerHelper { } break; } - return true; + return mIsHeadTrackingSupported; } private void dispatchActualHeadTrackingMode(int newMode) { @@ -882,13 +886,8 @@ public class SpatializerHelper { Log.e(TAG, "not " + action + " sensors, null spatializer"); return; } - try { - if (!mSpat.isHeadTrackingSupported()) { - Log.e(TAG, "not " + action + " sensors, spatializer doesn't support headtracking"); - return; - } - } catch (RemoteException e) { - Log.e(TAG, "not " + action + " sensors, error querying headtracking", e); + if (!mIsHeadTrackingSupported) { + Log.e(TAG, "not " + action + " sensors, spatializer doesn't support headtracking"); return; } int headHandle = -1; |