Merge "SpatializerHelper: fix setting desired head tracking mode" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
92edb7a1b6
@@ -1024,9 +1024,9 @@ public class SpatializerHelper {
|
|||||||
mDesiredHeadTrackingMode = mode;
|
mDesiredHeadTrackingMode = mode;
|
||||||
dispatchDesiredHeadTrackingMode(mode);
|
dispatchDesiredHeadTrackingMode(mode);
|
||||||
}
|
}
|
||||||
if (mode != headTrackingModeTypeToSpatializerInt(mSpat.getActualHeadTrackingMode())) {
|
Log.i(TAG, "setDesiredHeadTrackingMode("
|
||||||
mSpat.setDesiredHeadTrackingMode(spatializerIntToHeadTrackingModeType(mode));
|
+ Spatializer.headtrackingModeToString(mode) + ")");
|
||||||
}
|
mSpat.setDesiredHeadTrackingMode(spatializerIntToHeadTrackingModeType(mode));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Error calling setDesiredHeadTrackingMode", e);
|
Log.e(TAG, "Error calling setDesiredHeadTrackingMode", e);
|
||||||
}
|
}
|
||||||
@@ -1340,32 +1340,14 @@ public class SpatializerHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// initialize sensor handles
|
// initialize sensor handles
|
||||||
UUID routingDeviceUuid = mAudioService.getDeviceSensorUuid(ROUTING_DEVICES[0]);
|
// TODO check risk of race condition for updating the association of a head tracker
|
||||||
List<Sensor> sensors = new ArrayList<Sensor>(0);
|
// and an audio device:
|
||||||
sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_HEAD_TRACKER));
|
// does this happen before routing is updated?
|
||||||
sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_DEVICE_PRIVATE_BASE));
|
// avoid by supporting adding device here AND in onRoutingUpdated()
|
||||||
for (Sensor sensor : sensors) {
|
headHandle = getHeadSensorHandleUpdateTracker();
|
||||||
if (sensor.getType() == Sensor.TYPE_HEAD_TRACKER
|
Log.i(TAG, "head tracker sensor handle initialized to " + headHandle);
|
||||||
|| sensor.getStringType().equals(HEADTRACKER_SENSOR)) {
|
screenHandle = getScreenSensorHandle();
|
||||||
UUID uuid = sensor.getUuid();
|
Log.i(TAG, "found screen sensor handle initialized to " + screenHandle);
|
||||||
if (uuid.equals(routingDeviceUuid)) {
|
|
||||||
headHandle = sensor.getHandle();
|
|
||||||
// TODO check risk of race condition:
|
|
||||||
// does this happen before routing is updated?
|
|
||||||
// avoid by supporting adding device here AND in onRoutingUpdated()
|
|
||||||
if (!setHasHeadTracker(ROUTING_DEVICES[0])) {
|
|
||||||
headHandle = -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (uuid.equals(UuidUtils.STANDALONE_UUID)) {
|
|
||||||
headHandle = sensor.getHandle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Sensor screenSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
|
|
||||||
screenHandle = screenSensor.getHandle();
|
|
||||||
} else {
|
} else {
|
||||||
if (mSensorManager != null && mDynSensorCallback != null) {
|
if (mSensorManager != null && mDynSensorCallback != null) {
|
||||||
mSensorManager.unregisterDynamicSensorCallback(mDynSensorCallback);
|
mSensorManager.unregisterDynamicSensorCallback(mDynSensorCallback);
|
||||||
@@ -1498,4 +1480,39 @@ public class SpatializerHelper {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getHeadSensorHandleUpdateTracker() {
|
||||||
|
int headHandle = -1;
|
||||||
|
UUID routingDeviceUuid = mAudioService.getDeviceSensorUuid(ROUTING_DEVICES[0]);
|
||||||
|
List<Sensor> sensors = new ArrayList<Sensor>(0);
|
||||||
|
sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_HEAD_TRACKER));
|
||||||
|
sensors.addAll(mSensorManager.getDynamicSensorList(Sensor.TYPE_DEVICE_PRIVATE_BASE));
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return headHandle;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getScreenSensorHandle() {
|
||||||
|
int screenHandle = -1;
|
||||||
|
Sensor screenSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
|
||||||
|
if (screenSensor != null) {
|
||||||
|
screenHandle = screenSensor.getHandle();
|
||||||
|
}
|
||||||
|
return screenHandle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user