AudioService: properties for configuring ring/notif steps/default vol
Define 4 new properties that can be used to override the default notification and ringtone volume number of steps and default value. Throw IllegalArgumentException when max volume is not strictly positive, if default volume is greater than max volume or lower than min volume. Bug: 228180814 Test: dumpsys audio to check default/max for notif/ring Change-Id: Ib12fd2207b1201ced4bc838892ed23d10e45c3c9
This commit is contained in:
@@ -2043,6 +2043,18 @@
|
||||
are controlled together (aliasing is true) or not. -->
|
||||
<bool name="config_alias_ring_notif_stream_types">true</bool>
|
||||
|
||||
<!-- The number of volume steps for the notification stream -->
|
||||
<integer name="config_audio_notif_vol_steps">7</integer>
|
||||
|
||||
<!-- The default volume for the notification stream -->
|
||||
<integer name="config_audio_notif_vol_default">5</integer>
|
||||
|
||||
<!-- The number of volume steps for the ring stream -->
|
||||
<integer name="config_audio_ring_vol_steps">7</integer>
|
||||
|
||||
<!-- The default volume for the ring stream -->
|
||||
<integer name="config_audio_ring_vol_default">5</integer>
|
||||
|
||||
<!-- Flag indicating whether platform level volume adjustments are enabled for remote sessions
|
||||
on grouped devices. -->
|
||||
<bool name="config_volumeAdjustmentForRemoteGroupSessions">true</bool>
|
||||
|
||||
@@ -274,6 +274,10 @@
|
||||
<java-symbol type="bool" name="action_bar_embed_tabs" />
|
||||
<java-symbol type="bool" name="action_bar_expanded_action_views_exclusive" />
|
||||
<java-symbol type="bool" name="config_alias_ring_notif_stream_types" />
|
||||
<java-symbol type="integer" name="config_audio_notif_vol_default" />
|
||||
<java-symbol type="integer" name="config_audio_notif_vol_steps" />
|
||||
<java-symbol type="integer" name="config_audio_ring_vol_default" />
|
||||
<java-symbol type="integer" name="config_audio_ring_vol_steps" />
|
||||
<java-symbol type="bool" name="config_avoidGfxAccel" />
|
||||
<java-symbol type="bool" name="config_bluetooth_address_validation" />
|
||||
<java-symbol type="integer" name="config_chooser_max_targets_per_row" />
|
||||
|
||||
@@ -2294,10 +2294,10 @@ public class AudioSystem
|
||||
public static int[] DEFAULT_STREAM_VOLUME = new int[] {
|
||||
4, // STREAM_VOICE_CALL
|
||||
7, // STREAM_SYSTEM
|
||||
5, // STREAM_RING
|
||||
5, // STREAM_RING // configured in AudioService by config_audio_notif_vol_default
|
||||
5, // STREAM_MUSIC
|
||||
6, // STREAM_ALARM
|
||||
5, // STREAM_NOTIFICATION
|
||||
5, // STREAM_NOTIFICATION // configured in AudioService by config_audio_ring_vol_default
|
||||
7, // STREAM_BLUETOOTH_SCO
|
||||
7, // STREAM_SYSTEM_ENFORCED
|
||||
5, // STREAM_DTMF
|
||||
|
||||
@@ -63,6 +63,7 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.ContentObserver;
|
||||
import android.hardware.SensorPrivacyManager;
|
||||
import android.hardware.SensorPrivacyManagerInternal;
|
||||
@@ -411,10 +412,10 @@ public class AudioService extends IAudioService.Stub
|
||||
protected static int[] MAX_STREAM_VOLUME = new int[] {
|
||||
5, // STREAM_VOICE_CALL
|
||||
7, // STREAM_SYSTEM
|
||||
7, // STREAM_RING
|
||||
7, // STREAM_RING // configured by config_audio_ring_vol_steps
|
||||
15, // STREAM_MUSIC
|
||||
7, // STREAM_ALARM
|
||||
7, // STREAM_NOTIFICATION
|
||||
7, // STREAM_NOTIFICATION // configured by config_audio_notif_vol_steps
|
||||
15, // STREAM_BLUETOOTH_SCO
|
||||
7, // STREAM_SYSTEM_ENFORCED
|
||||
15, // STREAM_DTMF
|
||||
@@ -1111,6 +1112,48 @@ public class AudioService extends IAudioService.Stub
|
||||
MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM];
|
||||
}
|
||||
|
||||
// Read following properties to configure max volume (number of steps) and default volume
|
||||
// for STREAM_NOTIFICATION and STREAM_RING:
|
||||
// config_audio_notif_vol_default
|
||||
// config_audio_notif_vol_steps
|
||||
// config_audio_ring_vol_default
|
||||
// config_audio_ring_vol_steps
|
||||
int[] streams = { AudioSystem.STREAM_NOTIFICATION, AudioSystem.STREAM_RING };
|
||||
int[] stepsResId = { com.android.internal.R.integer.config_audio_notif_vol_steps,
|
||||
com.android.internal.R.integer.config_audio_ring_vol_steps };
|
||||
int[] defaultResId = { com.android.internal.R.integer.config_audio_notif_vol_default,
|
||||
com.android.internal.R.integer.config_audio_ring_vol_default };
|
||||
for (int s = 0; s < streams.length; s++) {
|
||||
try {
|
||||
final int maxVol = mContext.getResources().getInteger(stepsResId[s]);
|
||||
if (maxVol <= 0) {
|
||||
throw new IllegalArgumentException("Invalid negative max volume for stream "
|
||||
+ streams[s]);
|
||||
}
|
||||
Log.i(TAG, "Stream " + streams[s] + ": using max vol of " + maxVol);
|
||||
MAX_STREAM_VOLUME[streams[s]] = maxVol;
|
||||
} catch (Resources.NotFoundException e) {
|
||||
Log.e(TAG, "Error querying max vol for stream type " + streams[s], e);
|
||||
}
|
||||
try {
|
||||
final int defaultVol = mContext.getResources().getInteger(defaultResId[s]);
|
||||
if (defaultVol > MAX_STREAM_VOLUME[streams[s]]) {
|
||||
throw new IllegalArgumentException("Invalid default volume (" + defaultVol
|
||||
+ ") for stream " + streams[s] + ", greater than max volume of "
|
||||
+ MAX_STREAM_VOLUME[streams[s]]);
|
||||
}
|
||||
if (defaultVol < MIN_STREAM_VOLUME[streams[s]]) {
|
||||
throw new IllegalArgumentException("Invalid default volume (" + defaultVol
|
||||
+ ") for stream " + streams[s] + ", lower than min volume of "
|
||||
+ MIN_STREAM_VOLUME[streams[s]]);
|
||||
}
|
||||
Log.i(TAG, "Stream " + streams[s] + ": using default vol of " + defaultVol);
|
||||
AudioSystem.DEFAULT_STREAM_VOLUME[streams[s]] = defaultVol;
|
||||
} catch (Resources.NotFoundException e) {
|
||||
Log.e(TAG, "Error querying default vol for stream type " + streams[s], e);
|
||||
}
|
||||
}
|
||||
|
||||
if (looper == null) {
|
||||
createAudioSystemThread();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user