static aul_app_com_connection_h __conn;
static bool __initialized = false;
+static bool __is_ambient_mode = false;
static void __alarm_init(void)
{
bundle *b = NULL;
char *extra;
char *mode;
+ ui_app_ambient_state_e state;
bundle_get_str(envelope, "__AMBIENT_MODE__", &mode);
bundle_get_str(envelope, "__AMBIENT_EXTRA__", &extra);
b = bundle_decode((bundle_raw *)extra, strlen(extra));
+ state = (ui_app_ambient_state_e)atoi(mode);
+
if (ambient_lifecycle.ambient_changed)
- ambient_lifecycle.ambient_changed((ui_app_ambient_state_e)atoi(mode), b, user_data);
+ ambient_lifecycle.ambient_changed(state, b, user_data);
+
+ if (state == UI_APP_AMBIENT_STATE_ENTER && !__is_ambient_mode) {
+ int ret = __set_ambient_tick_cb();
+ if (ret != 0)
+ LOGE("Failed to set ambient tick cb : %d", ret);
+ else
+ __is_ambient_mode = true;
+ } else if (state == UI_APP_AMBIENT_STATE_LEAVE && __is_ambient_mode) {
+ if (ambient_lifecycle.alarm_id) {
+ alarmmgr_remove_alarm(ambient_lifecycle.alarm_id);
+ ambient_lifecycle.alarm_id = 0;
+ }
+
+ __is_ambient_mode = false;
+ }
if (b)
bundle_free(b);
ambient_lifecycle.ambient_changed = lifecycle->ambient_changed;
ambient_lifecycle.user_data = user_data;
- ret = __set_ambient_tick_cb();
- if (ret != 0) {
- LOGE("Failed to set ambient tick cb : %d", ret);
- return ret;
- }
-
ret = __set_ambient_changed_cb();
if (ret != 0) {
LOGE("Failed to set ambient changed cb : %d", ret);
LOGD("set update period : %d", period);
ambient_lifecycle.period_type = period;
- if (ambient_lifecycle.alarm_id) {
- alarmmgr_remove_alarm(ambient_lifecycle.alarm_id);
- ambient_lifecycle.alarm_id = 0;
+ if (__is_ambient_mode) {
+ if (ambient_lifecycle.alarm_id) {
+ alarmmgr_remove_alarm(ambient_lifecycle.alarm_id);
+ ambient_lifecycle.alarm_id = 0;
+ }
if (ambient_lifecycle.period_type != UI_APP_AMBIENT_UPDATE_NONE)
ret = __set_ambient_tick_cb();