Languages

Menu
Sites
Language
nfc_manager_set_activation_changed_cb() API Guide 요청

 

nfc_manager_set_activation_changed_cb() 이

설정의 NFC 설정을 변경하면 callback 이 오는 함수로 보이는데

callback 이 오질 않네요... 제가 잘못 사용을 한건지...

관련 코드는 아래와 같습니다. help 보고....

환경은 Gear S2(sdk 2.3.1) 에서 확인 했습니다.

코드가 잘못된건지 API 지원을 하지 않는건지 

아시는 분 계시면 답변 부탁드립니다.

특히, g_timeout_add 와 g_main_loop_run 은 왜 하는지 모르겠네요. 꼭 해야하는지...

static gboolean timeout_func_main(gpointer user_data)
{
    DLOG_DEBUG("[callback] timeout_func_main()");

	return FALSE;
}

static void on_nfc_activation_changed(bool activated, void *user_data)
{
   if (activated)
      DLOG_INFO("[callback] NFC activated");
   else
      DLOG_INFO("[callback] NFC deactivated");
}

...

void app_control(app_control_h service, void *user_data)
{
...
    int error_code = NFC_ERROR_NONE;

	error_code = nfc_manager_initialize();
	if (NFC_ERROR_NONE != error_code) // Error occurred
	{
		g_timeout_add(1000, timeout_func_main, NULL);
		g_main_loop_run(NULL);
	}

	nfc_manager_set_activation_changed_cb(on_nfc_activation_changed, NULL);
...
}

 

Responses

2 Replies
daniel kim

안녕하세요..

nfc manager초기화가 완료될 때까지 1초가량 대기하도록 SDK의 help에 아래와 같은 설명이 있습니다.

  * After calling the nfc_manager_initialize() function run gmainloop to wait for the result of the initialization. It is closed when the time set in the g_timeout_add function elapses. This time is in milliseconds so the timeout_func is called after 1 second passes.

아래 function 대신에 usleep(1000*1000)을 넣고 실행해봤는데, error없이 callback만 호출이 안되는 것 같네요..

    g_timeout_add(1000, timeout_func_main, NULL);
    g_main_loop_run(NULL);

Tizen SDK에는 api가 지원되는 것으로 나와있으나 Gear S2와 같은 실제 제품에서는 지원하지 않는 것이 아닌가 생각됩니다.

 

 


 

Jeongsu Kim

알려주신 코드에 있는 g_main_loop_run 이런 함수는 안쓰셔도 될 것 같습니다. 애초에 이런 방식으로 동작해야 하는 api라면 좀 문제가 있다고 생각합니다.

저도 말씀하신 것처럼 nfc_manager_set_activation_changed_cb() 로 설정한 callback이 동작하지 않는 것을 확인 했습니다.

 

그리고 nfc_manager_is_activated() 가 현재 상태값을 알려주는데 마찬가지로 매번 같은 값만 return 합니다. (처음 activated면 계속 activated, 처음에 deactivated면 계속 deactivated)

아무래도 상태값을 얻어오는 동작에 문제가 있어 보입니다.