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
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user