From: dxy15521469561 <1731678236@qq.com> Date: Sat, 6 Jul 2024 07:35:57 +0000 (+0800) Subject: K01: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c335d0fc1ef25fb75362ec0586518bbfebf091dc;p=mirrors%2FASR1603_G5.git K01: 优化 --- diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile index 0db46bb4..034c2808 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile @@ -1008,11 +1008,9 @@ frozen_mpy_list = $(BUILD)/_boot.mpy \ $(BUILD)/ntptime.mpy \ $(BUILD)/request.mpy \ $(BUILD)/log.mpy \ - $(BUILD)/aLiYun.mpy \ $(BUILD)/hmac.mpy \ $(BUILD)/hashlib.mpy \ $(BUILD)/base64.mpy \ - $(BUILD)/TenCentYun.mpy \ $(BUILD)/file_sha256.mpy \ $(BUILD)/checksum.mpy \ $(BUILD)/checkNet.mpy \ @@ -1058,7 +1056,10 @@ frozen_mpy_list = $(BUILD)/_boot.mpy \ $(BUILD)/versions.mpy \ $(BUILD)/copy.mpy \ $(BUILD)/types.mpy \ - $(BUILD)/ai.mpy + $(BUILD)/ai.mpy\ + $(BUILD)/ui_video.mpy + + ifeq ($(strip $(BOARD)),$(filter $(strip $(BOARD)),EC800MCN_LE_VOLVGL)) frozen_mpy_list += $(BUILD)/CMCC_DM.mpy diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py index 639dae6c..5b476e44 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py @@ -177,25 +177,52 @@ al_talk_end_screen_cancel_bt.set_size(44, LCD_SIZE_H-96) al_talk_end_screen_cancel_bt.set_pos(0,0) al_talk_end_screen_cancel_bt.add_flag(lv.obj.FLAG.CLICKABLE) -al_talk_end_screen_icon2 = lv.img(AI_talk_end_bt_screen) + +al_talk_end_screen_icon2 = lv.btn(AI_talk_end_bt_screen) +al_talk_end_screen_icon2.set_pos(int(44),int(5)) al_talk_end_screen_icon2.set_size(80,26) -al_talk_end_screen_icon2.set_pos(44,5) -al_talk_end_screen_icon2.add_flag(lv.obj.FLAG.CLICKABLE) -al_talk_end_screen_icon2.set_src("U:/static/AI/ai_result_bt.png") -al_talk_end_screen_icon2.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -AI_press_label_bt = lv.label(AI_talk_end_bt_screen) -AI_press_label_bt.set_text(" ") -AI_press_label_bt.set_size(88, LCD_SIZE_H-96) -AI_press_label_bt.set_pos(44,0) -AI_press_label_bt.add_flag(lv.obj.FLAG.CLICKABLE) - -AI_press_label = lv.label(al_talk_end_screen_icon2) -AI_press_label.set_text("继续对话") -AI_press_label.set_size(80, 20) -AI_press_label.set_pos(0,4) -AI_press_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -AI_press_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_talk_end_screen_icon2.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +screen_btn_1_label = lv.label(al_talk_end_screen_icon2) +screen_btn_1_label.set_text("继续对话") +al_talk_end_screen_icon2.set_style_pad_all(0, lv.STATE.DEFAULT) +screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +style_screen_btn_1_main_main_default = lv.style_t() +style_screen_btn_1_main_main_default.init() +style_screen_btn_1_main_main_default.set_radius(10) +style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(0x19,0x19,0x19)) +style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19)) +style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_btn_1_main_main_default.set_bg_opa(255) +style_screen_btn_1_main_main_default.set_border_color(lv.color_make(0x19,0x19,0x19)) +style_screen_btn_1_main_main_default.set_border_width(0) +style_screen_btn_1_main_main_default.set_border_opa(255) +style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) +style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) +style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_talk_end_screen_icon2.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# al_talk_end_screen_icon2 = lv.img(AI_talk_end_bt_screen) +# al_talk_end_screen_icon2.set_size(80,26) +# al_talk_end_screen_icon2.set_pos(44,5) +# al_talk_end_screen_icon2.add_flag(lv.obj.FLAG.CLICKABLE) +# al_talk_end_screen_icon2.set_src("U:/static/AI/ai_result_bt.png") +# al_talk_end_screen_icon2.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# AI_press_label_bt = lv.label(AI_talk_end_bt_screen) +# AI_press_label_bt.set_text(" ") +# AI_press_label_bt.set_size(88, LCD_SIZE_H-96) +# AI_press_label_bt.set_pos(44,0) +# AI_press_label_bt.add_flag(lv.obj.FLAG.CLICKABLE) + +# AI_press_label = lv.label(al_talk_end_screen_icon2) +# AI_press_label.set_text("继续对话") +# AI_press_label.set_size(80, 20) +# AI_press_label.set_pos(0,4) +# AI_press_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# AI_press_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) style_green_screen = lv.style_t() style_green_screen.init() @@ -353,25 +380,52 @@ al_talk_screen_icon1.set_pos((LCD_SIZE_W-75)//2,45) al_talk_screen_icon1.set_src("U:/static/AI/AI_LISTEN_GIF001.png") al_talk_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) -al_talk_screen_icon = lv.img(AI_talk_screen) +# al_talk_screen_icon = lv.img(AI_talk_screen) +# al_talk_screen_icon.set_size(120,25) +# al_talk_screen_icon.set_pos((LCD_SIZE_W-120)//2,95) +# al_talk_screen_icon.set_src("U:/static/AI/ai_talk_bt.png") +# al_talk_screen_icon.add_flag(lv.obj.FLAG.CLICKABLE) +# al_talk_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# 0x37,0xbf,0x12 +al_talk_screen_icon = lv.btn(AI_talk_screen) +al_talk_screen_icon.set_pos(int(4),int(95)) al_talk_screen_icon.set_size(120,25) -al_talk_screen_icon.set_pos((LCD_SIZE_W-120)//2,95) -al_talk_screen_icon.set_src("U:/static/AI/ai_talk_bt.png") -al_talk_screen_icon.add_flag(lv.obj.FLAG.CLICKABLE) -al_talk_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -al_talk_screen_icon_btn = lv.label(AI_talk_screen) -al_talk_screen_icon_btn.set_text(" ") -al_talk_screen_icon_btn.set_size(LCD_SIZE_W, 38) -al_talk_screen_icon_btn.set_pos(0,90) -al_talk_screen_icon_btn.add_flag(lv.obj.FLAG.CLICKABLE) - -al_talk_screen_title4 = lv.label(al_talk_screen_icon) -al_talk_screen_title4.set_pos(0, 3) -al_talk_screen_title4.set_size(120, 33) -al_talk_screen_title4.set_text("开始对话") -al_talk_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -al_talk_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_talk_screen_icon.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +screen_btn_1_label = lv.label(al_talk_screen_icon) +screen_btn_1_label.set_text("开始对话") +al_talk_screen_icon.set_style_pad_all(0, lv.STATE.DEFAULT) +screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +style_screen_btn_1_main_main_default = lv.style_t() +style_screen_btn_1_main_main_default.init() +style_screen_btn_1_main_main_default.set_radius(20) +style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(0x37,0xbf,0x12)) +style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(0x37,0xbf,0x12)) +style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_btn_1_main_main_default.set_bg_opa(255) +style_screen_btn_1_main_main_default.set_border_color(lv.color_make(0x37,0xbf,0x12)) +style_screen_btn_1_main_main_default.set_border_width(0) +style_screen_btn_1_main_main_default.set_border_opa(255) +style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) +style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) +style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_talk_screen_icon.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# al_talk_screen_icon_btn = lv.label(AI_talk_screen) +# al_talk_screen_icon_btn.set_text(" ") +# al_talk_screen_icon_btn.set_size(LCD_SIZE_W, 38) +# al_talk_screen_icon_btn.set_pos(0,90) +# al_talk_screen_icon_btn.add_flag(lv.obj.FLAG.CLICKABLE) + +# al_talk_screen_title4 = lv.label(al_talk_screen_icon) +# al_talk_screen_title4.set_pos(0, 3) +# al_talk_screen_title4.set_size(120, 33) +# al_talk_screen_title4.set_text("开始对话") +# al_talk_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# al_talk_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) #没有网络数据 AI_no_net_screen = lv.obj(AI_screen) @@ -411,19 +465,46 @@ al_no_sim_popup_screen_title3.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) al_no_sim_popup_screen_title3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -al_no_sim_popup_screen_icon1 = lv.img(AI_no_net_screen) +al_no_sim_popup_screen_icon1 = lv.btn(AI_no_net_screen) +al_no_sim_popup_screen_icon1.set_pos(int(4),int(95)) al_no_sim_popup_screen_icon1.set_size(120,25) -al_no_sim_popup_screen_icon1.set_pos((LCD_SIZE_W-120)//2,96) -al_no_sim_popup_screen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") -al_no_sim_popup_screen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) -al_no_sim_popup_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -al_no_sim_popup_screen_title4 = lv.label(al_no_sim_popup_screen_icon1) -al_no_sim_popup_screen_title4.set_pos(0, 4) -al_no_sim_popup_screen_title4.set_size(120, 33) -al_no_sim_popup_screen_title4.set_text("确定") -al_no_sim_popup_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -al_no_sim_popup_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_no_sim_popup_screen_icon1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +al_no_sim_popup_screen_icon1_label = lv.label(al_no_sim_popup_screen_icon1) +al_no_sim_popup_screen_icon1_label.set_text("确定") +al_no_sim_popup_screen_icon1.set_style_pad_all(0, lv.STATE.DEFAULT) +al_no_sim_popup_screen_icon1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +al_no_sim_popup_screen_icon1_label_default = lv.style_t() +al_no_sim_popup_screen_icon1_label_default.init() +al_no_sim_popup_screen_icon1_label_default.set_radius(20) +al_no_sim_popup_screen_icon1_label_default.set_bg_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +al_no_sim_popup_screen_icon1_label_default.set_bg_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_border_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_border_width(0) +al_no_sim_popup_screen_icon1_label_default.set_border_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_text_color(lv.color_make(0xff,0xff,0xff)) +al_no_sim_popup_screen_icon1_label_default.set_text_font(lv.K01_font_16_ALL) +al_no_sim_popup_screen_icon1_label_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_no_sim_popup_screen_icon1.add_style(al_no_sim_popup_screen_icon1_label_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + +# al_no_sim_popup_screen_icon1 = lv.img(AI_no_net_screen) +# al_no_sim_popup_screen_icon1.set_size(120,25) +# al_no_sim_popup_screen_icon1.set_pos((LCD_SIZE_W-120)//2,96) +# al_no_sim_popup_screen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") +# al_no_sim_popup_screen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) +# al_no_sim_popup_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# al_no_sim_popup_screen_title4 = lv.label(al_no_sim_popup_screen_icon1) +# al_no_sim_popup_screen_title4.set_pos(0, 4) +# al_no_sim_popup_screen_title4.set_size(120, 33) +# al_no_sim_popup_screen_title4.set_text("确定") +# al_no_sim_popup_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# al_no_sim_popup_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) #正在聆听 AI_listen_screen = lv.obj(AI_screen) @@ -512,26 +593,52 @@ al_think_screen_icon.set_src("U:/static/AI/AI_THINK001.png") al_think_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) -al_think_screen_icon1 = lv.img(AI_think_screen) +al_think_screen_icon1 = lv.btn(AI_think_screen) +al_think_screen_icon1.set_pos(int(4),int(95)) al_think_screen_icon1.set_size(120,25) -al_think_screen_icon1.set_pos((LCD_SIZE_W-120)//2,95) -al_think_screen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") -al_think_screen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) -al_think_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -al_think_screen_icon1_bt = lv.label(AI_think_screen) -al_think_screen_icon1_bt.set_text(" ") -al_think_screen_icon1_bt.set_size(120, 38) -al_think_screen_icon1_bt.set_pos(0,90) -al_think_screen_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) - - -al_think_screen_title4 = lv.label(al_think_screen_icon1) -al_think_screen_title4.set_pos(0, 3) -al_think_screen_title4.set_size(120, 33) -al_think_screen_title4.set_text("取消") -al_think_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -al_think_screen_title4.add_style(style_font_youyuan_ai_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_think_screen_icon1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +al_no_sim_popup_screen_icon1_label = lv.label(al_think_screen_icon1) +al_no_sim_popup_screen_icon1_label.set_text("取消") +al_think_screen_icon1.set_style_pad_all(0, lv.STATE.DEFAULT) +al_no_sim_popup_screen_icon1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +al_no_sim_popup_screen_icon1_label_default = lv.style_t() +al_no_sim_popup_screen_icon1_label_default.init() +al_no_sim_popup_screen_icon1_label_default.set_radius(20) +al_no_sim_popup_screen_icon1_label_default.set_bg_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +al_no_sim_popup_screen_icon1_label_default.set_bg_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_border_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_border_width(0) +al_no_sim_popup_screen_icon1_label_default.set_border_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_text_color(lv.color_make(253, 82, 19)) +al_no_sim_popup_screen_icon1_label_default.set_text_font(lv.K01_font_16_ALL) +al_no_sim_popup_screen_icon1_label_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_think_screen_icon1.add_style(al_no_sim_popup_screen_icon1_label_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# al_think_screen_icon1 = lv.img(AI_think_screen) +# al_think_screen_icon1.set_size(120,25) +# al_think_screen_icon1.set_pos((LCD_SIZE_W-120)//2,95) +# al_think_screen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") +# al_think_screen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) +# al_think_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# al_think_screen_icon1_bt = lv.label(AI_think_screen) +# al_think_screen_icon1_bt.set_text(" ") +# al_think_screen_icon1_bt.set_size(120, 38) +# al_think_screen_icon1_bt.set_pos(0,90) +# al_think_screen_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) + + +# al_think_screen_title4 = lv.label(al_think_screen_icon1) +# al_think_screen_title4.set_pos(0, 3) +# al_think_screen_title4.set_size(120, 33) +# al_think_screen_title4.set_text("取消") +# al_think_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# al_think_screen_title4.add_style(style_font_youyuan_ai_20, lv.PART.MAIN | lv.STATE.DEFAULT) # #连接超时 AI_connect_timerout_screen = lv.obj(AI_screen) @@ -571,25 +678,51 @@ al_connect_timerout_title3.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) al_connect_timerout_title3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -al_connect_timerout_icon1 = lv.img(AI_connect_timerout_screen) +al_connect_timerout_icon1 = lv.btn(AI_connect_timerout_screen) +al_connect_timerout_icon1.set_pos(int(4),int(95)) al_connect_timerout_icon1.set_size(120,25) -al_connect_timerout_icon1.set_pos((LCD_SIZE_W-120)//2,96) -al_connect_timerout_icon1.set_src("U:/static/AI/ai_confirm_bt.png") -al_connect_timerout_icon1.add_flag(lv.obj.FLAG.CLICKABLE) -al_connect_timerout_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -al_connect_timerout_icon1_bt = lv.label(AI_connect_timerout_screen) -al_connect_timerout_icon1_bt.set_text(" ") -al_connect_timerout_icon1_bt.set_size(120, 38) -al_connect_timerout_icon1_bt.set_pos(0,90) -al_connect_timerout_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) - -al_connect_timerout_title4 = lv.label(al_connect_timerout_icon1) -al_connect_timerout_title4.set_pos(0, 4) -al_connect_timerout_title4.set_size(120, 33) -al_connect_timerout_title4.set_text("确定") -al_connect_timerout_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -al_connect_timerout_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_connect_timerout_icon1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +al_no_sim_popup_screen_icon1_label = lv.label(al_connect_timerout_icon1) +al_no_sim_popup_screen_icon1_label.set_text("确定") +al_connect_timerout_icon1.set_style_pad_all(0, lv.STATE.DEFAULT) +al_no_sim_popup_screen_icon1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +al_no_sim_popup_screen_icon1_label_default = lv.style_t() +al_no_sim_popup_screen_icon1_label_default.init() +al_no_sim_popup_screen_icon1_label_default.set_radius(20) +al_no_sim_popup_screen_icon1_label_default.set_bg_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +al_no_sim_popup_screen_icon1_label_default.set_bg_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_border_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_border_width(0) +al_no_sim_popup_screen_icon1_label_default.set_border_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_text_color(lv.color_make(0xff,0xff,0xff)) +al_no_sim_popup_screen_icon1_label_default.set_text_font(lv.K01_font_16_ALL) +al_no_sim_popup_screen_icon1_label_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_connect_timerout_icon1.add_style(al_no_sim_popup_screen_icon1_label_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# al_connect_timerout_icon1 = lv.img(AI_connect_timerout_screen) +# al_connect_timerout_icon1.set_size(120,25) +# al_connect_timerout_icon1.set_pos((LCD_SIZE_W-120)//2,96) +# al_connect_timerout_icon1.set_src("U:/static/AI/ai_confirm_bt.png") +# al_connect_timerout_icon1.add_flag(lv.obj.FLAG.CLICKABLE) +# al_connect_timerout_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# al_connect_timerout_icon1_bt = lv.label(AI_connect_timerout_screen) +# al_connect_timerout_icon1_bt.set_text(" ") +# al_connect_timerout_icon1_bt.set_size(120, 38) +# al_connect_timerout_icon1_bt.set_pos(0,90) +# al_connect_timerout_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) + +# al_connect_timerout_title4 = lv.label(al_connect_timerout_icon1) +# al_connect_timerout_title4.set_pos(0, 4) +# al_connect_timerout_title4.set_size(120, 33) +# al_connect_timerout_title4.set_text("确定") +# al_connect_timerout_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# al_connect_timerout_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) #未检测到录音 AI_not_listen_text_screen = lv.obj(AI_screen) AI_not_listen_text_screen.set_pos(0, 0) @@ -628,25 +761,51 @@ al_not_listen_title3.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) al_not_listen_title3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -al_not_listen_icon1 = lv.img(AI_not_listen_text_screen) +al_not_listen_icon1 = lv.btn(AI_not_listen_text_screen) +al_not_listen_icon1.set_pos(int(4),int(95)) al_not_listen_icon1.set_size(120,25) -al_not_listen_icon1.set_pos((LCD_SIZE_W-120)//2,96) -al_not_listen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") -al_not_listen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) -al_not_listen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -al_not_listen_icon1_bt = lv.label(AI_not_listen_text_screen) -al_not_listen_icon1_bt.set_text(" ") -al_not_listen_icon1_bt.set_size(120, 38) -al_not_listen_icon1_bt.set_pos(0,90) -al_not_listen_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) - -al_not_listen_title4 = lv.label(al_not_listen_icon1) -al_not_listen_title4.set_pos(0, 4) -al_not_listen_title4.set_size(120, 33) -al_not_listen_title4.set_text("确定") -al_not_listen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -al_not_listen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +al_not_listen_icon1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +al_no_sim_popup_screen_icon1_label = lv.label(al_not_listen_icon1) +al_no_sim_popup_screen_icon1_label.set_text("确定") +al_not_listen_icon1.set_style_pad_all(0, lv.STATE.DEFAULT) +al_no_sim_popup_screen_icon1_label.align(lv.ALIGN.CENTER,0,0) +# create style style_screen_btn_1_main_main_default +al_no_sim_popup_screen_icon1_label_default = lv.style_t() +al_no_sim_popup_screen_icon1_label_default.init() +al_no_sim_popup_screen_icon1_label_default.set_radius(20) +al_no_sim_popup_screen_icon1_label_default.set_bg_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +al_no_sim_popup_screen_icon1_label_default.set_bg_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_border_color(lv.color_make(0x19,0x19,0x19)) +al_no_sim_popup_screen_icon1_label_default.set_border_width(0) +al_no_sim_popup_screen_icon1_label_default.set_border_opa(255) +al_no_sim_popup_screen_icon1_label_default.set_text_color(lv.color_make(0xff,0xff,0xff)) +al_no_sim_popup_screen_icon1_label_default.set_text_font(lv.K01_font_16_ALL) +al_no_sim_popup_screen_icon1_label_default.set_text_align(lv.TEXT_ALIGN.CENTER) + +# add style for screen_btn_1 +al_not_listen_icon1.add_style(al_no_sim_popup_screen_icon1_label_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# al_not_listen_icon1 = lv.img(AI_not_listen_text_screen) +# al_not_listen_icon1.set_size(120,25) +# al_not_listen_icon1.set_pos((LCD_SIZE_W-120)//2,96) +# al_not_listen_icon1.set_src("U:/static/AI/ai_confirm_bt.png") +# al_not_listen_icon1.add_flag(lv.obj.FLAG.CLICKABLE) +# al_not_listen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# al_not_listen_icon1_bt = lv.label(AI_not_listen_text_screen) +# al_not_listen_icon1_bt.set_text(" ") +# al_not_listen_icon1_bt.set_size(120, 38) +# al_not_listen_icon1_bt.set_pos(0,90) +# al_not_listen_icon1_bt.add_flag(lv.obj.FLAG.CLICKABLE) + +# al_not_listen_title4 = lv.label(al_not_listen_icon1) +# al_not_listen_title4.set_pos(0, 4) +# al_not_listen_title4.set_size(120, 33) +# al_not_listen_title4.set_text("确定") +# al_not_listen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# al_not_listen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) class AIScreen(Screen):#AI_GUI # NAME = "AI_success" @@ -716,32 +875,44 @@ class AIScreen(Screen):#AI_GUI self.scroll_timer_count = 0 self.play_flag = 0 self.play_flag_init = 0 - AI_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), + AI_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_talk_end_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_no_net_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_listen_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_think_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_connect_timerout_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + AI_not_listen_text_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), lv.EVENT.GESTURE, None) al_talk_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), lv.EVENT.SHORT_CLICKED, None) - al_talk_screen_icon_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), - lv.EVENT.SHORT_CLICKED, None) + # al_talk_screen_icon_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), + # lv.EVENT.SHORT_CLICKED, None) al_no_sim_popup_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) #无网络按钮 # al_listen_screen_icon_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 # al_listen_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 - al_think_screen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮 + # al_think_screen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮 al_think_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮 - al_connect_timerout_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,5)), lv.EVENT.SHORT_CLICKED, None) #连接超时 请重新对话按钮 + # al_connect_timerout_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,5)), lv.EVENT.SHORT_CLICKED, None) #连接超时 请重新对话按钮 al_connect_timerout_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,5)), lv.EVENT.SHORT_CLICKED, None) #连接超时 请重新对话按钮 al_talk_end_screen_cancel_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,6)), lv.EVENT.SHORT_CLICKED, None) #对话结束 取消对话按钮 al_talk_end_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,6)), lv.EVENT.SHORT_CLICKED, None) #对话结束 取消对话按钮 - AI_press_label_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,7)), lv.EVENT.SHORT_CLICKED, None) #对话结束 继续对话按钮 + # AI_press_label_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,7)), lv.EVENT.SHORT_CLICKED, None) #对话结束 继续对话按钮 al_talk_end_screen_icon2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,7)), lv.EVENT.SHORT_CLICKED, None) #对话结束 继续对话按钮 - al_not_listen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,8)), lv.EVENT.SHORT_CLICKED, None) + # al_not_listen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,8)), lv.EVENT.SHORT_CLICKED, None) al_not_listen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,8)), lv.EVENT.SHORT_CLICKED, None) AI_end_screen_list_screen2.add_event_cb(self.scroll_event_cb, lv.EVENT.SCROLL_END, None) AI_end_screen_list_screen.add_event_cb(self.scroll_event_cb, lv.EVENT.SCROLL_END, None) @@ -819,10 +990,11 @@ class AIScreen(Screen):#AI_GUI AI_not_listen_text_screen.add_flag(lv.obj.FLAG.HIDDEN) # AI_talk_screen.clear_flag(lv.obj.FLAG.HIDDEN) # def upload_img(self,msg): - if msg == 1: - al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_start.png") - else: - al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_stop.png") + if al_talk_end_screen_icon1 != None: + if msg == 1: + al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_start.png") + else: + al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_stop.png") def talk_end_continue_cb(self,e):#连接超时确定按钮回调或者继续对话按钮 self.Close() @@ -914,6 +1086,7 @@ class AIScreen(Screen):#AI_GUI usys.print_exception(e) def page_change(self,dir,text_str):#翻页,dir: = 0跳转第一页,=1上一页,=2下一页,=3最后一页,最后的内容 + EventMesh.publish("system_sleep_rest")#防止黑屏 text_str_list = [] text_str_list_len = 0 while 1:#分割字符串,获取列表 @@ -1230,7 +1403,7 @@ class AIScreen(Screen):#AI_GUI def AI_init(self): self.AI_audio_queue_thread_id = _thread.start_new_thread(self.AI_audio_queue_thread, ()) self.AI_send_data_queue_thread_id = _thread.start_new_thread(self.AI_send_data_queue_thread, ()) - self._1S_timer.start(1000,1,self._1S_timer_cb) + #按下录音 @@ -1373,6 +1546,7 @@ class AIScreen(Screen):#AI_GUI self.Close() print("talking3") self.AI_init() + self._1S_timer.start(1000,1,self._1S_timer_cb) self.AI_client_tts_timer.start(1000,1,self.AI_client_tts_timer_cb) except Exception as e: usys.print_exception(e) @@ -1416,9 +1590,13 @@ class AIScreen(Screen):#AI_GUI else: pass def _1S_timer_cb(self,*argc): - EventMesh.publish("system_sleep_rest")#防止黑屏 + if EventMesh.publish("get_lcd_state") == 0: + self.lcd_off() + return + # EventMesh.publish("system_sleep_rest")#防止黑屏 if self.scroll_timer_count > 0: self.scroll_timer_count-=1 + #定时器 def record_timer_cb(self,*argc): EventMesh.publish("system_sleep_rest")#防止黑屏 @@ -1932,6 +2110,19 @@ class AIScreen(Screen):#AI_GUI except Exception as e: print("AI_audio_queue_thread:ERROR:") usys.print_exception(e) + + def lcd_off(self): + self.play_flag = 0 + self.aud.stopPlayStream() + self.aud.stopAll() + EventMesh.publish("publish_message_event_ui",{"func":self.upload_img,"data":0}) + self._1S_timer.stop() + + def lcd_on(self): + # self.play_flag = 1 + # EventMesh.publish("publish_message_event_ui",{"func":self.upload_img,"data":1}) + self._1S_timer.start(1000,1,self._1S_timer_cb) + def Close(self): try: #销毁线程 diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py index 77a42626..cad776ac 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -172,7 +172,7 @@ class WechatScreen(Screen): self.wechat_num = self.wechat_recode_list["num"] else : self.wechat_recode_list = {"num":0} - with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd: ujson.dump(self.wechat_recode_list,fd) # if self.wechat_num != 0: # with open("/ext/static/storage_file/wechat_record.json","r",encoding="utf-8") as fd:#音频文件记录 @@ -276,7 +276,7 @@ class WechatScreen(Screen): self.MXA_MSG = msg[0] self.wechat_recode_list = msg[1] self.wechat_num = self.wechat_recode_list["num"] - with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd: ujson.dump(self.wechat_recode_list,fd) #写编号 Wechat_log("set_wechat_data2:{} ".format(self.wechat_num)) diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/lcd.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/lcd.py index 29fbabe0..7973df44 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/lcd.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/lcd.py @@ -264,22 +264,35 @@ style_font_youyuan_40 = lv.style_t() style_font_youyuan_40.init() style_font_youyuan_40.set_text_color(lv.color_make(0xff, 0xff, 0xff)) style_font_youyuan_40.set_text_font(lv.K01_font_16_ALL) + +style_img = lv.style_t() +style_img.init() +style_img.set_img_opa(255) #style_font_youyuan_40.set_text_font_v2("font_40.bin",40,0) lcd.lcd_display_on() utime.sleep_ms(2) lv.autoSleep(0) + power_on_screen = lv.obj() print("power_on_screen") power_on_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) -power_on_label = lv.label(power_on_screen) -power_on_label.set_text("系统初始化中") -power_on_label.set_pos(0, 50) -power_on_label.set_size(128, 20) -power_on_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -power_on_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) +poweron_img = lv.img(power_on_screen) +poweron_img.set_size(80,80) +poweron_img.set_pos(24,24) +poweron_img.set_src("U:/static/AI_MAIN_ICON.png") +# screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE) +poweron_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + +# power_on_label = lv.label(power_on_screen) +# power_on_label.set_text("WELCOME") +# power_on_label.set_pos(0, 50) +# power_on_label.set_size(128, 20) +# power_on_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# power_on_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) print("power_on_screen init...") diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py index 7ce11f40..0d50661c 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py @@ -80,7 +80,7 @@ def main_init(): print("init5:{}".format(utime.localtime())) ui.add_screen(MainMenuScreen()) - ui.add_screen(_ui.deletealbumScreen()) + ui.add_screen(_ui.PopupScreen()) ui.add_screen(_ui.PhoneScreen()) ui.add_screen(_ui.HeartrateScreen()) @@ -94,16 +94,13 @@ def main_init(): ui.add_screen(_ui.Spo2Screen()) ui.add_screen(_ui.TemperatureScreen()) ui.add_screen(_ui.ContactsScreen()) - ui.add_screen(_ui.cameraVdieoAnswerScreen()) - ui.add_screen(_ui.vedioCallingCallScreen()) - ui.add_screen(_ui.VedioShowScreen()) - ui.add_screen(_ui.videoOutCallScreen()) + from appWechat import WechatScreen,NewWechatPopupScreen ui.add_screen(WechatScreen()) from alarm import ClkListScreen,ClockManager,PopupAlarmScreen # from ui_health import HealthScreen - from calculator import calculatorScreen + ui.add_screen(ClkListScreen()) ui.add_screen(_ui.CountdownEndScreen()) # ui.add_screen(NewEditClk()) @@ -126,11 +123,6 @@ def main_init(): ui.add_screen(_ui.DialingScreen()) ui.add_screen(_ui.CallLogScreen()) ui.add_screen(_ui.UIFINDScreen()) - # from usr.sleep_test import MsgDetailScreen - # try: - # ui.add_screen(MsgDetailScreen()) - # except Exception as e: - # usys.print_exception(e) ui.add_screen(_ui.MsgDetailScreen()) ui.add_screen(_ui.IncomingCallScreen()) ui.add_screen(_ui.OnCallScreen()) @@ -158,21 +150,31 @@ def main_init(): ui.add_screen(_ui.RemoveMessageScreen()) ui.add_screen(_ui.keyboardScreen()) ui.add_screen(_ui.classMgrPopupScreen()) - ui.add_screen(calculatorScreen()) - ui.add_screen(_ui.cameraScreen()) - ui.add_screen(_ui.cameraalbumScreen()) - ui.add_screen(_ui.albumPreviewScreen()) - ui.add_screen(_ui.cameraFullScreen()) ui.add_screen(_ui.restore_confirmScreen()) ui.add_screen(_ui.down_Screen()) ui.add_screen(_ui.up_Screen()) - ui.add_screen(_ui.videolistScreen()) - ui.add_screen(_ui.VdieoVoiceScreen()) - ui.add_screen(_ui.VoiceShowScreen()) - ui.add_screen(_ui.voiceInCallScreen()) - ui.add_screen(_ui.videoModeScreen()) - ui.add_screen(_ui.voiceOutCallScreen()) - + try: + import ui_video as _ui_video + ui.add_screen(_ui_video.deletealbumScreen()) + ui.add_screen(_ui_video.vedioCallingCallScreen()) + ui.add_screen(_ui_video.VedioShowScreen()) + ui.add_screen(_ui_video.videoOutCallScreen()) + ui.add_screen(_ui_video.cameraScreen()) + ui.add_screen(_ui_video.cameraalbumScreen()) + ui.add_screen(_ui_video.albumPreviewScreen()) + ui.add_screen(_ui_video.cameraFullScreen()) + ui.add_screen(_ui_video.videolistScreen()) + ui.add_screen(_ui_video.VoiceShowScreen()) + ui.add_screen(_ui_video.voiceInCallScreen()) + ui.add_screen(_ui_video.videoModeScreen()) + ui.add_screen(_ui_video.voiceOutCallScreen()) + except Exception as e: + usys.print_exception(e) + try: + from calculator import calculatorScreen + ui.add_screen(calculatorScreen()) + except Exception as e: + usys.print_exception(e) # try: # from aigcdial import CreateScreen,aigcStyleLIstScreen,aigcMainLIstScreen,aigcShowNewImgScreen # ui.add_screen(CreateScreen()) @@ -213,21 +215,11 @@ def main_init(): print("init8:{}".format(utime.localtime())) try: - import ai ui.add_screen(ai.AIScreen()) - except Exception as e: usys.print_exception(e) - # import ai - # ui.add_screen(ai.AIScreen()) - - #from ui_WatchFaceScreen import WatchFaceScreen - - - # from test_sms import HRSTART_ProtoCol,getHrTimeManager,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,getBrightnessManager,\ - # getStorageDataManager print("init9:{}".format(utime.localtime())) #from usr.ui_wechat import WechatScreen,TK_ProtoCol @@ -241,36 +233,36 @@ def main_init(): # .append_manager(mgr.CountdownManager()) \ app.append_manager(mgr.vedioInforManager()) app.append_manager(mgr.videoBookManager()) - app.append_manager(setkeyboardManager()) - app.append_manager(ConfigStoreManager()) + app.append_manager(mgr.setkeyboardManager()) + app.append_manager(mgr.ConfigStoreManager()) app.append_manager(NetManager()) - app.append_manager(LocationManager()) - app.append_manager(AddrBookManager()) + app.append_manager(mgr.LocationManager()) + app.append_manager(mgr.AddrBookManager()) app.append_manager(mgr.MsgManager()) - app.append_manager(MsgdetailManager()) + app.append_manager(mgr.MsgdetailManager()) app.append_manager(mgr.CallLogManager()) app.append_manager(mgr.getWeatherDataManager()) - app.append_manager(PhoneCallingManager()) + app.append_manager(mgr.PhoneCallingManager()) app.append_manager(ClockManager()) - app.append_manager(gethistoryDataManager()) - app.append_manager(getHrTimeManager()) - app.append_manager(getBrightnessManager()) - app.append_manager(getUpLoadDataManager()) - app.append_manager(getVolumSizeManager()) - app.append_manager(getTempTimeManager()) - app.append_manager(getplayAudiodStateManager()) - app.append_manager(getLowBatManager()) - app.append_manager(getBootOffManager()) - app.append_manager(getOldTimeManager()) - app.append_manager(getSosFlagManager()) - app.append_manager(CountdownManager()) - app.append_manager(sosInfoCallManager()) - app.append_manager(testSmsSetIPManager()) - app.append_manager(setclassTimeManager()) + app.append_manager(mgr.gethistoryDataManager()) + app.append_manager(mgr.getHrTimeManager()) + app.append_manager(mgr.getBrightnessManager()) + app.append_manager(mgr.getUpLoadDataManager()) + app.append_manager(mgr.getVolumSizeManager()) + app.append_manager(mgr.getTempTimeManager()) + app.append_manager(mgr.getplayAudiodStateManager()) + app.append_manager(mgr.getLowBatManager()) + app.append_manager(mgr.getBootOffManager()) + app.append_manager(mgr.getOldTimeManager()) + app.append_manager(mgr.getSosFlagManager()) + app.append_manager(mgr.CountdownManager()) + app.append_manager(mgr.sosInfoCallManager()) + app.append_manager(mgr.testSmsSetIPManager()) + app.append_manager(mgr.setclassTimeManager()) app.append_manager(mgr.setCallStateManager()) - app.append_manager(cameraAlbumManager()) - app.append_manager(AddPPManager()) - app.append_manager(simFactoryManager()) + app.append_manager(mgr.cameraAlbumManager()) + app.append_manager(mgr.AddPPManager()) + app.append_manager(mgr.simFactoryManager()) print("init21:{}".format(utime.localtime())) print("init11:{}".format(utime.localtime())) diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py index fd384fd9..e023d3ad 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py @@ -503,6 +503,9 @@ def voice_callback(args): WL_timer.start(30000, 0, WL_timer_cb) else: print("voice_callback:不在白名单中,挂断") + EventMesh.publish("set_call_state",0) + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) voiceCall.callEnd() return EventMesh.publish("set_call_state",2)#设置 @@ -536,8 +539,11 @@ def voice_callback(args): EventMesh.publish("set_interrup_incall",0) EventMesh.publish("set_UI_high_priority",0) - EventMesh.publish("set_call_state",0)#设置通话状态为0 - EventMesh.publish("return_prev_screen") + + if EventMesh.publish("get_call_state") != 0: + EventMesh.publish("set_call_state",0)#设置通话状态为0 + EventMesh.publish("return_prev_screen") + # EventMesh.publish("load_screen", {"screen": "main_menu"}) EventMesh.publish("set_sos_info_call") @@ -547,10 +553,17 @@ def voice_callback(args): elif args[0] == 13: print('voicecall is waiting, PhoneNO.: ', args[6]) elif args[0] == 14: + print('voicecall dialing, PhoneNO.: ', args[6],EventMesh.publish("get_phone_state")) + if EventMesh.publish("get_phone_state") == 0: + EventMesh.publish("set_call_state",0) + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + voiceCall.callEnd() + return EventMesh.publish("set_call_state",4)##设置通话状态 - print('voicecall dialing, PhoneNO.: ', args[6]) + EventMesh.publish("set_UI_high_priority",0) - EventMesh.publish("load_screen", {"screen": "dialing"}) + EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) elif args[0] == 15: print('voicecall alerting, PhoneNO.: ', args[6]) @@ -2567,7 +2580,7 @@ class gethistoryDataManager(Abstract): else: self.read_histroy_temp_data.append({"timeSec": time_tmp, "temp": self.temp_value}) - with open("/usr/static/storage_file/history_temp.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/history_temp.json","w+",encoding="utf-8") as fd: ujson.dump(self.read_histroy_temp_data,fd) #print(self.read_histroy_temp_data) @@ -2600,7 +2613,7 @@ class gethistoryDataManager(Abstract): self.read_histroy_hr_data.append({"timeSec": time_tmp, "hr": self.oldHr}) - with open("/usr/static/storage_file/history_hr.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/history_hr.json","w+",encoding="utf-8") as fd: ujson.dump(self.read_histroy_hr_data,fd) #print(self.read_histroy_hr_data) @@ -2628,7 +2641,7 @@ class gethistoryDataManager(Abstract): else: self.read_histroy_spo2_data.append({"timeSec": time_tmp, "spo2": self.oldspo2}) - with open("/usr/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/history_spo2.json","w+",encoding="utf-8") as fd: ujson.dump(self.read_histroy_spo2_data,fd) #print(self.read_histroy_spo2_data) @@ -2895,7 +2908,7 @@ class getStorageDataManager(Abstract):#获取内存数据 #定位频率 class getUpLoadDataManager(Abstract):# def __init__(self): - self.upload_time = 1800 + self.upload_time = 3600 read_data = EventMesh.publish("get_storage_config","upload_time") if read_data != None: self.upload_time = read_data @@ -3365,7 +3378,7 @@ class cameraAlbumManager(Abstract):#保存相册数目 self.album_num = self.album_list["num"] else : self.album_list = {} - with open("/usr/static/storage_file/album_config.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/album_config.json","w+",encoding="utf-8") as fd: ujson.dump(self.album_list,fd) diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py index 05daaab5..1bf7ac87 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py @@ -797,7 +797,7 @@ class PHL_ProtoCol(ProtoCol): phonebook_oldtmp = phonebook_tmp # print("phonebook_oldtmp!!!:{}".format(str(phonebook_oldtmp))) # print("phonebook!!!:{}".format(str(phonebook))) - with open("/usr/static/storage_file/phonebook.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/phonebook.json","w+",encoding="utf-8") as fd: ujson.dump(phonebook,fd) print("创建电话簿") @@ -1899,7 +1899,7 @@ class revpp_ProtoCol(ProtoCol): phonebook_oldtmp = phonebook_tmp # print("pppbook_oldtmp!!!:{}".format(str(phonebook_oldtmp))) # print("phonebook!!!:{}".format(str(phonebook))) - # with open("/usr/static/storage_file/pplist.json","w",encoding="utf-8") as fd: + # with open("/usr/static/storage_file/pplist.json","w+",encoding="utf-8") as fd: # ujson.dump(phonebook,fd) # print("创建好友列表") @@ -2075,7 +2075,7 @@ class TK_ProtoCol(ProtoCol): EventMesh.publish("wechat_updata_list_show") # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num) path = "/usr/static/storage_file/{}.amr".format(wechat_num) - with open(path,"w") as fd: + with open(path,"w+") as fd: arm = bytearray() j = 0 for i in range(len(arm_data)): @@ -2204,7 +2204,7 @@ class TKS_ProtoCol(ProtoCol): EventMesh.publish("wechat_updata_list_show") # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num) path = "/usr/static/storage_file/{}.amr".format(wechat_num) - with open(path,"w") as fd: + with open(path,"w+") as fd: arm = bytearray() j = 0 for i in range(len(arm_data)): @@ -2504,12 +2504,30 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1) else: EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0) + videobook = EventMesh.publish("get_videobook_list") + datainfor = "" + if videobook != None: + check_json = videobook[0] + videobook_data = videobook[1] #视频通话列表 + phonebook_keys = [] + if videobook_data != {}: + phonebook_keys = sorted(videobook_data.keys()) + for i in range(len(phonebook_keys)): + id = phonebook_keys[i] + id_tmp = id[4:] + if str(id_tmp) == str(call_id): #在视频通话列表 + datainfor = videobook_data[id] + break + if len(datainfor) <= 0: + datainfor = str(call_id) + if int(call_type) == 1:#视频通话 - EventMesh.publish("load_screen", {"screen": "vedio_incall"}) + + EventMesh.publish("load_screen", {"screen": "vedio_incall","meta":str(datainfor)}) # EventMesh.publish("load_screen", {"screen": "vedio_incall","meta":"1"}) pass else: - EventMesh.publish("load_screen", {"screen": "voice_incall"}) + EventMesh.publish("load_screen", {"screen": "voice_incall","meta":str(datainfor)}) # EventMesh.publish("load_screen", {"screen": "vedio_incall","meta":"0"})#语音界面 pass @@ -2617,46 +2635,6 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 EventMesh.publish("close_jrtc_event",None) EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("return_prev_screen") - - - -#云米视频通话 -# [XT*YYYYYYYYYYYYYYY*LEN*JPREG] -# 实例: -# [XT*334588000000156*0004*JPREG] -# 平台回复: -# [XT*设备ID*LEN*JPREG,账号(整型)] -# 实例:[XT*334588000000156*0010*JPREG,1087654321] -# class JPREG_ProtoCol(ProtoCol):#登入注册 -# """""" -# TYPE = "JPREG" -# def send(self, event, msg): - -# # [XT*334588000000156*0005*WLKEY] -# send_data = EventMesh.publish("get_new_pid")+"*%s*0005*JPREG"%(self.imei) -# MD5_SIGN = self.pack_MD5_head(send_data) -# data = "[%s%s]"%(str(MD5_SIGN),send_data) -# # print("WLKEY:data:%s"%(data)) -# # print("WLKEY!!!!!!!!!!!!!") -# # 通过socket发送到服务器端 -# EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - -# def recv(self, event, msg): -# """ -# @param event: -# @param msg: 接收到的下行数据 -# """ -# # b'[SZKW*867387060319166*000A*KEYBRD]' -# print("JPREG!!!!!!!!!!!!!",msg) -# # EventMesh.publish(constants.PROTOCOL.JPREG_SEND) - -# (声网,佰锐的账号是整型) -# [XT*YYYYYYYYYYYYYYY*LEN*MEMBERS] -# 实例:[XT*334588000000156*0007*MEMBERS] -# 平台回复:[XT*设备ID*LEN*MEMBERS,账号1,昵称1,电话1,账号2,昵称2,电话2.....] -# 实例: -# [XT*334588000000156*003F*MEMBERS,d3e2f759f9d5af3858f3530,爸爸,13662313580,妈妈,555] -# 以上数据部分使用Unicode编码,最终上面示例传到服务端将是: class JMEMBERS_ProtoCol(ProtoCol):#获取账号列表 """""" @@ -2706,7 +2684,7 @@ class JMEMBERS_ProtoCol(ProtoCol):#获取账号列表 j+=1 print("videobook!!!:{}".format(str(videobook))) # print("phonebook!!!:{}".format(str(phonebook))) - with open("/usr/static/storage_file/videobook.json","w",encoding="utf-8") as fd: + with open("/usr/static/storage_file/videobook.json","w+",encoding="utf-8") as fd: ujson.dump(videobook,fd) print("创建视频通话账号") @@ -2714,119 +2692,7 @@ class JMEMBERS_ProtoCol(ProtoCol):#获取账号列表 EventMesh.publish("video_updata_list_show") # EventMesh.publish(constants.PROTOCOL.JMEMBERS_SEND) -# # [X*Y*LEN*CALLING,呼叫者id,会议id,通话类型,Token] - -# # 设备回复 -# # [X*Y*LEN*CALLING,音视频状态] -# # 音视频状态:为0表示正常可通讯状态,否则填上用音视频返回的状态码,比如200,如果未获取到返回状态码,则填1 -# class CALLING_ProtoCol(ProtoCol):#app发起视频通话 -# """""" -# TYPE = "CALLING" -# def send(self, event, msg): - -# # [XT*334588000000156*0005*WLKEY] -# send_data = EventMesh.publish("get_new_pid")+"*%s*0007*CALLING"%(self.imei) -# MD5_SIGN = self.pack_MD5_head(send_data) -# data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) -# print("CALLING:send data:%s"%(data)) -# # print("WLKEY!!!!!!!!!!!!!") -# # 通过socket发送到服务器端 -# EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - -# def recv(self, event, msg): -# """ -# @param event: -# @param msg: 接收到的下行数据 -# """ -# # b'[SZKW*867387060319166*000A*CALLING]' -# print("CALLING!!!!!!!!!!!!!",msg) -# msg = msg[1:-1] -# msg_tmp = msg.decode('ascii') -# msg_tmp_d = msg_tmp.split(',') -# call_id = msg_tmp_d[2]#id -# meet_id = msg_tmp_d[1]#会议id -# call_type = msg_tmp_d[3]#通话类型id -# tokens_data = "" -# # tokens_data = msg_tmp_d[4]#tokens -# EventMesh.publish("set_vedio_call_id",call_id)# -# EventMesh.publish("set_vedio_meet_id",meet_id)# -# EventMesh.publish("set_vedio_call_type", call_type)# -# EventMesh.publish("set_vedio_tokens_data", tokens_data)# - - -# # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])# -# EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1) -# EventMesh.publish("load_screen", {"screen": "vedio_incall"}) - -# # [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,呼叫者id,会议id/声网频道名(没有则留空,但位置保留),音频还是视频(0为音频,1为视频)] -# # 实例: -# # [XT*334588000000156*0007*RCALLING,d3e2f759f9d5af3858f3530b,,0] -# # 终端回复: -# # [XT*设备ID*LEN*RCALLING] -# # 实例:[XT*334588000000156*0009*RCALLING] -# # -# class RCALLING_ProtoCol(ProtoCol):#设备拒接接听 -# """""" -# TYPE = "RCALLING" -# def send(self, event, msg): - -# # [XT*334588000000156*0005*WLKEY] -# send_data = EventMesh.publish("get_new_pid")+"*%s*0008*RCALLING"%(self.imei) -# MD5_SIGN = self.pack_MD5_head(send_data) -# data = "[%s%s]"%(str(MD5_SIGN),send_data) -# print("RCALLING:send data:%s"%(data)) -# # print("WLKEY!!!!!!!!!!!!!") -# # 通过socket发送到服务器端 -# EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - -# def recv(self, event, msg): -# """ -# @param event: -# @param msg: 接收到的下行数据 -# """ -# # b'[SZKW*867387060319166*000A*RCALLING]' -# print("RCALLING!!!!!!!!!!!!!") -# EventMesh.publish(constants.PROTOCOL.RCALLING_SEND) - -# class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通话 -# """""" -# TYPE = "RINGING" -# def send(self, event, msg): - -# # [XT*334588000000156*0005*WLKEY] -# send_data = EventMesh.publish("get_new_pid")+"*%s*0007*RINGING"%(self.imei) -# MD5_SIGN = self.pack_MD5_head(send_data) -# data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) -# print("AGTALK:send data:%s"%(data)) -# # print("WLKEY!!!!!!!!!!!!!") -# # 通过socket发送到服务器端 -# EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - -# def recv(self, event, msg): -# """ -# @param event: -# @param msg: 接收到的下行数据 -# """ -# # b'[SZKW*876226002021444*007B*AGTALK,0,01lqlyqzzQHpfwv5g7jFVC2H6Ha2tHFpMlfSm5sd2uo7o55JEcc=OVxewje6MjP0NgEODwsLDwkJCwkLCA0NDQ==,8762260020214441701226895]' - -# # msg = msg[1:-1] -# # msg_tmp = msg.decode('ascii') -# # msg_tmp_d = msg_tmp.split(',') -# # call_state = int(msg_tmp_d[1])#id - -# # if call_state == 0:#可正常通话 -# # tokens_data = msg_tmp_d[2]#会议id -# # meet_id = msg_tmp_d[3]#会议id -# # EventMesh.publish("set_vedio_meet_id", meet_id)# -# # EventMesh.publish("set_vedio_tokens_data", tokens_data)# -# # EventMesh.publish("open_vedio_infor") -# # # EventMesh.publish("set_UI_high_priority", 0) -# # # EventMesh.publish("load_screen", {"screen": "vedio_answer"}) -# # # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])# - - -# print("RINGING!!!!!!!!!!!!!") # 注:终端一旦收到该请求,则退出当前通话 # [DL*YYYYYYYYYYYYYYY*LEN*HANGUP] @@ -2907,40 +2773,6 @@ class CALLCANCEL_ProtoCol(ProtoCol):#app拒接视频通话 EventMesh.publish(constants.PROTOCOL.CALLCANCEL_SEND) -# class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 -# """""" -# TYPE = "RTALK" -# def send(self, event, msg): - -# # [XT*334588000000156*0005*WLKEY] -# send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei) -# MD5_SIGN = self.pack_MD5_head(send_data) -# data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) -# print("AGTALK:send data:%s"%(data)) -# # print("WLKEY!!!!!!!!!!!!!") -# # 通过socket发送到服务器端 -# EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - -# def recv(self, event, msg): -# """ -# @param event: -# @param msg: 接收到的下行数据 -# """ -# # b'[SZKW*867387060319166*000A*RTALK]' -# print("RTALK!!!!!!!!!!!!!") -# # [SZKW*876226002021444*003A*RTALK,3ef20e64f3abb84b27f7d764,8762260020214441701226522,1]' -# msg = msg[1:-1] -# msg_tmp = msg.decode('ascii') -# msg_tmp_d = msg_tmp.split(',') -# screen_NAME = EventMesh.publish("get_screen_NAME") -# if screen_NAME != None: -# if screen_NAME == "video_outcall": -# # EventMesh.publish("close_jrtc_event") -# EventMesh.publish("set_UI_high_priority", 0) -# EventMesh.publish("load_screen", {"screen": "videolist"}) - - - class ProtoColResolver(object): diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py index 7b48eec0..90f3689c 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py @@ -189,6 +189,16 @@ style_contact_btn.set_pad_right(0) style_contact_btn.set_pad_top(0) style_contact_btn.set_pad_bottom(0) +style_video_btn = lv.style_t() +style_video_btn.init() +style_video_btn.set_radius(5) +style_video_btn.set_bg_color(lv.color_make(128, 128, 128)) +style_video_btn.set_bg_opa(255) +style_video_btn.set_border_width(0) +style_video_btn.set_pad_left(0) +style_video_btn.set_pad_right(0) +style_video_btn.set_pad_top(0) +style_video_btn.set_pad_bottom(0) style_common_bg_rect_btn_pressed = lv.style_t() style_common_bg_rect_btn_pressed.init() @@ -233,6 +243,8 @@ style_screen_btn_1_main_main_black.set_border_color(lv.color_make(0,0,0)) style_screen_btn_1_main_main_black.set_border_width(0) style_screen_btn_1_main_main_black.set_border_opa(255) + + style_circle = lv.style_t() style_circle.init() style_circle.set_bg_color(lv.color_make(0xff, 0xff, 0xff)) @@ -391,8 +403,8 @@ class PhoneScreen(Screen): def initialization(self): - self.phone_num='' - self.phone_list = [] + # self.phone_num='' + # self.phone_list = [] global phone_screen ,phone_line,phone_label,phone_one,phone_two,phone_three,phone_four,phone_five,phone_six,phone_seven,phone_eight,phone_nine,phone_start,\ phone_zero,phone_hash,phone_call,phone_call_btn,phone_contact,phone_contact_btn,phone_delete,phone_delete_btn @@ -608,13 +620,19 @@ class PhoneScreen(Screen): # lv.EVENT.SHORT_CLICKED, None) - self.phone_num='' - self.phone_list = [] + # self.phone_num='' + # self.phone_list = [] self.count = 0 if phone_label != None: - phone_label.set_pos(0, 0) - phone_label.set_size(0, 0) - phone_label.set_text(" ") + if len(self.phone_num) != 0: + phone_label.set_pos(0, 5) + phone_label.set_size(128, 30) + phone_label.set_text(self.phone_num) + phone_label.set_text(str(self.phone_num)) + else: + phone_label.set_pos(0, 0) + phone_label.set_size(0, 0) + phone_label.set_text(" ") #phone_label.set_text(" ") # print("self.phone_list :{} self.phone_num:{}".format(self.phone_list,self.phone_num)) if self.timer_cb == 0: @@ -953,12 +971,18 @@ class PhoneScreen(Screen): def done_return(self): + self.phone_num='' + self.phone_list = [] EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn1_release(self): + self.phone_num='' + self.phone_list = [] EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn8_press(self): + self.phone_num='' + self.phone_list = [] EventMesh.publish("watch_top_show") EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -1233,13 +1257,10 @@ class DialingScreen(Screen): self.timer = osTimer() self.meta = None self.meta_type = "popup" - self.call_log = {} - self.call_log_value = {} - self.read_call_log = {} - self.number_tmp = {} - self.CALL_LOG_MAX = CALL_LOG_MAX + self.count = 0 def initialization(self): EventMesh.publish("set_UI_high_priority", 1) + self.count = 0 global dialing_screen,dialing_img,dialing_name ,hangup_imgbtn if dialing_screen == None: dialing_screen = lv.obj() @@ -1279,29 +1300,37 @@ class DialingScreen(Screen): if dialing_name != None: name = EventMesh.publish("get_phonename")#获取拨打电话名称 dialing_name.set_text(name)#名称 + self.timer.start(1000,1,self.lcd_refresh) def post_processor_after_initialization(self): + pass - + def lcd_refresh(self,*argc): + EventMesh.publish("publish_message_event_ui",{"func":self.lcd_refresh_cb,"data":0}) + + def lcd_refresh_cb(self,data): + flag = EventMesh.publish("get_lcd_state") + if flag == 1: + EventMesh.publish("system_sleep_rest")#防止黑屏 + self.count+=1 + if self.count >= 60: + self.count = 0 + self.hangup(0) + def hangup(self,e): + + self.timer.stop() EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("close_sos_timer") EventMesh.publish("set_hangup_mode", 1) - voiceCall.callEnd() EventMesh.publish("set_interrup_incall",0) EventMesh.publish("set_UI_high_priority",0) - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("set_call_state",0)#设置通话状态为0 + voiceCall.callEnd() + EventMesh.publish("return_prev_screen") def Close(self): self.timer.stop() - def call_end(self,*argc): - - call_state = EventMesh.publish("get_call_state")# - print("call_end!!!!!!!!",call_state) - if call_state != None: - if call_state == 0:#未打通 - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_return(self): pass #EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -1551,51 +1580,119 @@ class NoSimPowerScreen(Screen):# no_sim_power_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_power_screen_comfirm = lv.img(no_sim_power_screen) - no_sim_power_screen_comfirm.set_size(88, 23) - no_sim_power_screen_comfirm.set_pos(20, 65) - no_sim_power_screen_comfirm.set_src("U:/static/off_icon.png") - no_sim_power_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_power_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_power_screen_comfirm_btn = lv.img(no_sim_power_screen) - no_sim_power_screen_comfirm_btn.set_size(88, 35) - no_sim_power_screen_comfirm_btn.set_pos(20, 55) - no_sim_power_screen_comfirm_btn.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_power_screen_comfirm_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - - poweroff_confirm_label = lv.label(no_sim_power_screen_comfirm) - poweroff_confirm_label.set_text("确定") - poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 0) - poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_power_screen_cancel = lv.img(no_sim_power_screen) - no_sim_power_screen_cancel.set_size(88, 23) - no_sim_power_screen_cancel.set_pos(20, 95) - no_sim_power_screen_cancel.set_src("U:/static/cancel_icon.png") - no_sim_power_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_power_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_power_screen_cancel_btn = lv.img(no_sim_power_screen) - no_sim_power_screen_cancel_btn.set_size(88, 38) - no_sim_power_screen_cancel_btn.set_pos(20, 90) - no_sim_power_screen_cancel_btn.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_power_screen_cancel_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - poweroff_return_label = lv.label(no_sim_power_screen_cancel) - poweroff_return_label.set_text("取消") - poweroff_return_label.align(lv.ALIGN.CENTER, 0, 0) - poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_power_screen_cancel.set_ext_click_area(20) + no_sim_power_screen_comfirm = lv.btn(no_sim_power_screen) + no_sim_power_screen_comfirm.set_pos(int(20),int(64)) + no_sim_power_screen_comfirm.set_size(88,23) + no_sim_power_screen_comfirm.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(no_sim_power_screen_comfirm) + screen_btn_1_label.set_text("确定") + no_sim_power_screen_comfirm.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + no_sim_power_screen_comfirm.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + # no_sim_power_screen_comfirm = lv.img(no_sim_power_screen) + # no_sim_power_screen_comfirm.set_size(88, 23) + # no_sim_power_screen_comfirm.set_pos(20, 65) + # no_sim_power_screen_comfirm.set_src("U:/static/off_icon.png") + # no_sim_power_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_power_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + # no_sim_power_screen_comfirm_btn = lv.img(no_sim_power_screen) + # no_sim_power_screen_comfirm_btn.set_size(88, 35) + # no_sim_power_screen_comfirm_btn.set_pos(20, 55) + # no_sim_power_screen_comfirm_btn.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_power_screen_comfirm_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + + # poweroff_confirm_label = lv.label(no_sim_power_screen_comfirm) + # poweroff_confirm_label.set_text("确定") + # poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 0) + # poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + # no_sim_power_screen_cancel = lv.img(no_sim_power_screen) + # no_sim_power_screen_cancel.set_size(88, 23) + # no_sim_power_screen_cancel.set_pos(20, 95) + # no_sim_power_screen_cancel.set_src("U:/static/cancel_icon.png") + # no_sim_power_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_power_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + # no_sim_power_screen_cancel_btn = lv.img(no_sim_power_screen) + # no_sim_power_screen_cancel_btn.set_size(88, 38) + # no_sim_power_screen_cancel_btn.set_pos(20, 90) + # no_sim_power_screen_cancel_btn.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_power_screen_cancel_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + # poweroff_return_label = lv.label(no_sim_power_screen_cancel) + # poweroff_return_label.set_text("取消") + # poweroff_return_label.align(lv.ALIGN.CENTER, 0, 0) + # poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # no_sim_power_screen_cancel.set_ext_click_area(20) + + no_sim_power_screen_cancel = lv.btn(no_sim_power_screen) + no_sim_power_screen_cancel.set_pos(int(20),int(98)) + no_sim_power_screen_cancel.set_size(88,23) + no_sim_power_screen_cancel.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(no_sim_power_screen_cancel) + screen_btn_1_label.set_text("取消") + no_sim_power_screen_cancel.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + no_sim_power_screen_cancel.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + self.meta = no_sim_power_screen - no_sim_power_screen_comfirm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)), + no_sim_power_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + no_sim_power_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), lv.EVENT.SHORT_CLICKED, None) - no_sim_power_screen_cancel_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)), + no_sim_power_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) + def button_cb(self,e,msg): + code = e.get_code() + indev = lv.indev_get_act() + lv.indev_t.wait_release(indev) + dir = lv.indev_t.get_gesture_dir(indev) + if code == lv.EVENT.SHORT_CLICKED: + if msg != 0: + if msg == 1: + self.confirm(0) + elif msg == 2: + self.cancel(0) + # EventMesh.publish("load_screen", {"screen": "{}".format(msg)}) + def confirm(self,e): EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) @@ -1637,9 +1734,15 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 self.timer2 = osTimer() self.CALL_LOG_MAX = CALL_LOG_MAX self.read_call_log = {} - + self.phone_page_state = 0 + EventMesh.subscribe("get_phone_state",self.get_phone_state) + + def get_phone_state(self,event,msg): + return self.phone_page_state + def initialization(self): EventMesh.publish("set_UI_high_priority", 1) + self.phone_page_state = 1 global dialing_popup_screen,dialing_popup_img,dialing_popup_name ,dialing_popup_call,dialing_popup_hangup_imgbtn if dialing_popup_screen == None: dialing_popup_screen = lv.obj() @@ -1662,7 +1765,7 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 dialing_popup_call = lv.label(dialing_popup_screen) dialing_popup_call.set_pos(0, 50) - dialing_popup_call.set_size(LCD_X, 20) + dialing_popup_call.set_size(LCD_X, 40) dialing_popup_call.set_text("正在拨号中") dialing_popup_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) dialing_popup_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -1679,6 +1782,9 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 if dialing_popup_name != None: name = EventMesh.publish("get_phonename")#获取拨打电话名称 dialing_popup_name.set_text(name)#名称 + if dialing_popup_call != None: + dialing_popup_call.set_text("正在拨号中") + def post_processor_after_initialization(self): self.time_count = 0 @@ -1749,22 +1855,36 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 voiceCall.callStart(phone_num) def timeout_hangup(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 + flag = EventMesh.publish("get_lcd_state") + if flag == 1: + EventMesh.publish("system_sleep_rest")#防止黑屏 + if EventMesh.publish("get_call_state") == 4: + if dialing_popup_call != None: + dialing_popup_call.set_text("正在等待对方接听\n听电话") self.time_count+=1 - if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭 + if self.time_count >= 60:#5s内没有打通则不在继续拨打关闭 self.time_count = 0 + self.phone_page_state = 0 self.timer1.stop() + self.timer2.stop() EventMesh.publish("set_UI_high_priority", 0) + sos_flag = EventMesh.publish("get_sos_flag") print("sos_flag!!!!!!!!!!!!!!!!:",sos_flag) if sos_flag == 1: - EventMesh.publish("set_sos_info_call") - - EventMesh.publish("load_screen", {"screen": "dial_no_connect_popup"}) + EventMesh.publish("set_sos_info_call") + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("set_call_state",0)#设置通话状态为0 + voiceCall.callEnd() + EventMesh.publish("return_prev_screen") def hangup(self,e): + self.phone_page_state = 0 + self.timer1.stop() + self.timer2.stop() EventMesh.publish("set_UI_high_priority", 0) - voiceCall.callEnd() + sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: EventMesh.publish("close_sos_timer") @@ -1773,10 +1893,13 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 EventMesh.publish("set_hangup_mode",0) EventMesh.publish("set_interrup_incall",0) EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("set_call_state",0)#设置通话状态为0 + voiceCall.callEnd() EventMesh.publish("return_prev_screen") # EventMesh.publish("load_screen", {"screen": "main_menu"}) def Close(self): + self.phone_page_state = 0 self.timer1.stop() self.timer2.stop() @@ -3215,11 +3338,12 @@ class IncomingCallScreen(Screen): self.meta_type = "popup" self.aud = audio.Audio(0) self.call_timer = osTimer() + self.call_timer1 = osTimer() self.name = None self.phonebook = {} self.pro_state = 0 self.meta = None - + self.timeout = 0 self.call_log = {} self.call_log_value = {} @@ -3266,6 +3390,8 @@ class IncomingCallScreen(Screen): lv.EVENT.SHORT_CLICKED, None) self.meta = incoming_call_screen EventMesh.publish("set_UI_high_priority", 1) + self.timeout = 0 + self.call_timer1.start(1*1000, 1, self.lcd_refresh) def post_processor_after_initialization(self): @@ -3385,10 +3511,21 @@ class IncomingCallScreen(Screen): self.call_timer.start(6000, 1, self.call_timer_cb) self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 + def lcd_refresh(self,*argc): + flag = EventMesh.publish("get_lcd_state") + if flag == 1: + EventMesh.publish("system_sleep_rest")#防止黑屏 + + self.timeout+=1 + if self.timeout >= 60: + self.timeout = 0 + self.hangup(0) + def call_timer_cb(self,e): - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 + self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 def answer(self,e): + self.call_timer1.stop() self.call_timer.stop() self.aud.stop() EventMesh.publish("set_UI_high_priority", 0) @@ -3400,21 +3537,19 @@ class IncomingCallScreen(Screen): num = 8 self.aud.setVolume(num) self.call_timer.stop() + self.call_timer1.stop() self.aud.stop() def hangup(self,e): EventMesh.publish("set_UI_high_priority", 0) self.aud.stop() + self.call_timer1.stop() self.call_timer.stop() + EventMesh.publish("set_call_state",0)#设置通话状态为0 voiceCall.callEnd() EventMesh.publish("set_interrup_incall",0) EventMesh.publish("set_UI_high_priority",0) - - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME != "dialing_noplay_popup": - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): @@ -4047,28 +4182,27 @@ class OnCallScreen(Screen): def refresh(self,e): - # print("call_in") - global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup - min = self.count_sec/60 - sec = self.count_sec%60 - if min > 99: - total = "%03d:%02d"%(min,sec) - else: - total = "%02d:%02d"%(min,sec) - on_call_second_label.set_text(str(total)) + flag = EventMesh.publish("get_lcd_state") + if flag == 1: + # print("call_in") + global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup + min = self.count_sec/60 + sec = self.count_sec%60 + if min > 99: + total = "%03d:%02d"%(min,sec) + else: + total = "%02d:%02d"%(min,sec) + on_call_second_label.set_text(str(total)) self.count_sec+=1 def hangup(self,e): EventMesh.publish("set_UI_high_priority", 0) self.timer.stop() + EventMesh.publish("set_call_state",0)#设置通话状态为0 voiceCall.callEnd() EventMesh.publish("set_interrup_incall",0) EventMesh.publish("set_UI_high_priority",0) - - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME != "dialing_noplay_popup": - EventMesh.publish("return_prev_screen") + EventMesh.publish("return_prev_screen") # EventMesh.publish("load_screen", {"screen": "main_menu"}) def Close(self): @@ -4078,6 +4212,16 @@ class OnCallScreen(Screen): self.aud.setVolume(self.volum_size) self.timer.stop() voiceCall.mute(2,0,0) + def lcd_on(self): + global on_call_second_label + if on_call_second_label != 0: + min = self.count_sec/60 + sec = self.count_sec%60 + if min > 99: + total = "%03d:%02d"%(min,sec) + else: + total = "%02d:%02d"%(min,sec) + on_call_second_label.set_text(str(total)) def btn1_release(self): pass @@ -6681,38 +6825,105 @@ class sosScreen(Screen): sos_screen_label.set_pos(0,25) sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_confirm_img = lv.img(sos_screen) - sos_screen_confirm_img.set_size(88, 23) - sos_screen_confirm_img.set_pos(20, 65) - sos_screen_confirm_img.set_src("U:/static/off_icon.png") - sos_screen_confirm_img.add_flag(lv.obj.FLAG.CLICKABLE) - sos_screen_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_confirm_label = lv.label(sos_screen_confirm_img) - sos_screen_confirm_label.set_text("确定") - sos_screen_confirm_label.align(lv.ALIGN.CENTER, 0, 0) - sos_screen_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_return = lv.img(sos_screen) - sos_screen_return.set_size(88, 23) - sos_screen_return.set_pos(20, 98) - sos_screen_return.set_src("U:/static/cancel_icon.png") - sos_screen_return.add_flag(lv.obj.FLAG.CLICKABLE) - sos_screen_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - sos_screen_return_label = lv.label(sos_screen_return) - sos_screen_return_label.set_text("取消") - sos_screen_return_label.align(lv.ALIGN.CENTER, 0, 0) - sos_screen_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - sos_screen_return_label.set_ext_click_area(20) + sos_screen_confirm_img = lv.btn(sos_screen) + sos_screen_confirm_img.set_pos(int(20),int(64)) + sos_screen_confirm_img.set_size(88,23) + sos_screen_confirm_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(sos_screen_confirm_img) + screen_btn_1_label.set_text("确定") + sos_screen_confirm_img.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + sos_screen_confirm_img.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + + # sos_screen_confirm_img = lv.img(sos_screen) + # sos_screen_confirm_img.set_size(88, 23) + # sos_screen_confirm_img.set_pos(20, 65) + # sos_screen_confirm_img.set_src("U:/static/off_icon.png") + # sos_screen_confirm_img.add_flag(lv.obj.FLAG.CLICKABLE) + # sos_screen_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + # sos_screen_confirm_label = lv.label(sos_screen_confirm_img) + # sos_screen_confirm_label.set_text("确定") + # sos_screen_confirm_label.align(lv.ALIGN.CENTER, 0, 0) + # sos_screen_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + # sos_screen_return = lv.img(sos_screen) + # sos_screen_return.set_size(88, 23) + # sos_screen_return.set_pos(20, 98) + # sos_screen_return.set_src("U:/static/cancel_icon.png") + # sos_screen_return.add_flag(lv.obj.FLAG.CLICKABLE) + # sos_screen_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + # sos_screen_return_label = lv.label(sos_screen_return) + # sos_screen_return_label.set_text("取消") + # sos_screen_return_label.align(lv.ALIGN.CENTER, 0, 0) + # sos_screen_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # sos_screen_return_label.set_ext_click_area(20) + + sos_screen_return = lv.btn(sos_screen) + sos_screen_return.set_pos(int(20),int(98)) + sos_screen_return.set_size(88,23) + sos_screen_return.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(sos_screen_return) + screen_btn_1_label.set_text("取消") + sos_screen_return.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + sos_screen_return.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) self.meta = sos_screen - sos_screen_confirm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_comfirm_cb(e)), + + sos_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + sos_screen_confirm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), lv.EVENT.SHORT_CLICKED, None) - sos_screen_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_cancel_cb(e)), + sos_screen_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) + def button_cb(self,e,msg): + code = e.get_code() + indev = lv.indev_get_act() + lv.indev_t.wait_release(indev) + dir = lv.indev_t.get_gesture_dir(indev) + if code == lv.EVENT.SHORT_CLICKED: + if msg != 0: + if msg == 1: + self.timer_comfirm_cb(0) + elif msg == 2: + self.timer_cancel_cb(0) + def timer_comfirm_cb(self,e): EventMesh.publish("set_sos_flag", 1) @@ -7128,36 +7339,89 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机 no_sim_auto_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) no_sim_auto_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_auto_screen_comfirm = lv.img(no_sim_auto_screen) - no_sim_auto_screen_comfirm.set_size(88, 23) - no_sim_auto_screen_comfirm.set_pos(20, 64) - no_sim_auto_screen_comfirm.set_src("U:/static/off_icon.png") - no_sim_auto_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_auto_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_confirm_label = lv.label(no_sim_auto_screen_comfirm) - no_sim_confirm_label.set_text("确定") - no_sim_confirm_label.align(lv.ALIGN.CENTER, 0, 0) - no_sim_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_auto_screen_cancel = lv.img(no_sim_auto_screen) - no_sim_auto_screen_cancel.set_size(88, 23) - no_sim_auto_screen_cancel.set_pos(20, 95) - no_sim_auto_screen_cancel.set_src("U:/static/cancel_icon.png") - no_sim_auto_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_auto_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_cancel_label = lv.label(no_sim_auto_screen_cancel) - no_sim_cancel_label.set_text("取消") - no_sim_cancel_label.align(lv.ALIGN.CENTER, 0, 0) - no_sim_cancel_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_auto_screen_cancel.set_ext_click_area(20) + no_sim_auto_screen_comfirm = lv.btn(no_sim_auto_screen) + no_sim_auto_screen_comfirm.set_pos(int(20),int(64)) + no_sim_auto_screen_comfirm.set_size(88,23) + no_sim_auto_screen_comfirm.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(no_sim_auto_screen_comfirm) + screen_btn_1_label.set_text("确定") + no_sim_auto_screen_comfirm.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(249,47,109)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + no_sim_auto_screen_comfirm.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + # no_sim_auto_screen_comfirm = lv.img(no_sim_auto_screen) + # no_sim_auto_screen_comfirm.set_size(88, 23) + # no_sim_auto_screen_comfirm.set_pos(20, 64) + # no_sim_auto_screen_comfirm.set_src("U:/static/off_icon.png") + # no_sim_auto_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_auto_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + # no_sim_confirm_label = lv.label(no_sim_auto_screen_comfirm) + # no_sim_confirm_label.set_text("确定") + # no_sim_confirm_label.align(lv.ALIGN.CENTER, 0, 0) + # no_sim_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + # no_sim_auto_screen_cancel = lv.img(no_sim_auto_screen) + # no_sim_auto_screen_cancel.set_size(88, 23) + # no_sim_auto_screen_cancel.set_pos(20, 95) + # no_sim_auto_screen_cancel.set_src("U:/static/cancel_icon.png") + # no_sim_auto_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE) + # no_sim_auto_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + # no_sim_cancel_label = lv.label(no_sim_auto_screen_cancel) + # no_sim_cancel_label.set_text("取消") + # no_sim_cancel_label.align(lv.ALIGN.CENTER, 0, 0) + # no_sim_cancel_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # no_sim_auto_screen_cancel.set_ext_click_area(20) + + no_sim_auto_screen_cancel = lv.btn(no_sim_auto_screen) + no_sim_auto_screen_cancel.set_pos(int(20),int(98)) + no_sim_auto_screen_cancel.set_size(88,23) + no_sim_auto_screen_cancel.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + screen_btn_1_label = lv.label(no_sim_auto_screen_cancel) + screen_btn_1_label.set_text("取消") + no_sim_auto_screen_cancel.set_style_pad_all(0, lv.STATE.DEFAULT) + screen_btn_1_label.align(lv.ALIGN.CENTER,0,0) + # create style style_screen_btn_1_main_main_default + style_screen_btn_1_main_main_default = lv.style_t() + style_screen_btn_1_main_main_default.init() + style_screen_btn_1_main_main_default.set_radius(20) + style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) + style_screen_btn_1_main_main_default.set_bg_opa(255) + style_screen_btn_1_main_main_default.set_border_color(lv.color_make(7,222,169)) + style_screen_btn_1_main_main_default.set_border_width(0) + style_screen_btn_1_main_main_default.set_border_opa(255) + style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) + style_screen_btn_1_main_main_default.set_text_font(lv.K01_font_16_ALL) + style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER) + + # add style for screen_btn_1 + no_sim_auto_screen_cancel.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) self.meta = no_sim_auto_screen - no_sim_auto_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)), + no_sim_auto_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)), + lv.EVENT.GESTURE, None) + no_sim_auto_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), lv.EVENT.SHORT_CLICKED, None) - no_sim_auto_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)), + no_sim_auto_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) self.timer.start(1*1000,1,self.fun) self.count = 0 @@ -7173,6 +7437,18 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机 def Close(self): self.count = 0 self.timer.stop() + def button_cb(self,e,msg): + code = e.get_code() + indev = lv.indev_get_act() + lv.indev_t.wait_release(indev) + dir = lv.indev_t.get_gesture_dir(indev) + if code == lv.EVENT.SHORT_CLICKED: + if msg != 0: + if msg == 1: + self.confirm(0) + elif msg == 2: + self.cancel(0) + # EventMesh.publish("load_screen", {"screen": "{}".format(msg)}) def confirm(self,e): EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) @@ -7210,33 +7486,39 @@ class SystemInitScreen(Screen): print("SystemInitScreen") system_init_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - system_init_label = lv.label(system_init_screen) - system_init_label.set_pos(0, 50) - system_init_label.set_size(128, 20) - system_init_label.set_text("系统初始化中") - system_init_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - system_init_label.set_long_mode(lv.label.LONG.WRAP) - system_init_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + poweron_img = lv.img(system_init_screen) + poweron_img.set_size(80,80) + poweron_img.set_pos(24,24) + poweron_img.set_src("U:/static/AI_MAIN_ICON.png") + # screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE) + poweron_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + # system_init_label = lv.label(system_init_screen) + # system_init_label.set_pos(0, 50) + # system_init_label.set_size(128, 20) + # system_init_label.set_text("WELCOME") + # system_init_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # system_init_label.set_long_mode(lv.label.LONG.WRAP) + # system_init_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) self.meta = system_init_screen self.system_init_timer_count = 0 self.system_init_timer.start(1000, 1, self.system_init_timer_cb) def system_init_timer_cb(self, *args): EventMesh.publish("system_sleep_rest")#防止黑屏 - self.system_init_timer_count += 1 - if self.system_init_timer_count > 4: - self.system_init_timer_count = 1 - if system_init_screen != None: - - system_init_label_str = "系统初始化中" - if self.system_init_timer_count == 1: - system_init_label.set_text("系统初始化中.") - elif self.system_init_timer_count == 2: - system_init_label.set_text("系统初始化中..") - elif self.system_init_timer_count == 3: - system_init_label.set_text("系统初始化中...") - else: - system_init_label.set_text("系统初始化中....") + # self.system_init_timer_count += 1 + # if self.system_init_timer_count > 4: + # self.system_init_timer_count = 1 + # if system_init_screen != None: + + # system_init_label_str = "系统初始化中" + # if self.system_init_timer_count == 1: + # system_init_label.set_text("系统初始化中.") + # elif self.system_init_timer_count == 2: + # system_init_label.set_text("系统初始化中..") + # elif self.system_init_timer_count == 3: + # system_init_label.set_text("系统初始化中...") + # else: + # system_init_label.set_text("系统初始化中....") def Close(self): self.system_init_timer.stop() @@ -7704,2269 +7986,104 @@ class up_Screen(Screen):#上滑界面 EventMesh.publish("watch_top_show") EventMesh.publish("load_screen", {"screen": "main_menu"}) -camera_popup_screen = None -camera_popup_label = None -camera_img_test = None -def camCapturecallback(result_list): - print("camCapturecallback",result_list) - if result_list[0] == 0:#保存成功 - file = str(result_list[1]) - tmp = file.split('/')[3] - tmp = tmp.split("_camera")[0] - time = int(tmp) - album_data = int(EventMesh.publish("get_camera_num")) - if album_data >= 1: - album_data=1 - print("album_data",album_data) - EventMesh.publish("set_camera_num",album_data+1) - EventMesh.publish("save_album_succ",1) - pass - pass -#gpio_CAM_PWDN = Pin(Pin.GPIO42, Pin.OUT, Pin.PULL_DISABLE, 0) -dec = camera.camCapture(0,240,320,1,128,128) -dec.callback(camCapturecallback) - -camera_full_popup_screen = None -camera_full_label_popup_screen = None -class cameraFullScreen(Screen):#相册已满 - # - NAME = "camera_full" - + +rrestor_confirm_n_screen = None +rrestor_confirm_n_screen_label = None + +# +class restore_confirmScreen(Screen): + NAME = "restore_confirm" def __init__(self): super().__init__() self.meta = None self.meta_type = "popup" + self.count = 0 + self.timer1 = osTimer() + self.timer2 = osTimer() + self.timer3 = osTimer() + EventMesh.subscribe("app_factory_cb",self.app_factory_cb) def initialization(self): - global camera_full_popup_screen ,camera_full_label_popup_screen - - - if camera_full_popup_screen == None: - camera_full_popup_screen = lv.obj() - print("camera_full") - camera_full_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label + if rrestor_confirm_n_screen == None : + rrestor_confirm_n_screen = lv.obj() + print("rrestor_confirm_n_screen") + rrestor_confirm_n_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + # add style for watchface + rrestor_confirm_n_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) + #进入图片 - camera_full_label_popup_screen = lv.label(camera_full_popup_screen) - camera_full_label_popup_screen.set_pos(0, 50) - camera_full_label_popup_screen.set_size(128, 40) - camera_full_label_popup_screen.set_text("相册已满,删除即可拍照") - camera_full_label_popup_screen.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - camera_full_label_popup_screen.set_long_mode(lv.label.LONG.WRAP) - camera_full_label_popup_screen.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - self.meta = camera_full_popup_screen + rrestor_confirm_n_screen_label = lv.label(rrestor_confirm_n_screen) + rrestor_confirm_n_screen_label.set_pos(0, 40) + rrestor_confirm_n_screen_label.set_size(128, 60) + rrestor_confirm_n_screen_label.set_text("正在恢复出厂中\n请稍等...") + rrestor_confirm_n_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + rrestor_confirm_n_screen_label.set_long_mode(lv.label.LONG.WRAP) + rrestor_confirm_n_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - def done_click(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - - def done_return(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) + self.meta = rrestor_confirm_n_screen + self.timer1.start(1000,1,self.timer_cb_onescond) + ret = 0 + ret = ql_fs.path_exists("/usr/static/storage_file")#电话本 + if ret == True: + ql_fs.rmdirs("/usr/static/storage_file") + ql_fs.mkdirs("/usr/static/storage_file") + + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂 + EventMesh.publish(constants.PROTOCOL.DLT_SEND) + self.timer2.start(4000,0,self.timer_cb_threescond) - def btn1_release(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + def app_factory_cb(self,event,msg): + ret = 0 + ret = ql_fs.path_exists("/ext/static/storage_file")#电话本 + if ret == True: + ql_fs.rmdirs("/ext/static/storage_file") + ql_fs.mkdirs("/ext/static/storage_file") + EventMesh.publish("alipay_unbind") + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂 + EventMesh.publish(constants.PROTOCOL.DLT_SEND) + self.timer3.start(4000,0,self.timer_cb_threescond) pass -delete_album_popup_screen = None -delete_album_label_popup_screen = None -class deletealbumScreen(Screen):#删除图片 - # - NAME = "delete_album" - - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" + def Close(self): + self.timer1.stop() + self.timer2.stop() + def timer_cb_threescond(self,e): - def initialization(self): - global delete_album_popup_screen ,delete_album_label_popup_screen - - - if delete_album_popup_screen == None: - delete_album_popup_screen = lv.obj() - print("delete_album_popup_screen") - delete_album_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + Power.powerRestart() - delete_album_label_popup_screen = lv.label(delete_album_popup_screen) - delete_album_label_popup_screen.set_pos(0, 50) - delete_album_label_popup_screen.set_size(128, 40) - delete_album_label_popup_screen.set_text("删除成功") - delete_album_label_popup_screen.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - delete_album_label_popup_screen.set_long_mode(lv.label.LONG.WRAP) - delete_album_label_popup_screen.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - self.meta = delete_album_popup_screen + def timer_cb_onescond(self,e): + EventMesh.publish("system_sleep_rest")#防止黑屏 - def done_click(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) + def done_left_to_right(self): pass - - - def done_return(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - EventMesh.publish("return_prev_screen") - # EventMesh.publish("load_screen", {"screen": "main_menu"}) + def done_right_to_left(self): pass - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + def done_bottom_to_top(self): pass -import jrtc -class cameraScreen(Screen):#相机拍照二级界面 - # - NAME = "camera" - - def __init__(self): - super().__init__() - self.meta = None - self.preview1 = None - self.timer = osTimer() - self.timer2 = osTimer() - self.timer3 = osTimer() - self.camera_num = 0 - EventMesh.subscribe("save_album_succ",self.save_album_succ) - - def initialization(self): - global camera_popup_screen ,camera_popup_label,camera_img_test - # dec = camera.camCapture(0,240,320,1,128,128) - # dec.callback(camCapturecallback) - #gpio_CAM_PWDN.write(0) - state = dec.open() - dec.set_rotate(3) - - if camera_popup_screen == None: - camera_popup_screen = lv.obj() - print("camera_popup_screen") - camera_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - camera_img_test = lv.img(camera_popup_screen) - # img_test.set_src("U:/hang_up.png") - ret = dec.set_img(camera_img_test) - - camera_img_test.align(lv.ALIGN.CENTER, 0, 0) - camera_img_test.set_size(128,128) - - - camera_camera_btn = lv.img(camera_popup_screen) - camera_camera_btn.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_btn.set_pos(48, 90) - camera_camera_btn.set_size(30,30) - camera_camera_btn.set_src("U:/static/camera_btn.png") - # camera_camera_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_camera_album_btn = lv.img(camera_popup_screen) - camera_camera_album_btn.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_album_btn.set_pos(100, 10) - camera_camera_album_btn.set_size(20,20) - camera_camera_album_btn.set_src("U:/static/camera_album_btn.png") - # camera_camera_album_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_camera_return_btn = lv.img(camera_popup_screen) - camera_camera_return_btn.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_return_btn.set_pos(0, 10) - camera_camera_return_btn.set_size(18,18) - camera_camera_return_btn.set_src("U:/static/RED_RETURN_PNG.png") - # camera_camera_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_camera_return_btn_label = lv.label(camera_popup_screen) - camera_camera_return_btn_label.set_pos(0, 0) - camera_camera_return_btn_label.set_size(40, 40) - camera_camera_return_btn_label.set_text(" ") - camera_camera_return_btn_label.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_return_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_return_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_camera_album_btn_label = lv.label(camera_popup_screen) - camera_camera_album_btn_label.set_pos(80, 0) - camera_camera_album_btn_label.set_size(48, 40) - camera_camera_album_btn_label.set_text(" ") - camera_camera_album_btn_label.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_album_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_camera_btn_label = lv.label(camera_popup_screen) - camera_camera_btn_label.set_pos(40, 88) - camera_camera_btn_label.set_size(50, 40) - camera_camera_btn_label.set_text(" ") - camera_camera_btn_label.add_flag(lv.obj.FLAG.CLICKABLE) - camera_camera_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_popup_label = lv.label(camera_popup_screen) - camera_popup_label.set_pos(0, 40) - camera_popup_label.set_size(128, 20) - camera_popup_label.set_text("保存成功") - camera_popup_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - camera_popup_label.set_long_mode(lv.label.LONG.WRAP) - camera_popup_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN) - - self.meta = camera_popup_screen - - - - album_data = EventMesh.publish("get_camera_num") - if int(album_data) >= 1:#相册已满 - # EventMesh.publish("load_screen", {"screen": "camera_full"}) - pass - if camera_popup_label != None: - camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN) - self.timer.start(1*1000,1,self.fun) - - def save_album_succ(self,event,msg): - global camera_popup_label - if camera_popup_label != None: - if msg == 1: - camera_popup_label.clear_flag(lv.obj.FLAG.HIDDEN) - else: - camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN) - - self.timer3.start(1*2000,0,self.save_suc_album)#延迟1s保存图片 + def done_top_to_bottom(self): pass - - def fun(self,*argc): - EventMesh.publish("system_sleep_rest")#防止黑屏 - - def camera_click(self,e): - self.timer3.stop() - EventMesh.publish("save_album_succ",2) - album_data = EventMesh.publish("get_camera_num") - if album_data != None: - if int(album_data) >= 1:#相册已满 - EventMesh.publish("load_screen", {"screen": "camera_full"}) - return - self.timer2.start(1*1000,0,self.save_album)#延迟1s保存图片 - - def camera_album_click(self,e): - EventMesh.publish("load_screen", {"screen": "camera_album"}) - - def camera_return_click(self,e): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def Close(self): - self.timer.stop() - self.timer2.stop() - self.timer3.stop() - # dec.remove_img() - state = dec.close() - #gpio_CAM_PWDN.write(1) - print("close camera {}!!!!!!!".format(state)) - - def save_suc_album(self,*argc): - EventMesh.publish("save_album_succ",2) - # def done_click(self): - # self.timer2.start(1*1000,0,self.save_album)#延迟1s保存图片 - # pass - def save_album(self,*argc): - album_data = EventMesh.publish("get_camera_num") - if int(album_data) <= 1: - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) - dec.start(128,128, "static/album/1_camera") - else: - EventMesh.publish("load_screen", {"screen": "camera_full"}) - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + pass + def done_click(self): pass def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + pass + def btn1_press(self): + pass + def btn1_release(self): pass -camera_album_popup_screen = None -camera_album_popup_label = None -camera_album_popup_img = None -imgbt_contanier = None -camera_album_popup_img1 = None -camera_album_popup_img2 = None -camera_album_popup_img3 = None -camera_album_popup_img4 = None -camera_album_popup_img5 = None -class cameraalbumScreen(Screen):#相册 - # - NAME = "camera_album" - - def __init__(self): - super().__init__() - self.meta = None - - def initialization(self): - global camera_album_popup_screen ,camera_album_popup_label,camera_album_popup_img1,camera_album_popup_img2,camera_album_popup_img3,camera_album_popup_img4,camera_album_popup_img5 - - if camera_album_popup_screen == None: - camera_album_popup_screen = lv.obj() - print("camera_album_popup_screen") - camera_album_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - camera_album_popup_label = lv.label(camera_album_popup_screen) - camera_album_popup_label.set_pos(0, 60) - camera_album_popup_label.set_size(128, 20) - camera_album_popup_label.set_text("还没有照片") - camera_album_popup_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - camera_album_popup_label.set_long_mode(lv.label.LONG.WRAP) - camera_album_popup_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - camera_album_popup_img1 = lv.img(camera_album_popup_screen) - camera_album_popup_img1.set_pos(0, 0) - camera_album_popup_img1.set_size(128, 128) - - # camera_album_popup_img1.add_flag(lv.obj.FLAG.HIDDEN) - # camera_album_popup_img1.add_flag(lv.obj.FLAG.CLICKABLE) - # # camera_album_popup_img1.set_zoom(256) - # camera_album_popup_img1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.SHORT_CLICKED, None) - - camera_album_popup_img2 = lv.img(camera_album_popup_screen) - camera_album_popup_img2.set_pos(51, 100) - camera_album_popup_img2.set_size(25, 25) - camera_album_popup_img2.add_flag(lv.obj.FLAG.CLICKABLE) - camera_album_popup_img2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.SHORT_CLICKED, None) - - camera_album_popup_img3 = lv.img(camera_album_popup_screen) - camera_album_popup_img3.set_pos(0, 10) - camera_album_popup_img3.set_size(18,18) - camera_album_popup_img3.add_flag(lv.obj.FLAG.CLICKABLE) - camera_album_popup_img3.set_src("U:/static/RED_RETURN_PNG.png") - camera_album_popup_img3.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,1)), lv.EVENT.SHORT_CLICKED, None) - - self.meta = camera_album_popup_screen - read_album = 0 - read_album = EventMesh.publish("get_camera_num") - print("read_album",read_album) - IFEXIST = ql_fs.path_exists("/usr/static/album/1_camera.jpg") - if IFEXIST == True: - camera_album_popup_img1.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img1.set_src("U:/static/album/1_camera.jpg") #'U:/6_camera.jpeg'"U:/static/album/1_camera.jpg" - camera_album_popup_img2.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img2.set_src("U:/static/album_delete.png") - camera_album_popup_label.add_flag(lv.obj.FLAG.HIDDEN) - else: - camera_album_popup_img1.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img2.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_label.clear_flag(lv.obj.FLAG.HIDDEN) - - - def click_album(self,e,i): - if i == 0: - check_img = ql_fs.path_exists("/usr/static/album/1_camera.jpg") - if check_img == True :#图片存在 - uos.remove("/usr/static/album/1_camera.jpg")#删除单张图片 - album_data = int(EventMesh.publish("get_camera_num")) - - EventMesh.publish("set_camera_num",album_data-1) - - EventMesh.publish("load_screen", {"screen": "delete_album"}) - return - - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - # read_album = {} - # read_album = EventMesh.publish("get_camera_num") - # if len(read_album) != 0 and i < len(read_album): - # sort_new = {} - # sort_new = sorted(read_album.keys()) - # key = sort_new[i] - # value = int(read_album[key]["timeSec"]) - # self.meta_info = value - # print(self.meta_info,i) - # EventMesh.publish("load_screen", {"screen": "album_preview","meta": self.meta_info})#点击进入相册预览大图显示 - # print(i) - pass - - def Close(self): - pass - - def done_click(self): - - pass - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - -album_preview_popup_screen = None -album_preview_popup_img = None -album_preview_popup_delet_con_label = None -album_preview_popup_delet_con_label = None -album_preview_popup_delet_label = None -class albumPreviewScreen(Screen):#点击预览 - # - NAME = "album_preview" - - def __init__(self): - super().__init__() - self.meta = None - - def initialization(self): - global album_preview_popup_screen ,album_preview_popup_delet_label,album_preview_popup_img,album_preview_popup_delet_can_label,album_preview_popup_delet_con_label - - if album_preview_popup_screen == None: - album_preview_popup_screen = lv.obj() - print("album_preview_popup_screen") - album_preview_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - album_preview_popup_img = lv.img(album_preview_popup_screen) - album_preview_popup_img.set_pos(0, 0) - album_preview_popup_img.set_size(120,120) - # album_preview_popup_img.set_zoom(400) - - album_preview_popup_delet_label = lv.label(album_preview_popup_screen) - album_preview_popup_delet_label.set_pos(0, 65) - album_preview_popup_delet_label.set_size(128, 20) - album_preview_popup_delet_label.set_text("是否删除") - album_preview_popup_delet_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - album_preview_popup_delet_label.set_long_mode(lv.label.LONG.WRAP) - album_preview_popup_delet_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - album_preview_popup_delet_con_label = lv.label(album_preview_popup_screen) - album_preview_popup_delet_con_label.set_pos(0, 95) - album_preview_popup_delet_con_label.set_size(64, 33) - album_preview_popup_delet_con_label.set_text("确定") - album_preview_popup_delet_con_label.add_flag(lv.obj.FLAG.CLICKABLE) - album_preview_popup_delet_con_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - album_preview_popup_delet_con_label.set_long_mode(lv.label.LONG.WRAP) - album_preview_popup_delet_con_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - - album_preview_popup_delet_can_label = lv.label(album_preview_popup_screen) - album_preview_popup_delet_can_label.set_pos(64, 95) - album_preview_popup_delet_can_label.set_size(64, 33) - album_preview_popup_delet_can_label.set_text("取消") - album_preview_popup_delet_can_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - album_preview_popup_delet_can_label.set_long_mode(lv.label.LONG.WRAP) - album_preview_popup_delet_can_label.add_flag(lv.obj.FLAG.CLICKABLE) - album_preview_popup_delet_can_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - self.meta = album_preview_popup_screen - album_num_tmp = None - album_num_tmp = int(self.meta_info) - print(album_num_tmp) - album_preview_popup_delet_can_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.cancel_pop(e)),lv.EVENT.SHORT_CLICKED,None) - album_preview_popup_delet_con_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.confirm_pop(e)),lv.EVENT.SHORT_CLICKED,None) - - album_preview_popup_img.set_src("U:/static/album/%d_camera.jpg"%(album_num_tmp))#'U:/6_camera.jpeg' - - def cancel_pop(self,e):#取消删除 - EventMesh.publish("load_screen", {"screen": "main_menu"})#点击回到相册界面 - pass - - def confirm_pop(self,e):#确认删除 - # album_num = int(self.meta_info.split(':')[1]) - # album_num_tmp = None - # album_num_tmp = int(self.meta_info) - # print(album_num_tmp) - - # check_img = ql_fs.path_exists("/usr/static/album/%d_camera.jpg"%(album_num_tmp)) - # if check_img == True :#图片存在 - # uos.remove("/usr/static/album/%d_camera.jpg"%(album_num_tmp))#删除单张图片 - # read_album = {} - # read_album = EventMesh.publish("get_camera_num")#删除的同时把数据部分也清掉 - # print("img is exit1",read_album) - # if read_album != {}: - # key_tmp = album_num_tmp - # del read_album[key_tmp]#删除内容 - # EventMesh.publish("set_camera_num",read_album) - # print("img is exit2",read_album) - # pass - # else:#图片不存在 - # print("img is not exit") - # pass - EventMesh.publish("load_screen", {"screen": "camera_album"})#点击回到相册界面 - pass - - def Close(self): - pass - - def done_click(self): - pass - - def done_return(self): - - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - -voice_answer_screen = None -voice_answer_label = None -voice_answer_btn1 = None -voice_answer_btn_label1 = None -class VdieoVoiceScreen(Screen):#语音接听画面 - # - NAME = "voice_answer" - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.meta_type = "popup" - self.count = 0 - - def initialization(self): - global voice_answer_screen ,video_answer_btn_label1 - self.count = 0 - if voice_answer_screen == None: - voice_answer_screen = lv.obj() - print("voice_answer_screen") - voice_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_answer_btn_label1 = lv.label(voice_answer_screen) - video_answer_btn_label1.set_pos(0, 50) - video_answer_btn_label1.set_text("正在接听中...") - video_answer_btn_label1.set_size(128, 40) - video_answer_btn_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_answer_btn_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - self.meta = voice_answer_screen - EventMesh.publish("set_UI_high_priority", 1) - self.timer.start(1*1000,1,self.fun) - def fun(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.fun_cb,"data":0}) - - def fun_cb(self,data): - call_state = jrtc.get_state() - if call_state == 5: - self.timer.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "voiceing"}) - return - if call_state == 0: - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("load_screen", {"screen": "main_menu"}) - return - # print("voiceing_answer call_state",call_state) - self.count+=1 - if self.count >= 20: - - self.timer.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - return - - EventMesh.publish("system_sleep_rest")#防止黑屏 - - - def Close(self): - self.timer.stop() - - def done_return(self): - pass - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - - -camera_voice_answer_second_label = None -camera_voice_answer_screen = None -camera_voice_answer_label = None -camera_voice_answer_btn = None -camera_voice_answer_btn_label =None - -class VoiceShowScreen(Screen):#正在语音通话中 - # - NAME = "voiceing" - - def __init__(self): - super().__init__() - self.meta = None - self.preview1 = None - self.timer = osTimer() - self.aud = audio.Audio(0) - self.statu_open = -1 - self.show_label = 0 - self.second_count = 0 - self.time_out = 0 - self.meta_type = "popup" - EventMesh.subscribe("set_dev_end_video",self.set_dev_end_video) - EventMesh.subscribe("get_dev_end_video",self.get_dev_end_video) - - - def initialization(self): - global camera_voice_answer_screen,camera_voice_answer_second_label ,camera_voice_answer_btn_label,camera_voice_answer_label,camera_voice_answer_btn - if camera_voice_answer_screen == None: - camera_voice_answer_screen = lv.obj() - print("camera_voice_answer_screen") - camera_voice_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - camera_voice_answer_label = lv.label(camera_voice_answer_screen) - camera_voice_answer_label.set_pos(0, 20) - camera_voice_answer_label.set_text("正在通话中...") - camera_voice_answer_label.set_size(128, 40) - camera_voice_answer_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - camera_voice_answer_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - camera_voice_answer_second_label = lv.label(camera_voice_answer_screen) - camera_voice_answer_second_label.set_pos(0, 50) - camera_voice_answer_second_label.set_text(" ") - camera_voice_answer_second_label.set_size(128, 40) - camera_voice_answer_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - camera_voice_answer_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - camera_voice_answer_btn = lv.img(camera_voice_answer_screen) - camera_voice_answer_btn.add_flag(lv.obj.FLAG.CLICKABLE) - camera_voice_answer_btn.set_pos(48, 90) - camera_voice_answer_btn.set_size(32,32) - camera_voice_answer_btn.set_src("U:/static/hang_up.png") - - camera_voice_answer_btn_label = lv.label(camera_voice_answer_screen) - camera_voice_answer_btn_label.set_pos(38, 80) - camera_voice_answer_btn_label.set_text(" ") - camera_voice_answer_btn_label.set_size(52, 48) - camera_voice_answer_btn_label.add_flag(lv.obj.FLAG.CLICKABLE) - - camera_voice_answer_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None) - - camera_voice_answer_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None) - - self.meta = camera_voice_answer_screen - call_state = jrtc.get_state() - - self.second_count = 0 - self.statu_open = 0 - - self.time_out = 0 - - EventMesh.publish("set_UI_high_priority", 1) - if call_state == 5:#接通 - camera_voice_answer_label.set_text("正在通话中...") - camera_voice_answer_label.set_pos(0, 20) - camera_voice_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_voice_answer_second_label.set_text("00:00") - camera_voice_answer_second_label.set_pos(0, 50) - # camera_voice_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN) - # camera_voice_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN) - else: - camera_voice_answer_label.set_text("正在接听中...") - camera_voice_answer_label.set_pos(0, 50) - camera_voice_answer_second_label.add_flag(lv.obj.FLAG.HIDDEN) - # camera_voice_answer_btn.add_flag(lv.obj.FLAG.HIDDEN) - # camera_voice_answer_btn_label.add_flag(lv.obj.FLAG.HIDDEN) - self.timer.start(1*1000,1,self.fun) - - - def close_cb(self,e): - self.statu_open = 1 - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - EventMesh.publish("set_UI_high_priority", 0) - - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - def get_dev_end_video(self,event,msg):#手表挂断app - return self.statu_open - - def set_dev_end_video(self,event,msg):#手表挂断app - self.statu_open = msg - - def fun(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.fun_cb,"data":0}) - - def fun_cb(self,data): - EventMesh.publish("system_sleep_rest")#防止黑屏 - call_state = jrtc.get_state() - if call_state == 5: - camera_voice_answer_label.set_text("正在通话中...") - camera_voice_answer_label.set_pos(0, 20) - # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_voice_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_voice_answer_second_label.set_pos(0, 50) - camera_voice_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN) - camera_voice_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN) - - self.second_count+=1 - self.show_time() - - if call_state != 5: - self.time_out+=1 - if self.time_out >= 60 or (call_state == 0 and self.statu_open == 0 and self.time_out >= 5): - self.time_out = 0 - self.timer.stop() - - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - - - - - def show_time(self): - - if self.second_count >= 99*60: - total_hour = self.second_count//3600#小时 - total_min = (self.second_count%3600)//60#分钟 - total_sec = (self.second_count%3600)%60#秒 - camera_voice_answer_second_label.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec))) - - else: - total_min = self.second_count//60 - total_sec = self.second_count%60 - camera_voice_answer_second_label.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec))) - - def Close(self): - num = EventMesh.publish("get_volum_size") - if num == None: - num = 8 - self.aud.setVolume(num)#恢复原始音量 - self.timer.stop() - - def done_return(self): - pass - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - - - - -video_answer_screen = None -video_answer_label = None -video_answer_btn1 = None -video_answer_btn_label1 = None -class cameraVdieoAnswerScreen(Screen):#视频通话接听画面 - # - NAME = "vedio_answer" - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.meta_type = "popup" - self.count = 0 - - def initialization(self): - global video_answer_screen ,video_answer_btn_label1 - self.count = 0 - if video_answer_screen == None: - video_answer_screen = lv.obj() - print("video_answer_screen") - video_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_answer_btn_label1 = lv.label(video_answer_screen) - video_answer_btn_label1.set_pos(0, 50) - video_answer_btn_label1.set_text("正在接听中...") - video_answer_btn_label1.set_size(128, 40) - video_answer_btn_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_answer_btn_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - self.meta = video_answer_screen - EventMesh.publish("set_UI_high_priority", 1) - self.timer.start(1*1000,1,self.fun) - - def fun(self,*argc): - call_state = jrtc.get_state() - if call_state == 5: - self.timer.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "vedioing"}) - return - if call_state == 0: - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("return_prev_screen") - return - # print("vedio_answer call_state",call_state) - self.count+=1 - if self.count >= 20: - - self.timer.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - return - - EventMesh.publish("system_sleep_rest")#防止黑屏 - - - def Close(self): - self.timer.stop() - - def done_return(self): - pass - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - -camera_video_answer_screen = None -camera_video_answer_second_label = None -camera_video_answer_label = None -camera_video_answer_btn = None -camera_video_answer_btn_label = None -video_img_test = None -def jrtc_cb(close_sta): - print("jrtc callback:", close_sta) - if close_sta == 0 or close_sta == 1: - jrtc.close(0) - -jrtc.set_callback(jrtc_cb) -class VedioShowScreen(Screen):#正在视频通话中 - # - NAME = "vedioing" - - def __init__(self): - super().__init__() - self.meta = None - self.preview1 = None - self.aud = audio.Audio(0) - self.timer = osTimer() - self.statu_open = -1 - self.show_label = 0 - self.second_count = 0 - self.time_out = 0 - self.jrtc_init_state = 0 - self.meta_type = "popup" - EventMesh.subscribe("open_vedio_infor",self.open_vedio_infor) - EventMesh.subscribe("close_jrtc_event",self.close_jrtc_event) - EventMesh.subscribe("clear_jrtc_init_state",self.clear_jrtc_init_state)#清楚jrtcinit标志防止重复init - EventMesh.subscribe("get_jrtc_init_state",self.get_jrtc_init_state)#获取jrtcinit标志防止重复init - - def open_vedio_infor(self,event,msg): - if self.jrtc_init_state == 0: - self.jrtc_init_state = 1 - EventMesh.publish("set_dev_end_video",0) - call_id = EventMesh.publish("get_vedio_call_id")#对方的账号 - meet_id = EventMesh.publish("get_vedio_meet_id")#共有的会议id - call_type = EventMesh.publish("get_vedio_call_type")#呼叫类型 - tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据#云米平台不需要tokens - - # jrtc.init() - # jrtc.config_server("119.3.54.56:1050") - # jrtc.config("e99697f86096a74dbf635096", "us145a", "1234567890abcdef", "") - # jrtc.open("us144a", "",[15,129,128,128],[15,120,240,320]) - # jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) - - # data = ['6951832', '876226002021444', '1', '01lqlyqzQ4Gozdz8OJv1Mij2Y3PBq2y3+rtIA26Ge+m2QHTc/Vk=gufkGNMBiYhPjbq1tLCwtLKysLKws7a2tg=='] - jrtc.init() - tokens = str(tokens_data) - appkey = "efe9f8800a39d96244234097"#小见 - uid_key = "25v9C652123QL3N8" - - # appkey = "249e7d505516af0a7ed44097" - # uid_key = "qQI4gkB9FxH8J2cb" - imei = EventMesh.publish(constants.EVENT.GET_IMEI) - oneself_id = str(imei)#自己的账号默认是imei号 - jrtc.config(appkey,oneself_id,uid_key,tokens)#只初始化一次发起通话 - uid = str(call_id) - ticket = str(meet_id) - - print("uid ",uid,ticket,oneself_id) - #jrtc.set_rotate(0) - if call_type == 0:#语音通话不需要设置参数 - jrtc.open(uid,ticket,[],[]) - else: - jrtc.open(uid,ticket,[15,129,128,128],[15,120,240,320]) - jrtc.set_cam_angle(jrtc.CAM_ROTATE_270) - - - def close_jrtc_event(self,event,msg): - # print("close_jrtc_event") - jrtc.close(0) - pass - def clear_jrtc_init_state(self,event,msg): - self.jrtc_init_state = 0 - pass - - def get_jrtc_init_state(self,event,msg): - return self.jrtc_init_state - pass - - def initialization(self): - - global camera_video_answer_screen,video_img_test,camera_video_answer_btn_label,camera_video_answer_label,camera_video_answer_second_label,camera_video_answer_btn,vcamera_video_answer_btn_label - if camera_video_answer_screen == None: - camera_video_answer_screen = lv.obj() - print("camera_video_answer_screen") - camera_video_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_img_test = lv.img(camera_video_answer_screen) - ret = jrtc.set_img(video_img_test) - video_img_test.align(lv.ALIGN.CENTER, 0, 0) - video_img_test.set_size(128,128) - - - camera_video_answer_label = lv.label(camera_video_answer_screen) - camera_video_answer_label.set_pos(0, 20) - camera_video_answer_label.set_text("正在通话中...") - camera_video_answer_label.set_size(128, 40) - camera_video_answer_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - camera_video_answer_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - camera_video_answer_second_label = lv.label(camera_video_answer_screen) - camera_video_answer_second_label.set_pos(0, 50) - camera_video_answer_second_label.set_text(" ") - camera_video_answer_second_label.set_size(128, 40) - camera_video_answer_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - camera_video_answer_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - camera_video_answer_btn = lv.img(camera_video_answer_screen) - camera_video_answer_btn.add_flag(lv.obj.FLAG.CLICKABLE) - camera_video_answer_btn.set_pos(48, 90) - camera_video_answer_btn.set_size(32,32) - camera_video_answer_btn.set_src("U:/static/hang_up.png") - - camera_video_answer_btn_label = lv.label(camera_video_answer_screen) - camera_video_answer_btn_label.set_pos(38, 80) - camera_video_answer_btn_label.set_text(" ") - camera_video_answer_btn_label.set_size(52, 48) - camera_video_answer_btn_label.add_flag(lv.obj.FLAG.CLICKABLE) - - - camera_video_answer_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None) - camera_video_answer_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None) - self.meta = camera_video_answer_screen - - call_state = jrtc.get_state() - self.second_count = 0 - self.statu_open = 0 - self.time_out = 0 - - EventMesh.publish("set_UI_high_priority", 1) - if call_state == 5:#接通 - camera_video_answer_label.set_text("正在通话中...") - camera_video_answer_label.set_pos(0, 20) - # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_second_label.set_text("00:00") - camera_video_answer_second_label.set_pos(0, 50) - # camera_video_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN) - # camera_video_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN) - video_img_test.clear_flag(lv.obj.FLAG.HIDDEN) - else: - camera_video_answer_label.set_text("正在接听中...") - camera_video_answer_label.set_pos(0, 50) - # camera_video_answer_label.add_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_second_label.add_flag(lv.obj.FLAG.HIDDEN) - # camera_video_answer_btn.add_flag(lv.obj.FLAG.HIDDEN) - # camera_video_answer_btn_label.add_flag(lv.obj.FLAG.HIDDEN) - video_img_test.add_flag(lv.obj.FLAG.HIDDEN) - self.timer.start(1*1000,1,self.fun) - - - def close_cb(self,e): - self.statu_open = 1 - EventMesh.publish("set_dev_end_video",1) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - def fun(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.fun_cb,"data":0}) - - - def fun_cb(self,data): - EventMesh.publish("system_sleep_rest")#防止黑屏 - call_state = jrtc.get_state() - if call_state == 5: - camera_video_answer_label.set_text("正在通话中...") - camera_video_answer_label.set_pos(0, 20) - # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN) - camera_video_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN) - - video_img_test.clear_flag(lv.obj.FLAG.HIDDEN) - self.second_count+=1 - self.show_time() - # print("video call_state",call_state) - if call_state != 5: - self.time_out+=1 - if self.time_out >= 60 or (call_state == 0 and self.time_out >= 2 and self.statu_open != 1): - self.time_out = 0 - self.timer.stop() - # print("video call_state",call_state) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - - def show_time(self): - - if self.second_count >= 99*60: - total_hour = self.second_count//3600#小时 - total_min = (self.second_count%3600)//60#分钟 - total_sec = (self.second_count%3600)%60#秒 - camera_video_answer_second_label.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec))) - - else: - total_min = self.second_count//60 - total_sec = self.second_count%60 - camera_video_answer_second_label.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec))) - # camera_video_answer_second_label.set_text("%02d"%(total_min),"%02d"%(total_sec)) - - def Close(self): - num = EventMesh.publish("get_volum_size") - if num == None: - num = 8 - self.aud.setVolume(num)#恢复原始音量 - self.timer.stop() - - def done_return(self): - pass - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - def btn1_release(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - def btn8_press(self): - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - pass - - - - - -voice_call_screen = None -voice_call_img = None -voice_call_name_label = None -voice_call_answer = None -voice_call_hangup = None -voice_call_label = None -# CALL_LOG_MAX = 50 -class voiceInCallScreen(Screen):#语音通话打入中 - NAME = "voice_incall" - - def __init__(self): - super().__init__() - self.CALL_LOG_MAX = CALL_LOG_MAX - self.read_data = {} - self.meta_type = "popup" - self.aud = audio.Audio(0) - self.call_timer = osTimer() - self.call_timer1 = osTimer() - self.name = None - self.phonebook = {} - self.pro_state = 0 - self.meta = None - self.timeout = 0 - - def initialization(self): - global voice_call_screen,voice_call_img,voice_call_name_label,voice_call_answer,voice_call_hangup,voice_call_label - if voice_call_screen == None : - # -------------------------------------------vedio_call screen---------------------------------------------------------- - voice_call_screen = lv.obj() - print("voice_call_screen") - voice_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_call_label = lv.label(voice_call_screen) - voice_call_label.set_pos(0, 10) - voice_call_label.set_text("是否接听语音通话") - voice_call_label.set_size(128, 40) - voice_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - voice_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - # vedio_call_img = lv.img(voice_call_screen) - # vedio_call_img.set_pos(48, 10) - # vedio_call_img.set_size(32, 32) - # vedio_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") - # vedio_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_call_name_label = lv.label(voice_call_screen) - voice_call_name_label.set_pos(0, 50) - voice_call_name_label.set_text(" ") - voice_call_name_label.set_size(128, 40) - voice_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - voice_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_call_answer = lv.img(voice_call_screen) - voice_call_answer.set_size(32, 32) - voice_call_answer.add_flag(lv.obj.FLAG.CLICKABLE) - voice_call_answer.set_pos(84, 85) - voice_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - voice_call_answer.set_src("U:/static/answer.png") - - voice_call_hangup = lv.img(voice_call_screen) - voice_call_hangup.set_size(32, 32) - voice_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE) - voice_call_hangup.set_pos(11, 85) - voice_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - voice_call_hangup.set_src("U:/static/hang_up.png") - - voice_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)), - lv.EVENT.SHORT_CLICKED, None) - voice_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - self.meta = voice_call_screen - - - EventMesh.publish("set_UI_high_priority", 1) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - - voice_call_name_label.set_text(call_id) - - - def post_processor_after_initialization(self): - global voice_call_screen,voice_call_img,voice_call_name_label,voice_call_answer,voice_call_hangup - self.call_timer.start(6000, 1, self.call_timer_cb) - self.timeout = 0 - self.call_timer1.start(1*1000, 1, self.get_video_state) - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def call_timer_cb(self,e): - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def get_video_state(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.get_video_state_cb,"data":0}) - - def get_video_state_cb(self,data): - call_state = jrtc.get_state() - # print("vedio_incall",call_state) - self.timeout+=1 - if self.timeout >= 1*60: - self.timeout = 0 - self.call_timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("return_prev_screen") - - def answer(self,e): - self.call_timer.stop() - self.aud.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("clear_jrtc_init_state") - EventMesh.publish("open_vedio_infor") - EventMesh.publish("load_screen", {"screen": "voiceing"}) - - def Close(self): - self.call_timer.stop() - self.call_timer1.stop() - self.aud.stop() - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - - EventMesh.publish("return_prev_screen") - - def btn1_release(self): - pass - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - pass - - def done_left_to_right(self): - pass - - def done_right_to_left(self): - pass - - def done_bottom_to_top(self): - pass - - def done_top_to_bottom(self): - pass - - def done_return(self): - pass - - - -vedio_call_screen = None -vedio_call_img = None -vedio_call_name_label = None -vedio_call_answer = None -vedio_call_hangup = None -vedio_call_label = None -# CALL_LOG_MAX = 50 -class vedioCallingCallScreen(Screen):#视频通话打入中 - NAME = "vedio_incall" - - def __init__(self): - super().__init__() - self.CALL_LOG_MAX = CALL_LOG_MAX - self.read_data = {} - self.meta_type = "popup" - self.aud = audio.Audio(0) - self.call_timer = osTimer() - self.call_timer1 = osTimer() - self.name = None - self.phonebook = {} - self.pro_state = 0 - self.meta = None - self.timeout = 0 - EventMesh.subscribe("test_answer",self.test_answer) - - def initialization(self): - global vedio_call_screen,vedio_call_img,vedio_call_name_label,vedio_call_answer,vedio_call_hangup,vedio_call_label - if vedio_call_screen == None : - # -------------------------------------------vedio_call screen---------------------------------------------------------- - vedio_call_screen = lv.obj() - print("vedio_call_screen") - vedio_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - vedio_call_label = lv.label(vedio_call_screen) - vedio_call_label.set_pos(0, 10) - vedio_call_label.set_text("是否接听视频通话") - vedio_call_label.set_size(128, 40) - vedio_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - vedio_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - # vedio_call_img = lv.img(vedio_call_screen) - # vedio_call_img.set_pos(48, 10) - # vedio_call_img.set_size(32, 32) - # vedio_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") - # vedio_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - vedio_call_name_label = lv.label(vedio_call_screen) - vedio_call_name_label.set_pos(0, 50) - vedio_call_name_label.set_text(" ") - vedio_call_name_label.set_size(128, 40) - vedio_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - vedio_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - vedio_call_answer = lv.img(vedio_call_screen) - vedio_call_answer.set_size(32, 32) - vedio_call_answer.add_flag(lv.obj.FLAG.CLICKABLE) - vedio_call_answer.set_pos(84, 85) - vedio_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - vedio_call_answer.set_src("U:/static/answer.png") - - vedio_call_hangup = lv.img(vedio_call_screen) - vedio_call_hangup.set_size(32, 32) - vedio_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE) - vedio_call_hangup.set_pos(11, 85) - vedio_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - vedio_call_hangup.set_src("U:/static/hang_up.png") - - vedio_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)), - lv.EVENT.SHORT_CLICKED, None) - vedio_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - self.meta = vedio_call_screen - - vedio_call_label.set_text("是否接听视频通话") - - EventMesh.publish("set_UI_high_priority", 1) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - - vedio_call_name_label.set_text(call_id) - - - def post_processor_after_initialization(self): - global vedio_call_screen,vedio_call_img,vedio_call_name_label,vedio_call_answer,vedio_call_hangup - self.call_timer.start(6000, 1, self.call_timer_cb) - self.timeout = 0 - self.call_timer1.start(1*1000, 1, self.get_video_state) - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def call_timer_cb(self,e): - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def get_video_state(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.get_video_state_cb,"data":0}) - - def get_video_state_cb(self,data): - call_state = jrtc.get_state() - print("vedio_incall",call_state) - self.timeout+=1 - if self.timeout >= 1*60: - self.timeout = 0 - self.call_timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("return_prev_screen") - - def answer(self,e): - self.call_timer.stop() - self.aud.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("clear_jrtc_init_state") - EventMesh.publish("open_vedio_infor") - EventMesh.publish("load_screen", {"screen": "vedioing"}) - - def test_answer(self,event,msg): - self.call_timer.stop() - self.aud.stop() - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("clear_jrtc_init_state") - EventMesh.publish("open_vedio_infor") - EventMesh.publish("load_screen", {"screen": "vedioing"}) - - def Close(self): - self.call_timer.stop() - self.call_timer1.stop() - num = EventMesh.publish("get_volum_size") - if num == None: - num = 8 - self.aud.setVolume(num)#恢复原始音量 - self.aud.stop() - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - - EventMesh.publish("return_prev_screen") - - def btn1_release(self): - pass - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - pass - - def done_left_to_right(self): - pass - - def done_right_to_left(self): - pass - - def done_bottom_to_top(self): - pass - - def done_top_to_bottom(self): - pass - - def done_return(self): - pass - - - - - -video_outcall_screen = None -video_outcall_img = None -video_outcall_name = None -video_outcall_hangup_imgbtn = None -video_outcall_call = None -video_outcall_img_test = None -video_outcall_hangup_imgbtnlabel = None -class videoOutCallScreen(Screen):#正在拨号中...未打出 - NAME = "video_outcall" - - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.timer1 = osTimer() - self.aud = audio.Audio(0) - self.time_count = 0 - self.second_count = 0 - self.answer = 0 - - - def initialization(self): - EventMesh.publish("set_UI_high_priority", 1) - self.time_count = 0 - global video_outcall_screen,video_outcall_img,video_outcall_hangup_imgbtnlabel,video_outcall_img_test,video_outcall_name ,video_outcall_call,video_outcall_hangup_imgbtn - if video_outcall_screen == None: - video_outcall_screen = lv.obj() - print("video_outcall_screen") - video_outcall_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_outcall_img_test = lv.img(video_outcall_screen) - ret = jrtc.set_img(video_outcall_img_test) - video_outcall_img_test.align(lv.ALIGN.CENTER, 0, 0) - video_outcall_img_test.set_size(128,128) - video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN) - - video_outcall_name = lv.label(video_outcall_screen) - video_outcall_name.set_pos(0, 20) - video_outcall_name.set_size(LCD_X, 20) - video_outcall_name.set_text(" ") - video_outcall_name.set_long_mode(lv.label.LONG.DOT) - video_outcall_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_outcall_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_outcall_call = lv.label(video_outcall_screen) - video_outcall_call.set_pos(0, 50) - video_outcall_call.set_size(LCD_X, 40) - video_outcall_call.set_text("正在等待对方接听中...") - video_outcall_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_outcall_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_outcall_hangup_imgbtn = lv.img(video_outcall_screen) - video_outcall_hangup_imgbtn.set_size(32, 32) - video_outcall_hangup_imgbtn.set_src("U:/static/hang_up.png") - video_outcall_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - video_outcall_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - video_outcall_hangup_imgbtn.set_pos(48, 90) - - video_outcall_hangup_imgbtnlabel = lv.label(video_outcall_screen) - video_outcall_hangup_imgbtnlabel.set_pos(38, 80) - video_outcall_hangup_imgbtnlabel.set_text(" ") - video_outcall_hangup_imgbtnlabel.set_size(52, 48) - video_outcall_hangup_imgbtnlabel.add_flag(lv.obj.FLAG.CLICKABLE) - - video_outcall_hangup_imgbtnlabel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - - video_outcall_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - - - - self.meta = video_outcall_screen - if video_outcall_name != None: - video_outcall_name.set_text(self.meta_info)#名称 - - self.time_count = 0 - self.second_count = 0 - self.answer = 0 - EventMesh.publish("set_UI_high_priority", 1) - call_state = jrtc.get_state() - # print("video_outcall",call_state) - if call_state == 5: - video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN) - video_outcall_name.set_text("正在通话中...")# - video_outcall_name.set_pos(0, 20) - else: - video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN) - video_outcall_call.set_text("正在等待对方接听中...") - video_outcall_call.set_pos(0, 50) - video_outcall_name.set_text(self.meta_info)#名称 - video_outcall_name.set_pos(0, 20) - - self.timer1.start(1*1000,1,self.fun_cb) - - def post_processor_after_initialization(self): - pass - - def hangup(self,e): - self.answer = 1 - self.timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "videolist"}) - - pass - def fun_cb(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.fun,"data":0}) - - def fun(self,data): - call_state = jrtc.get_state() - print("video_outcall",call_state) - EventMesh.publish("system_sleep_rest")#防止黑屏 - if call_state == 5: - video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN) - video_outcall_name.set_text("正在通话中...")# - video_outcall_name.set_pos(0, 20) - video_outcall_call.set_pos(0, 50) - self.second_count += 1 - self.show_time() - - if call_state != 5:#未接通 1分钟未接通挂断或者 接通后app 网络不好也主动手表挂断 - self.time_count+=1 - if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 2 and self.answer != 1): - self.time_count = 0 - self.timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "videolist"}) - - def show_time(self): - - if self.second_count >= 99*60: - total_hour = self.second_count//3600#小时 - total_min = (self.second_count%3600)//60#分钟 - total_sec = (self.second_count%3600)%60#秒 - video_outcall_call.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec))) - - else: - total_min = self.second_count//60 - total_sec = self.second_count%60 - video_outcall_call.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec))) - - def Close(self): - num = EventMesh.publish("get_volum_size") - if num == None: - num = 8 - self.aud.setVolume(num)#恢复原始音量 - self.timer1.stop() - - def done_return(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - pass - - -voice_outcall_screen = None -voice_outcall_img = None -voice_outcall_name = None -voice_outcall_hangup_imgbtn = None -voice_outcall_call = None -voice_outcall_img_test = None -voice_outcall_hangup_imgbtnlabel = None -class voiceOutCallScreen(Screen):#等待对方接接听中 - NAME = "voice_outcall" - - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.aud = audio.Audio(0) - self.timer1 = osTimer() - self.time_count = 0 - self.second_count = 0 - self.answer = 0 - - - def initialization(self): - EventMesh.publish("set_UI_high_priority", 1) - self.time_count = 0 - global voice_outcall_screen,voice_outcall_img,voice_outcall_hangup_imgbtnlabel,voice_outcall_name ,voice_outcall_call,voice_outcall_hangup_imgbtn - if voice_outcall_screen == None: - voice_outcall_screen = lv.obj() - print("voice_outcall_screen") - voice_outcall_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_outcall_name = lv.label(voice_outcall_screen) - voice_outcall_name.set_pos(0, 20) - voice_outcall_name.set_size(LCD_X, 20) - voice_outcall_name.set_text(" ") - voice_outcall_name.set_long_mode(lv.label.LONG.DOT) - voice_outcall_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - voice_outcall_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_outcall_call = lv.label(voice_outcall_screen) - voice_outcall_call.set_pos(0, 50) - voice_outcall_call.set_size(LCD_X, 40) - voice_outcall_call.set_text("正在等待对方接听中...") - voice_outcall_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - voice_outcall_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - voice_outcall_hangup_imgbtn = lv.img(voice_outcall_screen) - voice_outcall_hangup_imgbtn.set_size(32, 32) - voice_outcall_hangup_imgbtn.set_src("U:/static/hang_up.png") - voice_outcall_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - voice_outcall_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - voice_outcall_hangup_imgbtn.set_pos(48, 90) - - voice_outcall_hangup_imgbtnlabel = lv.label(voice_outcall_screen) - voice_outcall_hangup_imgbtnlabel.set_pos(38, 80) - voice_outcall_hangup_imgbtnlabel.set_text(" ") - voice_outcall_hangup_imgbtnlabel.set_size(52, 48) - voice_outcall_hangup_imgbtnlabel.add_flag(lv.obj.FLAG.CLICKABLE) - - voice_outcall_hangup_imgbtnlabel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - - voice_outcall_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.SHORT_CLICKED, None) - - - - self.meta = voice_outcall_screen - if voice_outcall_name != None: - voice_outcall_name.set_text(self.meta_info)#名称 - - self.time_count = 0 - self.second_count = 0 - self.answer = 0 - EventMesh.publish("set_UI_high_priority", 1) - call_state = jrtc.get_state() - # print("video_outcall",call_state) - if call_state == 5: - # video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN) - voice_outcall_name.set_text("正在通话中...")# - voice_outcall_name.set_pos(0, 20) - else: - # video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN) - voice_outcall_call.set_text("正在等待对方接听中...") - voice_outcall_call.set_pos(0, 50) - voice_outcall_name.set_text(self.meta_info)#名称 - voice_outcall_name.set_pos(0, 20) - - self.timer1.start(1*1000,1,self.fun_cb) - - def post_processor_after_initialization(self): - pass - - def hangup(self,e): - self.answer = 1 - self.timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "videolist"}) - - pass - def fun_cb(self,*argc): - EventMesh.publish("publish_message_event_ui",{"func":self.fun,"data":0}) - - def fun(self,data): - call_state = jrtc.get_state() - print("voice_outcall",call_state) - EventMesh.publish("system_sleep_rest")#防止黑屏 - if call_state == 5: - voice_outcall_name.set_text("正在通话中...")# - voice_outcall_name.set_pos(0, 20) - voice_outcall_call.set_pos(0, 50) - self.second_count += 1 - self.show_time() - - if call_state != 5: - self.time_count+=1 - if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 2 and self.answer != 1): - self.time_count = 0 - self.timer1.stop() - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("load_screen", {"screen": "videolist"}) - - def show_time(self): - - if self.second_count >= 99*60: - total_hour = self.second_count//3600#小时 - total_min = (self.second_count%3600)//60#分钟 - total_sec = (self.second_count%3600)%60#秒 - voice_outcall_call.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec))) - - else: - total_min = self.second_count//60 - total_sec = self.second_count%60 - voice_outcall_call.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec))) - - def Close(self): - num = EventMesh.publish("get_volum_size") - if num == None: - num = 8 - self.aud.setVolume(num)#恢复原始音量 - self.timer1.stop() - - def done_return(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - pass - - - - -videolist_screen = None -videolist_cont = None -videolist_top_title = None -videolist_none_label = None -videolist_screen_list_screen = None -class videolistScreen(Screen): - NAME = "videolist" - - def __init__(self): - super().__init__() - # -------------------------------------------popup_menu screen---------------------------------------------------------- - self.meta = None - self.videobook = {} - self.count = 0 - self.phone_num_count = 0 - self.phone_num = {} - self.name = [] - self.check_json = 0 - self.timer = osTimer() - self.videolist_detail_list = None - EventMesh.subscribe("video_updata_list_show", self.video_updata_list_show) - self.MXA_phone_num = 50 #最大显示号码个数 - self.videolist_detail_listt_dict = [] - self.calling_btn = [] - self.is_sliding = 0 - - def post_processor_before_initialization(self): - data = EventMesh.publish("get_videobook_list") - if data != None: - self.check_json = data[0] - self.videobook = data[1] - self.count = 0 - - def initialization(self): - self.is_sliding = 0 - global videolist_screen,videolist_cont,videolist_top_title,videolist_none_label,videolist_screen_list_screen - if videolist_screen == None: - videolist_screen = lv.obj() - print("videolist_screen") - videolist_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - videolist_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - videolist_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) - - videolist_screen_list_screen = lv.obj(videolist_screen) - videolist_screen_list_screen.set_pos(0, 30) - videolist_screen_list_screen.set_size(LCD_X, LCD_Y-30) - videolist_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - videolist_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - videolist_screen_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) - - - videolist_top_title = lv.label(videolist_screen) - videolist_top_title.set_pos(0, 5) - videolist_top_title.set_size(LCD_X, 20) - videolist_top_title.set_text("视频通话账号") - videolist_top_title.set_long_mode(lv.label.LONG.WRAP) - videolist_top_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - videolist_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - videolist_none_label = lv.label(videolist_screen) - videolist_none_label.set_pos(0, 60) - videolist_none_label.set_size(LCD_X, 60) - videolist_none_label.set_text("无SIM卡或未添加账号") - videolist_none_label.set_long_mode(lv.label.LONG.WRAP) - videolist_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - videolist_none_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - self.videolist_detail_list = lv.obj(videolist_screen_list_screen) - self.videolist_detail_list.set_pos(0, 0) - self.videolist_detail_list.set_size(LCD_X, LCD_Y-30+1) - self.videolist_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - self.videolist_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - self.videolist_detail_list.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) - - for i in range(self.MXA_phone_num): - contact_btn = lv.btn(self.videolist_detail_list) - contact_btn.add_flag(lv.obj.FLAG.CLICKABLE) - contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,1)), - lv.EVENT.SHORT_CLICKED, None) - - contact_btn.add_flag(lv.obj.FLAG.HIDDEN) - # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) - - contact_btn_label_1 = lv.label(contact_btn) - contact_btn_label_1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - contact_btn_label_2 = lv.label(contact_btn) - # contact_btn_label_2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - contact_btn_label_3 = lv.label(contact_btn) - contact_btn_label_3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - self.videolist_detail_listt_dict.append({"contact_btn":contact_btn,"contact_btn_label_1":contact_btn_label_1,"contact_btn_label_2":contact_btn_label_2,"contact_btn_label_3":contact_btn_label_3}) - self.meta = videolist_screen - self.count = 0 - self.btn_create_list_show(0) - - def video_updata_list_show(self,event,msg): - self.post_processor_before_initialization() - self.timer.start(1 * 1000, 0, self.OutTime_s) - - def OutTime_s(self,e): - self.btn_create_list_show(1) - - def btn_create_list_show(self,state): - EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_list_show_screen,"data":state}) - - def btn_create_list_show_screen(self,state): - global videolist_screen,videolist_cont,videolist_top_title,videolist_none_label,videolist_screen_list_screen - print("btn_create_list_show_screen!!!!!!!!!!!") - if videolist_screen == None: - return - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#有卡时触发sos报警 无卡时自动关机 - self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN) - videolist_none_label.clear_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - else: - #读取json文件中的键作为label文本; - if self.check_json == True and len(self.videobook) != 0: - self.videolist_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) - videolist_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - j =0 - print("self.videobook sorted :{} len(self.videobook) :{}".format(sorted(self.videobook.keys()),len(self.videobook))) - phonebook_keys = sorted(self.videobook.keys()) - - - if len(self.videobook) > self.MXA_phone_num: - j = len(self.videobook) - self.MXA_phone_num - for i in range(self.MXA_phone_num): #字典 key value - if(j >= len(self.videobook)): - self.videolist_detail_listt_dict[i]["contact_btn"].add_flag(lv.obj.FLAG.HIDDEN) - continue - name = self.videobook[phonebook_keys[j]] - key_tmp = phonebook_keys[j] - - print("name :{} key_tmp:{}".format(name,key_tmp)) - - #contact_btn = lv.btn(self.contact_detail_list) - self.videolist_detail_listt_dict[i]["contact_btn"].set_size(LCD_X,45) - self.videolist_detail_listt_dict[i]["contact_btn"].set_pos(0,47*i ) - self.videolist_detail_listt_dict[i]["contact_btn"].set_style_bg_color(lv.color_make(0xff, 0xff, 0xff), lv.PART.MAIN | lv.STATE.DEFAULT) - # add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED) - # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)), - # lv.EVENT.SHORT_CLICKED, None) - - #contact_btn_label_1 = lv.label(contact_btn) - self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_pos(0, 0) - self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-5, 16) - self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_text(key_tmp[4:]) - self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT) - # self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT) - # self.videolist_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - #contact_btn_label_2 = lv.label(contact_btn) - self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_pos(0, 0) - self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_size(0, 0) - self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_text(key_tmp[4:]) - - - #contact_btn_label_3 = lv.label(contact_btn) - self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_pos(0, 20) - self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-5, 16) - self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_text(name) - self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_long_mode(lv.label.LONG.DOT) - # self.videolist_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - - self.videolist_detail_listt_dict[i]["contact_btn"].clear_flag(lv.obj.FLAG.HIDDEN) - #self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) - j+=1 - - if state == 1: - self.videolist_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) - - else: - if videolist_screen_list_screen != None: - videolist_none_label.clear_flag(lv.obj.FLAG.HIDDEN) #显示空文本 - if self.videolist_detail_list != None: - self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - def calling_cb(self,e,msg): - code = e.get_code() - indev = lv.indev_get_act() - lv.indev_t.wait_release(indev) - dir = lv.indev_t.get_gesture_dir(indev) - if code == lv.EVENT.GESTURE: #手势向左还是向右 还是向下向上 - if dir == lv.DIR.RIGHT: - pass - - elif code == lv.EVENT.SHORT_CLICKED: - if msg == 1: - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 - msg_text = e.get_target().get_child(1).get_text() - # EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) - EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text}) - else: - EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) - - - def calling(self,msg_text): - pass - # _msg = msg_text - # print("calling",_msg) - # EventMesh.publish("set_vedio_call_id", _msg)# - # EventMesh.publish("set_vedio_call_type", 1)# - # EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[1,_msg]) - # EventMesh.publish("load_screen", {"screen": "video_outcall","meta":_msg}) - - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - - - -video_select_mode_screen = None -video_select_mode_label1 = None -video_select_mode_label2 = None -video_select_mode_btn_label1 = None -video_select_mode_name = None -video_select_mode_btn =None -video_select_mode_btn1 = None -class videoModeScreen(Screen):#通话模式选择 - # - NAME = "vedio_mode" - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.meta_type = "popup" - self.count = 0 - self.is_sliding = 0 - - def initialization(self): - global video_select_mode_screen,video_select_mode_btn1,video_select_mode_btn,video_select_mode_label1,video_select_mode_label2,video_answer_btn_label1,video_select_mode_name - self.count = 0 - self.is_sliding = 0 - if video_select_mode_screen == None: - video_select_mode_screen = lv.obj() - print("video_select_mode_screen") - video_select_mode_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - video_select_mode_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,0)), lv.EVENT.GESTURE, None) - - video_select_mode_name = lv.label(video_select_mode_screen) - video_select_mode_name.set_pos(0, 20) - video_select_mode_name.set_text(" ") - video_select_mode_name.set_size(128, 40) - video_select_mode_name.add_flag(lv.obj.FLAG.CLICKABLE) - video_select_mode_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_select_mode_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_select_mode_btn = lv.btn(video_select_mode_screen) - video_select_mode_btn.set_pos(4, 60) - video_select_mode_btn.set_size(120, 26) - video_select_mode_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - video_select_mode_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) - video_select_mode_btn.set_style_radius(30,0) - - video_select_mode_label1 = lv.label(video_select_mode_btn) - video_select_mode_label1.set_text("语音通话") - video_select_mode_label1.set_size(128, 25) - video_select_mode_label1.set_pos(0,5) - video_select_mode_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_select_mode_label1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - # video_select_mode_label1 = lv.label(video_select_mode_screen) - # video_select_mode_label1.set_pos(0, 60) - # video_select_mode_label1.set_text("语音通话") - # video_select_mode_label1.set_size(128, 30) - # video_select_mode_label1.add_flag(lv.obj.FLAG.CLICKABLE) - # video_select_mode_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - # video_select_mode_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - video_select_mode_btn1 = lv.btn(video_select_mode_screen) - video_select_mode_btn1.set_pos(4, 90) - video_select_mode_btn1.set_size(120, 26) - video_select_mode_btn1.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - video_select_mode_btn1.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) - video_select_mode_btn1.set_style_radius(30,0) - - video_select_mode_label2 = lv.label(video_select_mode_btn1) - video_select_mode_label2.set_text("视频通话") - video_select_mode_label2.set_size(128, 25) - video_select_mode_label2.set_pos(0,5) - video_select_mode_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - video_select_mode_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - # video_select_mode_label2 = lv.label(video_select_mode_screen) - # video_select_mode_label2.set_pos(0, 90) - # video_select_mode_label2.set_text("视频通话") - # video_select_mode_label2.set_size(128, 38) - # video_select_mode_label2.add_flag(lv.obj.FLAG.CLICKABLE) - # video_select_mode_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - # video_select_mode_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.meta = video_select_mode_screen - - video_select_mode_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,1)), - lv.EVENT.SHORT_CLICKED, None) - # video_select_mode_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,0)), lv.EVENT.PRESSING, None) - - video_select_mode_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,2)), - lv.EVENT.SHORT_CLICKED, None) - # video_select_mode_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,1)), lv.EVENT.PRESSING, None) - - if self.meta_info != None: - if len(str(self.meta_info)) != 0: - video_select_mode_name.set_text("{}".format(self.meta_info)) - else: - video_select_mode_name.set_text(" ") - else: - video_select_mode_name.set_text(" ") - - self.timer.start(1*1000,1,self.fun) - - - def fun(self,*argc): - self.count+=1 - if self.count <= 30: - EventMesh.publish("system_sleep_rest")#防止黑屏 - else: - self.timer.stop() - EventMesh.publish("return_prev_screen") - pass - def calling_vedio_cb(self,e,data):#视频通话 - code = e.get_code() - indev = lv.indev_get_act() - lv.indev_t.wait_release(indev) - dir = lv.indev_t.get_gesture_dir(indev) - if code == lv.EVENT.GESTURE: - if dir == lv.DIR.RIGHT: - pass - - elif code == lv.EVENT.SHORT_CLICKED: - if data == 1: #语音通话 - msg_text = [self.meta_info,0] - EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) - - elif data == 2:# 视频通话 - msg_text = [self.meta_info,1] - EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) - - def calling(self,msg_text): - _msg = msg_text[0] - mode = msg_text[1] - print("calling",msg_text,_msg,mode) - if mode == 1:#0是语音 1是视频通话 - EventMesh.publish("load_screen", {"screen": "video_outcall","meta":_msg}) - else: - EventMesh.publish("load_screen", {"screen": "voice_outcall","meta":_msg}) - - EventMesh.publish("set_vedio_call_id", _msg)# - EventMesh.publish("set_vedio_call_type", mode)# - EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[mode,_msg]) - - def Close(self): - self.timer.stop() - - def done_return(self): - EventMesh.publish("return_prev_screen") - - - def btn1_release(self): - EventMesh.publish("return_prev_screen") - pass - - def btn8_press(self): - EventMesh.publish("return_prev_screen") - pass - - -style_screen_calendar_1_extra_header_main_default = lv.style_t() -style_screen_calendar_1_extra_header_main_default.init() -style_screen_calendar_1_extra_header_main_default.set_bg_color(lv.color_make(0x21,0x95,0xf6)) -style_screen_calendar_1_extra_header_main_default.set_bg_grad_color(lv.color_make(0x21,0x95,0xf6)) -style_screen_calendar_1_extra_header_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) -style_screen_calendar_1_extra_header_main_default.set_bg_opa(255) -style_screen_calendar_1_extra_header_main_default.set_text_color(lv.color_make(0xff,0xff,0xff)) -style_screen_calendar_1_extra_header_main_default.set_text_font(lv.K01_font_16_ALL) - -style_screen_calendar_1_main_main_default = lv.style_t() -style_screen_calendar_1_main_main_default.init() -style_screen_calendar_1_main_main_default.set_radius(0) -style_screen_calendar_1_main_main_default.set_bg_color(lv.color_make(0xff,0xff,0xff)) -style_screen_calendar_1_main_main_default.set_bg_grad_color(lv.color_make(0xff,0xff,0xff)) -style_screen_calendar_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) -style_screen_calendar_1_main_main_default.set_bg_opa(255) -style_screen_calendar_1_main_main_default.set_border_color(lv.color_make(0xc0,0xc0,0xc0)) -style_screen_calendar_1_main_main_default.set_border_width(1) -style_screen_calendar_1_main_main_default.set_border_opa(255) - -# add style for screen_calendar_1 - - - -rrestor_confirm_n_screen = None -rrestor_confirm_n_screen_label = None - -# -class restore_confirmScreen(Screen): - NAME = "restore_confirm" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.count = 0 - self.timer1 = osTimer() - self.timer2 = osTimer() - self.timer3 = osTimer() - - EventMesh.subscribe("app_factory_cb",self.app_factory_cb) - - def initialization(self): - global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label - if rrestor_confirm_n_screen == None : - rrestor_confirm_n_screen = lv.obj() - print("rrestor_confirm_n_screen") - rrestor_confirm_n_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # add style for watchface - rrestor_confirm_n_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) - #进入图片 - - rrestor_confirm_n_screen_label = lv.label(rrestor_confirm_n_screen) - rrestor_confirm_n_screen_label.set_pos(0, 40) - rrestor_confirm_n_screen_label.set_size(128, 60) - rrestor_confirm_n_screen_label.set_text("正在恢复出厂中\n请稍等...") - rrestor_confirm_n_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - rrestor_confirm_n_screen_label.set_long_mode(lv.label.LONG.WRAP) - rrestor_confirm_n_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - - self.meta = rrestor_confirm_n_screen - self.timer1.start(1000,1,self.timer_cb_onescond) - - ret = 0 - ret = ql_fs.path_exists("/usr/static/storage_file")#电话本 - if ret == True: - ql_fs.rmdirs("/usr/static/storage_file") - ql_fs.mkdirs("/usr/static/storage_file") - - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂 - EventMesh.publish(constants.PROTOCOL.DLT_SEND) - self.timer2.start(4000,0,self.timer_cb_threescond) - - def app_factory_cb(self,event,msg): - ret = 0 - ret = ql_fs.path_exists("/ext/static/storage_file")#电话本 - if ret == True: - ql_fs.rmdirs("/ext/static/storage_file") - ql_fs.mkdirs("/ext/static/storage_file") - EventMesh.publish("alipay_unbind") - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂 - EventMesh.publish(constants.PROTOCOL.DLT_SEND) - self.timer3.start(4000,0,self.timer_cb_threescond) - pass - - def Close(self): - self.timer1.stop() - self.timer2.stop() - - def timer_cb_threescond(self,e): - - Power.powerRestart() - - def timer_cb_onescond(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 - - - def done_left_to_right(self): - pass - def done_right_to_left(self): - pass - def done_bottom_to_top(self): - pass - def done_top_to_bottom(self): - pass - def done_return(self): - pass - def done_click(self): - pass - - def btn8_press(self): - pass - def btn1_press(self): - pass - def btn1_release(self): - pass - - - -#from ui_WatchFaceScreen import WatchFaceScreen -class UI(object): +#from ui_WatchFaceScreen import WatchFaceScreen +class UI(object): def __init__(self): #self.screen = WatchFaceScreen() #self.screen_old = self.screen @@ -10271,6 +8388,7 @@ class UI(object): utime.sleep_ms(200) self.sleep_lock = 1 self.sleep_flag = 0 + EventMesh.publish("set_lcd_state",self.sleep_flag) self.PWM_backlight = PWM(PWM.PWM0, PWM.ABOVE_10US, 0, 1000) self.PWM_backlight.open() #lcd_ctrl.write(0) @@ -10282,7 +8400,7 @@ class UI(object): tp_cst816.suspend() lcd.lcd_display_off() #utime.sleep_ms(80) - EventMesh.publish("set_lcd_state",self.sleep_flag) + self.sleep_lock = 0 self.screen.lcd_off() self.system_sleep_timer.stop() diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index bfcac767..a3ee08f4 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -158,8 +158,11 @@ watchface1_weather_unit_img.set_size(11, 11) watchface1_weather_unit_img.set_src("U:/static/degree.png") watchface1_weather_unit_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - +watchface1_long_press_event_label = lv.label(Watchface1) +watchface1_long_press_event_label.set_pos(0, 0) +watchface1_long_press_event_label.set_size(128,128) +watchface1_long_press_event_label.set_text(" ") +watchface1_long_press_event_label.add_flag(lv.obj.FLAG.CLICKABLE) class WatchFace1(): NAME = "Watchface1" @@ -168,7 +171,17 @@ class WatchFace1(): print("Watchface1:__init__") self.meta = Watchface1 Watchface1.set_parent(main_menu)#设置父控件 + watchface1_long_press_event_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)), + lv.EVENT.LONG_PRESSED, None) + def button_cb(self,e,msg): + code = e.get_code() + indev = lv.indev_get_act() + lv.indev_t.wait_release(indev) + dir = lv.indev_t.get_gesture_dir(indev) + if code == lv.EVENT.LONG_PRESSED: #进入表盘编辑界面 + print("enter watchface edit!!!!!!\r\n") + def initialization(self,main_menu): print("Watchface1:initialization") @@ -409,7 +422,7 @@ class WatchFace(): if check_txt == True: if watchface1_bg_img != None: watchface1_bg_img.set_src("U:/static/storage_file/aigc_dial.jpg") - + for wat in self.watchface_list: if wat.NAME == self.watchface_style_num : self.watchface_style = wat diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py index b37f2653..a9f57a0f 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -1095,6 +1095,7 @@ class RestartScreen(Screen): def __init__(self): super().__init__() self.meta = restart_screen + self.timer = osTimer() self.old_x = 0 # restart_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.SHORT_CLICKED, None) # restart_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.SHORT_CLICKED, None) @@ -1113,12 +1114,12 @@ class RestartScreen(Screen): code = e.get_code() value_slider = screen_slider_1.get_value() total_len = 0+value_slider - if total_len >= 100-15: - total_len = 100-15 + if total_len >= 100-20: + total_len = 100-20 if total_len <= 10: total_len = 10 - if total_len >= 100-15: + if total_len >= 100-20: screen_slider_1.set_value(100, False) if total_len >= 20: @@ -1134,19 +1135,19 @@ class RestartScreen(Screen): if code == lv.EVENT.RELEASED: value_slider = screen_slider_1.get_value() # print("RELEASED save_choice1111111!!!!!!",total_len,value_slider,state_on) - if total_len < 100-15: + if total_len < 100-20: screen_slider_1.set_value(10, False) screen_slider_img.set_pos(10,60) screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) else: + screen_slider_img.set_pos(90,60) screen_slider_1.set_value(100, False) - self.confirm(0) - pass - - # print("save_choice!!!!!!",value_slider) - pass - + self.timer.start(100,0,self.start_cb) + + def start_cb(self,*argc): + self.confirm(0) def confirm(self, e): + # EventMesh.publish("system_sleep_rest")#防止黑屏 Power.powerRestart() def concel(self, e): @@ -1347,12 +1348,12 @@ class PoweroffScreen(Screen): code = e.get_code() value_slider = poweroff_screen_slider_1.get_value() total_len = 0+value_slider - if total_len >= 100-15: - total_len = 100-15 + if total_len >= 100-20: + total_len = 100-20 if total_len <= 10: total_len = 10 - if total_len >= 100-15: + if total_len >= 100-20: poweroff_screen_slider_1.set_value(100, False) if total_len >= 20: @@ -1366,11 +1367,12 @@ class PoweroffScreen(Screen): if code == lv.EVENT.RELEASED: value_slider = poweroff_screen_slider_1.get_value() - if total_len < 100-15: + if total_len < 100-20: poweroff_screen_slider_1.set_value(10, False) poweroff_screen_slider_img.set_pos(10,60) poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) else: + poweroff_screen_slider_img.set_pos(90,60) poweroff_screen_slider_1.set_value(100, False) self.confirm(0) pass @@ -1454,6 +1456,13 @@ poweron_screen = lv.obj() print("poweron_screen") poweron_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) +# poweron_img = lv.img(poweron_screen) +# poweron_img.set_size(80,80) +# poweron_img.set_pos(24,24) +# poweron_img.set_src("U:/static/AI_MAIN_ICON.png") +# # screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE) +# poweron_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + poweron_label = lv.label(poweron_screen) poweron_label.set_text("WELCOME") poweron_label.align(lv.ALIGN.CENTER, 0, 0)