summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2011-11-18 16:43:31 -0800
committerEric Laurent <elaurent@google.com>2012-01-17 15:15:04 -0800
commit9bc8358ddaa01c3490f9709991989633a6a3dd42 (patch)
tree12568959bb7bfd308ff2ef98c2e1ce0902ebdcd3 /core
parentcc767191cfb675f744e0165608b0a4196aba2b37 (diff)
downloadframeworks_base-9bc8358ddaa01c3490f9709991989633a6a3dd42.zip
frameworks_base-9bc8358ddaa01c3490f9709991989633a6a3dd42.tar.gz
frameworks_base-9bc8358ddaa01c3490f9709991989633a6a3dd42.tar.bz2
audio framework: manage stream volume per device
Improve volume management by keeping track of volume for each type of device independently. Volume for each stream (MUSIC, RINGTONE, VOICE_CALL...) is now maintained per device. The main changes are: - AudioService now keeps tracks of stream volumes per device: volume indexes are kept in a HashMap < device , index>. active device is queried from policy manager when a volume change request is received initalization, mute and unmute happen on all device simultaneously - Settings: suffixes is added to volume keys to store each device volume independently. - AudioSystem/AudioPolicyService/AudioPolicyInterface: added a device argument to setStreamVolumeIndex() and getStreamVolumeIndex() to address each device independently. - AudioPolicyManagerBase: keep track of stream volumes for each device and apply volume according to current device selection. Change-Id: I61ef1c45caadca04d16363bca4140e0f81901b3f
Diffstat (limited to 'core')
-rw-r--r--core/jni/android_media_AudioSystem.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 29f9d54..41756a1 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -183,16 +183,29 @@ android_media_AudioSystem_initStreamVolume(JNIEnv *env, jobject thiz, jint strea
}
static int
-android_media_AudioSystem_setStreamVolumeIndex(JNIEnv *env, jobject thiz, jint stream, jint index)
+android_media_AudioSystem_setStreamVolumeIndex(JNIEnv *env,
+ jobject thiz,
+ jint stream,
+ jint index,
+ jint device)
{
- return check_AudioSystem_Command(AudioSystem::setStreamVolumeIndex(static_cast <audio_stream_type_t>(stream), index));
+ return check_AudioSystem_Command(
+ AudioSystem::setStreamVolumeIndex(static_cast <audio_stream_type_t>(stream),
+ index,
+ (audio_devices_t)device));
}
static int
-android_media_AudioSystem_getStreamVolumeIndex(JNIEnv *env, jobject thiz, jint stream)
+android_media_AudioSystem_getStreamVolumeIndex(JNIEnv *env,
+ jobject thiz,
+ jint stream,
+ jint device)
{
int index;
- if (AudioSystem::getStreamVolumeIndex(static_cast <audio_stream_type_t>(stream), &index) != NO_ERROR) {
+ if (AudioSystem::getStreamVolumeIndex(static_cast <audio_stream_type_t>(stream),
+ &index,
+ (audio_devices_t)device)
+ != NO_ERROR) {
index = -1;
}
return index;
@@ -219,8 +232,8 @@ static JNINativeMethod gMethods[] = {
{"setForceUse", "(II)I", (void *)android_media_AudioSystem_setForceUse},
{"getForceUse", "(I)I", (void *)android_media_AudioSystem_getForceUse},
{"initStreamVolume", "(III)I", (void *)android_media_AudioSystem_initStreamVolume},
- {"setStreamVolumeIndex","(II)I", (void *)android_media_AudioSystem_setStreamVolumeIndex},
- {"getStreamVolumeIndex","(I)I", (void *)android_media_AudioSystem_getStreamVolumeIndex},
+ {"setStreamVolumeIndex","(III)I", (void *)android_media_AudioSystem_setStreamVolumeIndex},
+ {"getStreamVolumeIndex","(II)I", (void *)android_media_AudioSystem_getStreamVolumeIndex},
{"getDevicesForStream", "(I)I", (void *)android_media_AudioSystem_getDevicesForStream},
};