From: dxy15521469561 <1731678236@qq.com> Date: Tue, 16 Jul 2024 09:48:22 +0000 (+0800) Subject: K01: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9ff1fe45e969407b44595963819d5abc4cec065a;p=mirrors%2FASR1603_G5.git K01: 添加缺失的文件 --- diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_video.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_video.py new file mode 100644 index 00000000..e66d9d32 --- /dev/null +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_video.py @@ -0,0 +1,1989 @@ +import modem +import osTimer +import utime +import lvgl as lv +import EventMesh +from machine import Timer +from ui import Screen +from common import Abstract, LogAdapter +from machine import RTC +import ujson +import ql_fs +from misc import Power +import audio +from ui import LCD_X,LCD_Y,style_press_btn,style_font_youyuan_20,style_screen,style_font_youyuan_20_black,style_font_youyuan_20_gray,style_img,style_video_btn,style_screen,style_font_youyuan_20 +import ntptime +import constants +import camera +import uos + +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" + + def __init__(self): + super().__init__() + self.meta = None + self.meta_type = "popup" + + + 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) + + 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 + + + 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"}) + + + 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"}) + 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 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) + + 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 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"}) + + + 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"}) + 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_cam_angle(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保存图片 + 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, "U:/static/album/1_camera.jpg") + 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 btn8_press(self): + EventMesh.publish("load_screen", {"screen": "main_menu"}) + 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 + + +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 + + + +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_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) + 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_second_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() + + 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 +class voiceInCallScreen(Screen):#语音通话打入中 + NAME = "voice_incall" + + def __init__(self): + super().__init__() + self.meta_type = "popup" + self.aud = audio.Audio(0) + self.call_timer = osTimer() + self.call_timer1 = osTimer() + 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, 40) + 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(self.meta_info) + + 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): + EventMesh.publish("system_sleep_rest")#防止黑屏 + self.timeout+=1 + if self.timeout >= 1*30: + self.timeout = 0 + self.aud.stop() + 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 +class vedioCallingCallScreen(Screen):#视频通话打入中 + NAME = "vedio_incall" + + def __init__(self): + super().__init__() + self.meta_type = "popup" + self.aud = audio.Audio(0) + self.call_timer = osTimer() + self.call_timer1 = osTimer() + self.meta = None + self.timeout = 0 + + 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, 40) + 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(self.meta_info) + + + 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): + EventMesh.publish("system_sleep_rest")#防止黑屏 + call_state = jrtc.get_state() + # print("vedio_incall",call_state) + self.timeout+=1 + if self.timeout >= 1*30: + self.aud.stop() + 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 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, 5) + video_outcall_name.set_size(LCD_X, 35) + 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, 45) + video_outcall_name.set_text(self.meta_info)#名称 + video_outcall_name.set_pos(0, 5) + + 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 >= 5 and self.answer != 1): + # if self.time_count >= 1*60: + 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, 5) + voice_outcall_name.set_size(LCD_X, 35) + 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, 45) + voice_outcall_name.set_text(self.meta_info)#名称 + voice_outcall_name.set_pos(0, 5) + + 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 >= 5 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_video_btn, lv.PART.MAIN | lv.STATE.DEFAULT) + + contact_btn_label_1 = lv.label(contact_btn) + contact_btn_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + contact_btn_label_2 = lv.label(contact_btn) + contact_btn_label_3 = lv.label(contact_btn) + # # contact_btn_label_2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # contact_btn_label_3 = lv.label(contact_btn) + # contact_btn_label_3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + # contact_btn_label_4 = lv.label(contact_btn) + + 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()),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-10,30) + self.videolist_detail_listt_dict[i]["contact_btn"].set_pos(5,32*i ) + # self.videolist_detail_listt_dict[i]["contact_btn"].set_style_bg_color(lv.color_make(128, 128, 128), 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_1"].set_pos(5, 5) + self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-18, 25) + self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_text(name) + 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_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + + 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(name) + + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_pos(0, 0) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_size(0, 0) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_text(key_tmp[4:]) + + 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: + msg_text = str(e.get_target().get_child(1).get_text()) + call_id = str(e.get_target().get_child(2).get_text()) + # EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":[msg_text,call_id]}) + 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])) != 0: + video_select_mode_name.set_text("{}".format(self.meta_info[0])) + 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][0] + call_id = msg_text[0][1] + 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", call_id)# + EventMesh.publish("set_vedio_call_type", mode)# + EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[mode,call_id]) + + 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 +