Merge "audio: fix accessibility routing in call" into tm-dev
This commit is contained in:
@@ -82,6 +82,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/** ID for Communication strategy retrieved form audio policy manager */
|
||||
private int mCommunicationStrategyId = -1;
|
||||
|
||||
/** ID for Accessibility strategy retrieved form audio policy manager */
|
||||
private int mAccessibilityStrategyId = -1;
|
||||
|
||||
|
||||
/** Active communication device reported by audio policy manager */
|
||||
private AudioDeviceInfo mActiveCommunicationDevice;
|
||||
/** Last preferred device set for communication strategy */
|
||||
@@ -141,22 +146,28 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
init();
|
||||
}
|
||||
|
||||
private void initCommunicationStrategyId() {
|
||||
private void initRoutingStrategyIds() {
|
||||
List<AudioProductStrategy> strategies = AudioProductStrategy.getAudioProductStrategies();
|
||||
mCommunicationStrategyId = -1;
|
||||
mAccessibilityStrategyId = -1;
|
||||
for (AudioProductStrategy strategy : strategies) {
|
||||
if (strategy.getAudioAttributesForLegacyStreamType(AudioSystem.STREAM_VOICE_CALL)
|
||||
!= null) {
|
||||
if (mCommunicationStrategyId == -1
|
||||
&& strategy.getAudioAttributesForLegacyStreamType(
|
||||
AudioSystem.STREAM_VOICE_CALL) != null) {
|
||||
mCommunicationStrategyId = strategy.getId();
|
||||
return;
|
||||
}
|
||||
if (mAccessibilityStrategyId == -1
|
||||
&& strategy.getAudioAttributesForLegacyStreamType(
|
||||
AudioSystem.STREAM_ACCESSIBILITY) != null) {
|
||||
mAccessibilityStrategyId = strategy.getId();
|
||||
}
|
||||
}
|
||||
mCommunicationStrategyId = -1;
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setupMessaging(mContext);
|
||||
|
||||
initCommunicationStrategyId();
|
||||
initRoutingStrategyIds();
|
||||
mPreferredCommunicationDevice = null;
|
||||
updateActiveCommunicationDevice();
|
||||
|
||||
@@ -813,19 +824,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
return mDeviceInventory.setPreferredDevicesForStrategySync(strategy, devices);
|
||||
}
|
||||
|
||||
/*package*/ void postSetPreferredDevicesForStrategy(int strategy,
|
||||
@NonNull List<AudioDeviceAttributes> devices) {
|
||||
sendILMsgNoDelay(MSG_IL_SET_PREF_DEVICES_FOR_STRATEGY, SENDMSG_REPLACE, strategy, devices);
|
||||
}
|
||||
|
||||
/*package*/ int removePreferredDevicesForStrategySync(int strategy) {
|
||||
return mDeviceInventory.removePreferredDevicesForStrategySync(strategy);
|
||||
}
|
||||
|
||||
/*package*/ void postRemovePreferredDevicesForStrategy(int strategy) {
|
||||
sendIMsgNoDelay(MSG_I_REMOVE_PREF_DEVICES_FOR_STRATEGY, SENDMSG_REPLACE, strategy);
|
||||
}
|
||||
|
||||
/*package*/ void registerStrategyPreferredDevicesDispatcher(
|
||||
@NonNull IStrategyPreferredDevicesDispatcher dispatcher) {
|
||||
mDeviceInventory.registerStrategyPreferredDevicesDispatcher(dispatcher);
|
||||
@@ -1157,6 +1159,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
pw.println(prefix + "mCommunicationStrategyId: "
|
||||
+ mCommunicationStrategyId);
|
||||
|
||||
pw.println(prefix + "mAccessibilityStrategyId: "
|
||||
+ mAccessibilityStrategyId);
|
||||
|
||||
pw.println("\n" + prefix + "mModeOwnerPid: " + mModeOwnerPid);
|
||||
|
||||
mBtHelper.dump(pw, prefix);
|
||||
@@ -1252,7 +1257,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
case MSG_RESTORE_DEVICES:
|
||||
synchronized (mSetModeLock) {
|
||||
synchronized (mDeviceStateLock) {
|
||||
initCommunicationStrategyId();
|
||||
initRoutingStrategyIds();
|
||||
updateActiveCommunicationDevice();
|
||||
mDeviceInventory.onRestoreDevices();
|
||||
mBtHelper.onAudioServerDiedRestoreA2dp();
|
||||
@@ -1440,22 +1445,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
final int strategy = msg.arg1;
|
||||
mDeviceInventory.onSaveRemovePreferredDevices(strategy);
|
||||
} break;
|
||||
case MSG_IL_SET_PREF_DEVICES_FOR_STRATEGY: {
|
||||
final int strategy = msg.arg1;
|
||||
final List<AudioDeviceAttributes> devices =
|
||||
(List<AudioDeviceAttributes>) msg.obj;
|
||||
setPreferredDevicesForStrategySync(strategy, devices);
|
||||
if (strategy == mCommunicationStrategyId) {
|
||||
onUpdatePhoneStrategyDevice(devices.isEmpty() ? null : devices.get(0));
|
||||
}
|
||||
} break;
|
||||
case MSG_I_REMOVE_PREF_DEVICES_FOR_STRATEGY: {
|
||||
final int strategy = msg.arg1;
|
||||
removePreferredDevicesForStrategySync(strategy);
|
||||
if (strategy == mCommunicationStrategyId) {
|
||||
onUpdatePhoneStrategyDevice(null);
|
||||
}
|
||||
} break;
|
||||
case MSG_CHECK_MUTE_MUSIC:
|
||||
checkMessagesMuteMusic(0);
|
||||
break;
|
||||
@@ -1533,8 +1522,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
private static final int MSG_I_SAVE_CLEAR_PREF_DEVICES_FOR_CAPTURE_PRESET = 38;
|
||||
|
||||
private static final int MSG_L_UPDATE_COMMUNICATION_ROUTE = 39;
|
||||
private static final int MSG_IL_SET_PREF_DEVICES_FOR_STRATEGY = 40;
|
||||
private static final int MSG_I_REMOVE_PREF_DEVICES_FOR_STRATEGY = 41;
|
||||
private static final int MSG_L_SET_COMMUNICATION_ROUTE_FOR_CLIENT = 42;
|
||||
private static final int MSG_L_UPDATE_COMMUNICATION_ROUTE_CLIENT = 43;
|
||||
private static final int MSG_I_SCO_AUDIO_STATE_CHANGED = 44;
|
||||
@@ -1836,9 +1823,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
}
|
||||
if (preferredCommunicationDevice == null) {
|
||||
removePreferredDevicesForStrategySync(mCommunicationStrategyId);
|
||||
removePreferredDevicesForStrategySync(mAccessibilityStrategyId);
|
||||
} else {
|
||||
setPreferredDevicesForStrategySync(
|
||||
mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice));
|
||||
setPreferredDevicesForStrategySync(
|
||||
mAccessibilityStrategyId, Arrays.asList(preferredCommunicationDevice));
|
||||
}
|
||||
onUpdatePhoneStrategyDevice(preferredCommunicationDevice);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user