K01:
authordxy15521469561 <1731678236@qq.com>
Sat, 6 Jul 2024 07:35:57 +0000 (15:35 +0800)
committerdxy15521469561 <1731678236@qq.com>
Sat, 6 Jul 2024 07:35:57 +0000 (15:35 +0800)
优化

2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/lcd.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py

index 0db46bb..034c280 100644 (file)
@@ -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
index 639dae6..5b476e4 100644 (file)
@@ -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:
         #销毁线程
index 77a4262..cad776a 100644 (file)
@@ -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))
index 29fbabe..7973df4 100644 (file)
@@ -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...")
 
 
index 7ce11f4..0d50661 100644 (file)
@@ -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()))    
index fd384fd..e023d3a 100644 (file)
@@ -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)                
 
 
index 05daaab..1bf7ac8 100644 (file)
@@ -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):
index 7b48eec..90f3689 100644 (file)
@@ -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()
index bfcac76..a3ee08f 100644 (file)
@@ -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
index b37f265..a9f57a0 100644 (file)
@@ -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)