안녕하세요.
SYSTEM_SETTINGS_KEY 를 이용하여 값을 변경해 보고 있는데요...
일부 SYSTEM_SETTINGS_KEY 가 정상적으로 동작하고 있지 않아 문의드려요.
가이드 문서를 찾아보니, 아래와 같이
SYSTEM_SETTINGS_KEY 는 총 28개 있더라구요.
이값을 순서대로 찍어보면,,,,
//0
"INCOMING_CALL_RINGTONE",
"WALLPAPER_HOME_SCREEN",
"WALLPAPER_LOCK_SCREEN",
"FONT_SIZE",
"FONT_TYPE",
//5
"MOTION_ACTIVATION",
"EMAIL_ALERT_RINGTONE",
"USB_DEBUGGING_ENABLED",
"3G_DATA_NETWORK_ENABLED",
"LOCKSCREEN_APP", <-------------------------- 여기서부터 인덱스가 하나씩 밀림.
//10
"DEFAULT_FONT_TYPE",
"LOCALE_COUNTRY",
"LOCALE_LANGUAGE",
"LOCALE_TIMEFORMAT_24HOUR",
"LOCALE_TIMEZONE",
//15
"TIME_CHANGED",
"SOUND_LOCK",
"SOUND_SILENT_MODE",
"SOUND_TOUCH",
"DISPLAY_SCREEN_ROTATION_AUTO",
//20
"DEVICE_NAME",
"MOTION_ENABLED",
"NETWORK_WIFI_NOTIFICATION",
"NETWORK_FLIGHT_MODE",
"SCREEN_BACKLIGHT_TIME",
//25
"SOUND_NOTIFICATION",
"SOUND_NOTIFICATION_REPETITION_PERIOD",
"LOCK_STATE",
이렇게 되어야 하나, 실제 인덱스를 찍어보면
SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP 키값부터 인덱스가 하나씩 밀리고( 원래 : 9, 현제 :10),
맨 마지막 키값인 SYSTEM_SETTINGS_KEY_LOCK_STATE
값이 -1226851455 처럼 잘못된 값이 넘어오고 있습니다.
index 9 번에도 어떤 다른 피쳐값이 있는것인지요?
아니면 단순 오류인건지..
그리고 마지막 SYSTEM_SETTINGS_KEY_LOCK_STATE 값은 어떻게 받아올수 있나요?
현재 제가 사용하는 ide 버전은 2.4 베타 버전이구요.
코드는 아래와 같이 작성되었습니다.
이상입니다.
struct _ret_type_define
{
system_settings_key_e key;
int returns;
};
typedef enum
{
_RET_BOOL= 0,
_RET_INT,
_RET_STRING
} _SYSTEM_SETTINGS_TYPES;
struct _ret_type_define _ret_type[SYS_INFO_COUNT] =
{
{
SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_FONT_SIZE, _RET_INT
},
{
SYSTEM_SETTINGS_KEY_FONT_TYPE, _RET_STRING
},
//5
{
SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, _RET_STRING
},
//10
{
SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, _RET_STRING
},
//15
{
SYSTEM_SETTINGS_KEY_TIME_CHANGED, _RET_INT
},
{
SYSTEM_SETTINGS_KEY_SOUND_LOCK, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_SOUND_TOUCH, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, _RET_BOOL
},
//20
{
SYSTEM_SETTINGS_KEY_DEVICE_NAME, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_MOTION_ENABLED, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, _RET_BOOL
},
{
SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, _RET_INT
},
//25
{
SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, _RET_STRING
},
{
SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, _RET_INT
},
{
SYSTEM_SETTINGS_KEY_LOCK_STATE, _RET_INT
},
};
if (_ret_type[id->index].returns==_RET_BOOL)
{
system_settings_get_value_bool(_ret_type[id->index].key, &_bool_ret);
dlog_print(DLOG_ERROR, LOG_TAG, "%d", _bool_ret);
snprintf(buf, MAX_STR, "%s", _bool_ret ? "True" : "False");
}
else if (_ret_type[id->index].returns==_RET_INT)
{
system_settings_get_value_int (_ret_type[id->index].key, &_int_ret);
dlog_print(DLOG_ERROR, LOG_TAG, "%d", _int_ret);
snprintf(buf, MAX_STR, "%d", _int_ret);
}
else if (_ret_type[id->index].returns==_RET_STRING)
{
system_settings_get_value_string(_ret_type[id->index].key, &_string_ret);
dlog_print(DLOG_ERROR, LOG_TAG, "%s", _string_ret);
snprintf(buf, MAX_STR, "%s", _string_ret);
free(_string_ret);
}
else{
dlog_print(DLOG_ERROR, LOG_TAG, "Undefined return type");
return NULL;
}
if (!strcmp(part, "elm.text")){
return strdup(_info_key[_ret_type[id->index].key]);
}
else if (!strcmp(part, "elm.text.sub")){
return strdup(buf);
}