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