Make pre-scale for absolute volume configurable
Audio gain for lower volume steps are restricted for Bluetooth Absolute Volume scenario, but it's better not to use the fixed value. This CL makes it possible to configure the value of pre-scale. Bug: 114220617 Test: manual - gain is restricted as per the configuration Change-Id: I1fd0c77476386ba9518e1819d5ea2c7b0c344a40
This commit is contained in:
committed by
Jean-Michel Trivi
parent
99ae103961
commit
f0fecb1967
@@ -3541,4 +3541,13 @@
|
||||
|
||||
<!-- Brand value for attestation of misprovisioned device. -->
|
||||
<string name="config_misprovisionedBrandValue" translatable="false"></string>
|
||||
|
||||
<!-- Pre-scale volume at volume step 1 for Absolute Volume -->
|
||||
<fraction name="config_prescaleAbsoluteVolume_index1">50%</fraction>
|
||||
|
||||
<!-- Pre-scale volume at volume step 2 for Absolute Volume -->
|
||||
<fraction name="config_prescaleAbsoluteVolume_index2">70%</fraction>
|
||||
|
||||
<!-- Pre-scale volume at volume step 3 for Absolute Volume -->
|
||||
<fraction name="config_prescaleAbsoluteVolume_index3">85%</fraction>
|
||||
</resources>
|
||||
|
||||
@@ -3470,4 +3470,9 @@
|
||||
<java-symbol type="integer" name="db_wal_truncate_size" />
|
||||
<java-symbol type="integer" name="config_wakeUpDelayDoze" />
|
||||
<java-symbol type="string" name="config_dozeWakeScreenSensorType" />
|
||||
|
||||
<!-- For Bluetooth AbsoluteVolume -->
|
||||
<java-symbol type="fraction" name="config_prescaleAbsoluteVolume_index1" />
|
||||
<java-symbol type="fraction" name="config_prescaleAbsoluteVolume_index2" />
|
||||
<java-symbol type="fraction" name="config_prescaleAbsoluteVolume_index3" />
|
||||
</resources>
|
||||
|
||||
@@ -627,6 +627,13 @@ public class AudioService extends IAudioService.Stub
|
||||
// If absolute volume is supported in AVRCP device
|
||||
private boolean mAvrcpAbsVolSupported = false;
|
||||
|
||||
// Pre-scale for Bluetooth Absolute Volume
|
||||
private float[] mPrescaleAbsoluteVolume = new float[] {
|
||||
0.5f, // Pre-scale for index 1
|
||||
0.7f, // Pre-scale for index 2
|
||||
0.85f, // Pre-scale for index 3
|
||||
};
|
||||
|
||||
private static Long mLastDeviceConnectMsgTime = new Long(0);
|
||||
|
||||
private NotificationManager mNm;
|
||||
@@ -878,6 +885,23 @@ public class AudioService extends IAudioService.Stub
|
||||
mUserManagerInternal.addUserRestrictionsListener(mUserRestrictionsListener);
|
||||
|
||||
mRecordMonitor.initMonitor();
|
||||
|
||||
final float[] preScale = new float[3];
|
||||
preScale[0] = mContext.getResources().getFraction(
|
||||
com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index1,
|
||||
1, 1);
|
||||
preScale[1] = mContext.getResources().getFraction(
|
||||
com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index2,
|
||||
1, 1);
|
||||
preScale[2] = mContext.getResources().getFraction(
|
||||
com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index3,
|
||||
1, 1);
|
||||
for (int i = 0; i < preScale.length; i++) {
|
||||
if (0.0f <= preScale[i] && preScale[i] <= 1.0f) {
|
||||
mPrescaleAbsoluteVolume[i] = preScale[i];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void systemReady() {
|
||||
@@ -4926,18 +4950,12 @@ public class AudioService extends IAudioService.Stub
|
||||
if (index == 0) {
|
||||
// 0% for volume 0
|
||||
index = 0;
|
||||
} else if (index == 1) {
|
||||
// 50% for volume 1
|
||||
index = (int)(mIndexMax * 0.5) /10;
|
||||
} else if (index == 2) {
|
||||
// 70% for volume 2
|
||||
index = (int)(mIndexMax * 0.70) /10;
|
||||
} else if (index == 3) {
|
||||
// 85% for volume 3
|
||||
index = (int)(mIndexMax * 0.85) /10;
|
||||
} else if (index > 0 && index <= 3) {
|
||||
// Pre-scale for volume steps 1 2 and 3
|
||||
index = (int) (mIndexMax * mPrescaleAbsoluteVolume[index - 1]) / 10;
|
||||
} else {
|
||||
// otherwise, full gain
|
||||
index = (mIndexMax + 5)/10;
|
||||
index = (mIndexMax + 5) / 10;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user