--- /dev/null
+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
+