0

在 Tizen Wearable 上,有一个通用应用程序的流程:

  1. 应用程序由用户启动
  2. 屏幕关闭(用户无活动超时),onPause称为
  3. 应用程序被放入最近(当屏幕重新打开时,应用程序不再可见)

但是还有另一种情况:

  1. 应用程序由用户启动
  2. 屏幕关闭(用户无活动超时),onPause称为
  3. 屏幕重新打开(来自用户的活动):应用程序仍然可见,已onResume调用。

是否有可能以某种方式检测/知道屏幕重新打开后我的应用程序是否不可见?

onPause不可靠,因为它在屏幕关闭后立即调用。我是否可以注册任何其他信号/事件来检测我的应用程序是否真的被放入了某种背景(最近列表)?

4

2 回答 2

0

当您的应用程序如下所示时,您可以获得显示更改事件(例如 LCD On/Off)。

static void _display_state_change_cb(void *data, Evas_Object *o, void *ev_info)
{
    Evas_Object *win = (Evas_Object*) data;
    Elm_Win_Aux_Message *msg = ev_info;
    const char *key, *val;

    key = elm_win_aux_msg_key_get(win, msg);
    val = elm_win_aux_msg_val_get(win, msg);
    if (!strcmp(key, "dpms_wm"))
    {
        if (!strcmp(val, "off"))
        {
            /* Display Off. Do Something */
        }
    }
}

...
evas_object_smart_callback_add(win, "aux,msg,received", _display_state_change_cb, win);

仅供参考,如果不可见,您的应用程序窗口不会收到此消息。

于 2021-04-06T05:56:58.670 回答
0

您能否解释一下“应用程序已放入最近的应用程序(屏幕重新打开时,应用程序不再可见) ”是什么?

据我所知,屏幕关闭后20秒后,主屏幕应用程序将位于可穿戴设备的窗口堆栈顶部。我认为这与此有关。如果不是,请更详细地描述场景。

并且,如果您想监听显示状态的事件,请查看以下 API 参考: https ://samsung.github.io/TizenFX/latest/api/Tizen.System.Display.html https://docs。 tizen.org/application/native/api/wearable/5.5/group__CAPI__SYSTEM__DEVICE__DISPLAY__MODULE.html

屏幕打开后,如果您的应用程序存在于窗口堆栈的顶部,它将是可见的。

于 2021-04-05T06:36:48.437 回答