diff options
author | Eric Laurent <elaurent@google.com> | 2011-11-18 16:43:31 -0800 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2012-01-17 15:15:04 -0800 |
commit | 9bc8358ddaa01c3490f9709991989633a6a3dd42 (patch) | |
tree | 12568959bb7bfd308ff2ef98c2e1ce0902ebdcd3 /core | |
parent | cc767191cfb675f744e0165608b0a4196aba2b37 (diff) | |
download | frameworks_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.cpp | 25 |
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}, }; |