Track volume changes
Here is how you can subscribe to volume changes on the phone. First you must define callback which will be called when any volume change occurs. Then you set this callback using sound_manager_set_volume_changed_cb() API function.
#include <sound_manager.h>
#include <stdlib.h>
//Volume change callback implementation
void volume_changed_cb(sound_type_e type, unsigned int volume, void* user_data)
{
char *sound_type = NULL;
switch (type)
{
case SOUND_TYPE_SYSTEM:
sound_type = strdup("System volume");
break;
case SOUND_TYPE_NOTIFICATION:
sound_type = strdup("Notification volume");
break;
case SOUND_TYPE_ALARM:
sound_type = strdup("Alarm volume");
break;
case SOUND_TYPE_MEDIA:
sound_type = strdup("Media volume");
break;
case SOUND_TYPE_VOICE:
sound_type = strdup("Voice volume");
break;
default:
sound_type = strdup("Other type of volume");
break;
};
LOGI("%s changed! New value: %u", sound_type, volume);
free (sound_type);
sound_type = NULL;
}
//Subscribing for callback
if (sound_manager_set_volume_changed_cb(volume_changed_cb, NULL) == SOUND_MANAGER_ERROR_NONE)
{
LOGI("Volume change callback set.");
}
else
{
LOGE("Error occurred.");
}