diff options
| author | Hayden Gomes <haydengomes@google.com> | 2019-04-12 15:49:39 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-04-12 15:49:39 +0000 |
| commit | e98e90dca6b1700cd6197db75eb3bb00bb668c41 (patch) | |
| tree | d93860ec8df5b3c82af1a2b78129fcad43f9d715 /core/java | |
| parent | 40ec9664f618744c016c90e91a3fcbafbff52a63 (diff) | |
| parent | ebd6aaa4b0f7b302e9733dd5a801b01bc450af4f (diff) | |
Merge changes from topic "AudioProductStrategies-API" into qt-dev
* changes:
Replacing AudioVolumeGroups with List
Cleaning up SeekBarVolumizer
Removing name getter from AudioProductStrategy
Replacing AudioProductStrategies with List
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/preference/SeekBarVolumizer.java | 67 |
1 files changed, 49 insertions, 18 deletions
diff --git a/core/java/android/preference/SeekBarVolumizer.java b/core/java/android/preference/SeekBarVolumizer.java index 847b8e48b296..02f99258395c 100644 --- a/core/java/android/preference/SeekBarVolumizer.java +++ b/core/java/android/preference/SeekBarVolumizer.java @@ -16,6 +16,7 @@ package android.preference; +import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.app.NotificationManager; import android.content.BroadcastReceiver; @@ -27,8 +28,8 @@ import android.media.AudioAttributes; import android.media.AudioManager; import android.media.Ringtone; import android.media.RingtoneManager; -import android.media.audiopolicy.AudioProductStrategies; -import android.media.audiopolicy.AudioVolumeGroups; +import android.media.audiopolicy.AudioProductStrategy; +import android.media.audiopolicy.AudioVolumeGroup; import android.net.Uri; import android.os.Handler; import android.os.HandlerThread; @@ -67,7 +68,6 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private static final int MSG_GROUP_VOLUME_CHANGED = 1; private final Handler mVolumeHandler = new VolumeHandler(); - private final AudioProductStrategies mAudioProductStrategies; private AudioAttributes mAttributes; private int mVolumeGroupId; @@ -161,11 +161,9 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } mZenMode = mNotificationManager.getZenMode(); - mAudioProductStrategies = mAudioManager.getAudioProductStrategies(); - if (mAudioProductStrategies.size() > 0) { - mVolumeGroupId = mAudioProductStrategies.getVolumeGroupIdForLegacyStreamType( - mStreamType); - mAttributes = mAudioProductStrategies.getAudioAttributesForLegacyStreamType( + if (hasAudioProductStrategies()) { + mVolumeGroupId = getVolumeGroupIdForLegacyStreamType(mStreamType); + mAttributes = getAudioAttributesForLegacyStreamType( mStreamType); } @@ -190,6 +188,40 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba mDefaultUri = defaultUri; } + private boolean hasAudioProductStrategies() { + return AudioManager.getAudioProductStrategies().size() > 0; + } + + private int getVolumeGroupIdForLegacyStreamType(int streamType) { + for (final AudioProductStrategy productStrategy : + AudioManager.getAudioProductStrategies()) { + int volumeGroupId = productStrategy.getVolumeGroupIdForLegacyStreamType(streamType); + if (volumeGroupId != AudioVolumeGroup.DEFAULT_VOLUME_GROUP) { + return volumeGroupId; + } + } + + return AudioManager.getAudioProductStrategies().stream() + .map(strategy -> strategy.getVolumeGroupIdForAudioAttributes( + AudioProductStrategy.sDefaultAttributes)) + .filter(volumeGroupId -> volumeGroupId != AudioVolumeGroup.DEFAULT_VOLUME_GROUP) + .findFirst() + .orElse(AudioVolumeGroup.DEFAULT_VOLUME_GROUP); + } + + private @NonNull AudioAttributes getAudioAttributesForLegacyStreamType(int streamType) { + for (final AudioProductStrategy productStrategy : + AudioManager.getAudioProductStrategies()) { + AudioAttributes aa = productStrategy.getAudioAttributesForLegacyStreamType(streamType); + if (aa != null) { + return aa; + } + } + return new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN) + .setUsage(AudioAttributes.USAGE_UNKNOWN).build(); + } + private static boolean isNotificationOrRing(int stream) { return stream == AudioManager.STREAM_RING || stream == AudioManager.STREAM_NOTIFICATION; } @@ -329,7 +361,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba postStopSample(); mContext.getContentResolver().unregisterContentObserver(mVolumeObserver); mReceiver.setListening(false); - if (mAudioProductStrategies.size() > 0) { + if (hasAudioProductStrategies()) { unregisterVolumeGroupCb(); } mSeekBar.setOnSeekBarChangeListener(null); @@ -349,7 +381,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba System.getUriFor(System.VOLUME_SETTINGS_INT[mStreamType]), false, mVolumeObserver); mReceiver.setListening(true); - if (mAudioProductStrategies.size() > 0) { + if (hasAudioProductStrategies()) { registerVolumeGroupCb(); } } @@ -507,7 +539,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba if (AudioManager.VOLUME_CHANGED_ACTION.equals(action)) { int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); int streamValue = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, -1); - if (mAudioProductStrategies.size() == 0) { + if (hasAudioProductStrategies()) { updateVolumeSlider(streamType, streamValue); } } else if (AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION.equals(action)) { @@ -519,13 +551,12 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } else if (AudioManager.STREAM_DEVICES_CHANGED_ACTION.equals(action)) { int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1); - if (mAudioProductStrategies.size() == 0) { + if (hasAudioProductStrategies()) { int streamVolume = mAudioManager.getStreamVolume(streamType); updateVolumeSlider(streamType, streamVolume); } else { - int volumeGroup = mAudioProductStrategies.getVolumeGroupIdForLegacyStreamType( - streamType); - if (volumeGroup != AudioVolumeGroups.DEFAULT_VOLUME_GROUP + int volumeGroup = getVolumeGroupIdForLegacyStreamType(streamType); + if (volumeGroup != AudioVolumeGroup.DEFAULT_VOLUME_GROUP && volumeGroup == mVolumeGroupId) { int streamVolume = mAudioManager.getStreamVolume(streamType); updateVolumeSlider(streamType, streamVolume); @@ -558,14 +589,14 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } private void registerVolumeGroupCb() { - if (mVolumeGroupId != AudioVolumeGroups.DEFAULT_VOLUME_GROUP) { + if (mVolumeGroupId != AudioVolumeGroup.DEFAULT_VOLUME_GROUP) { mAudioManager.registerVolumeGroupCallback(Runnable::run, mVolumeGroupCallback); mLastProgress = mAudioManager.getVolumeIndexForAttributes(mAttributes); } } private void unregisterVolumeGroupCb() { - if (mVolumeGroupId != AudioVolumeGroups.DEFAULT_VOLUME_GROUP) { + if (mVolumeGroupId != AudioVolumeGroup.DEFAULT_VOLUME_GROUP) { mAudioManager.unregisterVolumeGroupCallback(mVolumeGroupCallback); } } @@ -578,7 +609,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba case MSG_GROUP_VOLUME_CHANGED: int group = (int) args.arg1; if (mVolumeGroupId != group - || mVolumeGroupId == AudioVolumeGroups.DEFAULT_VOLUME_GROUP) { + || mVolumeGroupId == AudioVolumeGroup.DEFAULT_VOLUME_GROUP) { return; } updateSlider(); |
