// uapi_button_register_event_cb(func_button_callback_vendor_down_long_press_5s, BUTTON3_LONGPRESS_5S);
// 注册 FUNC 键长按2秒事件
- int32_t ret = uapi_button_register_event_cb(HandleFuncKeyLongPressCallBack, BUTTON1_LONGPRESS_2S);
+ int32_t ret = uapi_button_register_event_cb(HandleFuncKeyLongPressCallBack, BUTTON1_LONGPRESS_1S);
if (ret != ERRCODE_SUCC)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Register FuncKey LongPress Event error, ret = %d", ret);
*/
bool ThunderBirdPresenter::HandlePowerKey(uint16_t keyState, int16_t currentView, int16_t currentSubView, int screenState)
{
- // 长按关机键
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: keyState=%d, screenState=%d, isDialogueing=%d, powerKeyPressed=%d",
+ keyState, screenState, isDialogueing, powerKeyPressed);
+
+ // 长按关机键 - 优先处理
if (keyState == InputDevice::STATE_LONG_PRESS) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: 长按关机键,进入关机界面");
+ powerKeyPressed = false; // 重置标志位
NativeAbility::GetInstance().SwitchSlice(VIEW_REBOOT);
return true;
}
- // 短按POWER键处理
+ // 按下电源键
if (keyState == InputDevice::STATE_PRESS) {
- if (screenState == 0) {
- // 息屏状态下短按:亮屏(由系统自动处理)
+ powerKeyPressed = true; // 设置按下标志位
+
+ if (screenState == 1) {
+ // 息屏状态下按下:亮屏(由系统自动处理)
return true;
- } else if (screenState == 1) {
- // 亮屏状态下短按:息屏
+ }
+ }
+
+ // 松开电源键
+ //判断是否亮屏
+ if (keyState == InputDevice::STATE_RELEASE) {
+ if (!powerKeyPressed) {
+ return true;
+ }
+
+ powerKeyPressed = false; // 重置标志位
+
+ if (screenState == 0 && isDialogueing == false) {//对话模式下无效
+ // 亮屏状态下松开:息屏
const power_display_svr_api_t *display_api = power_display_svr_get_api();
if (display_api && display_api->get_screen_state() == SCREEN_ON) {
display_api->turn_off_screen();