Как обрабатывать аппаратную кнопку "Назад" на платформе Tizen с помощью библиотеки EFL

Я использую библиотеку EFL для разработки приложений для платформы Tizen. Мне нужно реализовать обработчик событий для аппаратной кнопки "Назад".

В нативном API Tizen это делается довольно просто. Но я понятия не имею, как я могу сделать это в библиотеке EFL.

Я попытался сделать это следующим образом:

evas_object_event_callback_add( obj, EVAS_CALLBACK_KEY_DOWN, on_key_down, NULL );

Но это не работает.

Кто-нибудь может мне помочь?

4 ответа

Решение

Вместо EVAS_CALLBACK_KEY_DOWNandevas_object_event_callback_add () `,

  • использование ea_object_event_callback_add
  • использование EA_CALLBACK_BACK для кнопки назад
  • а также EA_CALLBACK_MORE для кнопки меню, но вам нужно включить один заголовочный файл, к сожалению, я забыл имя файла заголовка что-то вроде efl-util.h или что-то, вы можете сделать поиск в файлах заголовка

Пытаться

Ecore_Event_Handler *handler;
handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, hardware_key_down_cb, NULL);

В функции обратного вызова hardware_key_down_cb() проверьте имя ключа 'XF86Stop' Ecore_Event_Key для обработки события возврата ключа.

AFAIK дело в том, что EFL использует очереди для обработки событий. Это означает, что обратные вызовы вызываются один за другим: первый должен возвращать PASS_ON (или что-то еще) для следующего обратного вызова для того же события, которое будет запущено.

Таким образом, может быть другой обратный вызов, который не разрешает отправку события.

Используйте eext_object_event_callback_add(Evas_Object * obj,eext_callback_type type,callback_fun,NULL) и в функции обратного вызова вы можете написать свое требование

Другие вопросы по тегам