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:
Eric Laurent
2009-12-08 09:05:45 -08:00
parent 4350e1451c
commit 484d288868
4 changed files with 45 additions and 3 deletions

View File

@@ -130819,6 +130819,17 @@
visibility="public"
>
</field>
<field name="VOLUME_BLUETOOTH_SCO"
type="java.lang.String"
transient="false"
volatile="false"
value="&quot;volume_bluetooth_sco&quot;"
static="true"
final="true"
deprecated="not deprecated"
visibility="public"
>
</field>
<field name="VOLUME_MUSIC"
type="java.lang.String"
transient="false"

View File

@@ -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,

View File

@@ -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

View File

@@ -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);