Fix issue 2299360: Change in in-call volume affects the Bluetooth in-call volume and vice versa.
Add a separate system settings entry for bluetooth SCO volume.
This commit is contained in:
@@ -130819,6 +130819,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="VOLUME_BLUETOOTH_SCO"
|
||||
type="java.lang.String"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value=""volume_bluetooth_sco""
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</field>
|
||||
<field name="VOLUME_MUSIC"
|
||||
type="java.lang.String"
|
||||
transient="false"
|
||||
|
||||
@@ -1193,6 +1193,12 @@ public final class Settings {
|
||||
*/
|
||||
public static final String VOLUME_NOTIFICATION = "volume_notification";
|
||||
|
||||
/**
|
||||
* Bluetooth Headset volume. This is used internally, changing this value will
|
||||
* not change the volume. See AudioManager.
|
||||
*/
|
||||
public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
|
||||
|
||||
/**
|
||||
* Whether the notifications should use the ring volume (value of 1) or
|
||||
* a separate notification volume (value of 0). In most cases, users
|
||||
@@ -1214,7 +1220,7 @@ public final class Settings {
|
||||
*/
|
||||
public static final String[] VOLUME_SETTINGS = {
|
||||
VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC,
|
||||
VOLUME_ALARM, VOLUME_NOTIFICATION
|
||||
VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1472,12 +1478,14 @@ public final class Settings {
|
||||
VOLUME_MUSIC,
|
||||
VOLUME_ALARM,
|
||||
VOLUME_NOTIFICATION,
|
||||
VOLUME_BLUETOOTH_SCO,
|
||||
VOLUME_VOICE + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_SYSTEM + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_RING + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_MUSIC + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_ALARM + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_NOTIFICATION + APPEND_FOR_LAST_AUDIBLE,
|
||||
VOLUME_BLUETOOTH_SCO + APPEND_FOR_LAST_AUDIBLE,
|
||||
TEXT_AUTO_REPLACE,
|
||||
TEXT_AUTO_CAPS,
|
||||
TEXT_AUTO_PUNCTUATE,
|
||||
|
||||
@@ -168,7 +168,7 @@ public class AudioService extends IAudioService.Stub {
|
||||
AudioSystem.STREAM_MUSIC, // STREAM_MUSIC
|
||||
AudioSystem.STREAM_ALARM, // STREAM_ALARM
|
||||
AudioSystem.STREAM_NOTIFICATION, // STREAM_NOTIFICATION
|
||||
AudioSystem.STREAM_VOICE_CALL, // STREAM_BLUETOOTH_SCO
|
||||
AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO
|
||||
AudioSystem.STREAM_SYSTEM, // STREAM_SYSTEM_ENFORCED
|
||||
AudioSystem.STREAM_VOICE_CALL, // STREAM_DTMF
|
||||
AudioSystem.STREAM_MUSIC // STREAM_TTS
|
||||
|
||||
@@ -71,7 +71,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
|
||||
// is properly propagated through your change. Not doing so will result in a loss of user
|
||||
// settings.
|
||||
private static final int DATABASE_VERSION = 43;
|
||||
private static final int DATABASE_VERSION = 44;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@@ -539,6 +539,24 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
upgradeVersion = 43;
|
||||
}
|
||||
|
||||
if (upgradeVersion == 43) {
|
||||
/*
|
||||
* This upgrade stores bluetooth volume separately from voice volume
|
||||
*/
|
||||
db.beginTransaction();
|
||||
try {
|
||||
SQLiteStatement stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
|
||||
+ " VALUES(?,?);");
|
||||
loadSetting(stmt, Settings.System.VOLUME_BLUETOOTH_SCO,
|
||||
AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]);
|
||||
stmt.close();
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
upgradeVersion = 44;
|
||||
}
|
||||
|
||||
if (upgradeVersion != currentVersion) {
|
||||
Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion
|
||||
+ ", must wipe the settings provider");
|
||||
@@ -691,6 +709,11 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
stmt,
|
||||
Settings.System.VOLUME_NOTIFICATION,
|
||||
AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_NOTIFICATION]);
|
||||
loadSetting(
|
||||
stmt,
|
||||
Settings.System.VOLUME_BLUETOOTH_SCO,
|
||||
AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]);
|
||||
|
||||
loadSetting(stmt, Settings.System.MODE_RINGER,
|
||||
AudioManager.RINGER_MODE_NORMAL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user