[Ring] Tie in ring and system volume. 22/120122/2
authorKamil Lipiszko <k.lipiszko@samsung.com>
Tue, 21 Mar 2017 13:47:51 +0000 (14:47 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 27 Mar 2017 13:55:43 +0000 (06:55 -0700)
Sound manager api does not provide any changes on system volume
change for alarm sound volume. This patch solves this issue by
calculating alarm volume basing on currently set system volume.

Change-Id: I19f025d0f1ad21167f1887bc99040258c4a72cbe

clock/src/Utils/SoundManager.cpp

index 2b9c09f34577cab7d1c5dae1f7efde0aa30398b8..27f1fe51e36d1c0cf3cc86d545df87651907813e 100644 (file)
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include <cmath>
+
 #include "Utils/SoundManager.h"
 #include "Utils/Log.h"
 
@@ -43,15 +45,31 @@ bool SoundManager::SoundPlay(const std::string &uri, double volume)
                return false;
        }
 
-       int maxVolume = 0;
-       ret = sound_manager_get_max_volume(SOUND_TYPE_ALARM, &maxVolume);
+       int systemMaxVolume = 0;
+       ret = sound_manager_get_max_volume(SOUND_TYPE_SYSTEM, &systemMaxVolume);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               ERR("sound_manager_get_max_volume failed[%d]: %s", ret, get_error_message(ret));
+               PlayerRelease();
+               return false;
+       }
+
+       int systemVolume = 0;
+       ret = sound_manager_get_volume(SOUND_TYPE_SYSTEM, &systemVolume);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               ERR("sound_manager_get_max_volume failed[%d]: %s", ret, get_error_message(ret));
+               PlayerRelease();
+               return false;
+       }
+
+       int alarmMaxVolume = 0;
+       ret = sound_manager_get_max_volume(SOUND_TYPE_ALARM, &alarmMaxVolume);
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                ERR("sound_manager_get_max_volume failed[%d]: %s", ret, get_error_message(ret));
                PlayerRelease();
                return false;
        }
 
-       ret = sound_manager_set_volume(SOUND_TYPE_ALARM, maxVolume);
+       ret = sound_manager_set_volume(SOUND_TYPE_ALARM, std::round(((double)systemVolume/systemMaxVolume)*alarmMaxVolume));
        if (ret != SOUND_MANAGER_ERROR_NONE) {
                ERR("sound_manager_set_volume failed[%d]: %s", ret, get_error_message(ret));
                PlayerRelease();