From: dxy15521469561 <1731678236@qq.com> Date: Thu, 30 Nov 2023 06:57:43 +0000 (+0800) Subject: K01: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9f439f6b8970808610d6d288763fdd4ebb325ee6;p=mirrors%2FASR1603_G5.git K01: 视频通话优化 --- diff --git a/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a b/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a index 2109dc2d..3a835ed2 100644 Binary files a/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a and b/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a differ diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_capture.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_capture.c index 6ce1f549..48520013 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_capture.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_capture.c @@ -105,7 +105,7 @@ void Helios_SaveImage(unsigned char* pYUVBuffer, int width, int height) { char name[256] = {0}; - sprintf(name, "U:/%s.jpeg",image_info.image_name); + sprintf(name, "U:/%s.jpg",image_info.image_name); CAPTURE_LOG("SaveImage %d %d %d %d\n", width, height, image_info.img_width, image_info.img_height); if(image_info.img_width <= width && image_info.img_height <= height && pYUVBuffer != NULL) { diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c index 0a0a086c..7f419b4c 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c @@ -120,7 +120,6 @@ static Helios_Thread_t int_handle_task_id = 0; //mp_buffer_info_t roomid, ticket; static struct jrtc_t* test = NULL; -int self_close_sta = 0; static c_callback_t *usr_callback = NULL; static c_callback_t cb = {0}; @@ -204,11 +203,12 @@ void jrtc_handle(void * argv) { continue; } if (open_state == 1) { - if (jrtc_state(test) == JRTC_CLOSED) { - //HELIOS_JRTC_LOG("105\n"); + if (test == NULL) { test = jrtc_open(roomid_temp, ticket_temp, &recieve, &send); - //lcd_init(); - HELIOS_JRTC_LOG("107\n"); + if (test == NULL) { + HELIOS_JRTC_LOG("jrtc_open fail\n"); + continue; + } jrtc_activate(test, JRTC_AUDIO|JRTC_CAMERA); // 等待对方视频对讲结束 while(jrtc_state(test) != JRTC_CLOSED) @@ -216,22 +216,23 @@ void jrtc_handle(void * argv) { struct jrtc_image_t* image; image = &recieve; if (image->get != image->put) { - //Helios_LCD_Write(image->data, 0, 0, image->width - 1, image->height - 1); update_display(image->data, image->width, image->height); image->get = image->put; } Helios_msleep(20); } - if (self_close_sta == 0) { - // 判断是对方挂断,产生回调 - st_CallBack_jrtc *jrtc_int = malloc(sizeof(st_CallBack_jrtc)); - if(NULL != jrtc_int) { - jrtc_int->result = self_close_sta; - jrtc_int->callback = cb; - qpy_send_msg_to_callback_deal_thread(CALLBACK_TYPE_ID_JRTC, jrtc_int); - } + + // 判断是对方挂断,产生回调 + st_CallBack_jrtc *jrtc_int = malloc(sizeof(st_CallBack_jrtc)); + if(NULL != jrtc_int) { + jrtc_int->result = 0; + jrtc_int->callback = cb; + qpy_send_msg_to_callback_deal_thread(CALLBACK_TYPE_ID_JRTC, jrtc_int); } } + else { + HELIOS_JRTC_LOG("jrtc has opened\n"); + } } } } @@ -314,6 +315,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mp_jrtc_config_obj, 4 ,mp_jrtc_config); STATIC mp_obj_t mp_jrtc_open (size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) { int ret = 0; + + HELIOS_JRTC_LOG("mp_jrtc_open execute!!!"); if(protect != 1){ HELIOS_JRTC_LOG("Not config\n"); ret = -1; @@ -357,7 +360,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mp_jrtc_open_obj, 4, mp_jrtc_open); STATIC mp_obj_t mp_jrtc_close (mp_obj_t err_j) { int ret = 0; - HELIOS_JRTC_LOG("257"); + HELIOS_JRTC_LOG("mp_jrtc_close execute!!!"); int err = mp_obj_get_int(err_j); if((err != 0) && (err != 1) && (err != 64) && (err != 71) && (err != 90) && (err != 104) && (err != 101) && (err != 111) && (err != 128) && (err != 129) && (err != 130) && (err != 131) && @@ -369,17 +372,14 @@ STATIC mp_obj_t mp_jrtc_close (mp_obj_t err_j) return mp_obj_new_int(ret); } else { - //err = err_j; if (test == NULL) { - mp_raise_ValueError("point fail\n"); + return mp_obj_new_int(1); } MP_THREAD_GIL_EXIT(); jrtc_close(test, err); MP_THREAD_GIL_ENTER(); test = NULL; ret = 1; - self_close_sta = 1; - //Helios_DataCall_Stop(1, 0, 0); return mp_obj_new_int(ret); } @@ -387,7 +387,13 @@ STATIC mp_obj_t mp_jrtc_close (mp_obj_t err_j) STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_jrtc_close_obj, mp_jrtc_close); +STATIC mp_obj_t mp_jrtc_get_state(void) +{ + int sta = jrtc_state(test); + return mp_obj_new_int(sta); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_jrtc_get_state_obj, mp_jrtc_get_state); @@ -402,6 +408,7 @@ STATIC const mp_rom_map_elem_t jrtc_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_config_server), MP_ROM_PTR(&mp_jrtc_config_server_obj)}, {MP_ROM_QSTR(MP_QSTR_set_img), MP_ROM_PTR(&set_img_obj)}, {MP_ROM_QSTR(MP_QSTR_remove_img), MP_ROM_PTR(&remove_img_obj)}, + {MP_ROM_QSTR(MP_QSTR_get_state), MP_ROM_PTR(&mp_jrtc_get_state_obj)}, }; /* 把modjrtc_globals_table注册到 mp_module_modjrtc_globals里面去 */ diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py index e6bd4bb5..35ed3047 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py @@ -697,6 +697,8 @@ class DeviceInfoManager(Abstract): self.no_smi_count = 0 self.no_smi_state = 0 + self.alarm_count = 0 + self.charge_full_count = 0 self.GPS_step_t = 0#记录步数 self.usb = USB() @@ -850,6 +852,11 @@ class DeviceInfoManager(Abstract): # print("date_tmp......01....{} time_tmp:{}\r\n".format(date_tmp,time_tmp)) """电量小于20% 5分钟提醒一次""" + if self.alarm_count <= 120: + self.alarm_count+=10 + if self.alarm_count == 60: + EventMesh.publish("set_rtc_alarm") + get_low_btn = EventMesh.publish("get_low_bat_btn")# battery = EventMesh.publish("screen_get_battery") # print("get_low_btn:{} self.bat_time:{}".format(get_low_btn,self.bat_time)) diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py index 3bca18b8..a17e6781 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py @@ -25,7 +25,7 @@ import usys def server_init(server_type = None): #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 if server_type == None: - server_type = 4 + server_type = 1 #print("server_init:server_type:{}".format(server_type)) d_server_addr = "api.xcloudtech.com" d_server_port = 9000 diff --git a/2.sdk/project/K01/new.bat b/2.sdk/project/K01/new.bat index 424606e4..3e007de4 100644 --- a/2.sdk/project/K01/new.bat +++ b/2.sdk/project/K01/new.bat @@ -5,31 +5,31 @@ del images /q @GOTO :STEP1 ..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1048576 -i .\images\ext_fs.bin if errorlevel 1 ( - echo "ext_fs.binÉú³Éʧ°Ü !!!!!!!!!!!!!!! " + echo "ext_fs.bin生成失败 !!!!!!!!!!!!!!! " goto exit ) if errorlevel 0 ( - echo "ext_fs.binÉú³É³É¹¦ !!!!!!!!!!!!!!! " + echo "ext_fs.bin生成成功 !!!!!!!!!!!!!!! " ) :STEP1 -..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c usr -b 4096 -r 4096 -p 4096 -s 819200 -i .\images\customer_fs.bin +..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c usr -b 4096 -r 4096 -p 4096 -s 716800 -i .\images\customer_fs.bin if errorlevel 1 ( - echo "customer_fs.binÉú³Éʧ°Ü Çë¼ì²éusrĿ¼ÊÇ·ñ´óÓÚ316K!!!!!!!!!!!!!!!" + echo "customer_fs.bin生成失败 请检查usr目录是否大于316K!!!!!!!!!!!!!!!" goto exit ) if errorlevel 0 ( - echo "customer_fs.binÉú³É³É¹¦ !!!!!!!!!!!!!!! " + echo "customer_fs.bin生成成功 !!!!!!!!!!!!!!! " ) %copy font\ext_font.bin images\ext_font.bin% ..\..\Helios_SDK\tools\common\win32\7z\7z a sdk\system\platform\ASR_1606\boards\EG810MCN_GA_VOLTE\images\firmware_base_release_pack.zip .\images\ if errorlevel 0 ( - echo imagesѹËõ³É¹¦!!!!!!!!!!!!!! + echo images压缩成功!!!!!!!!!!!!!! ) if errorlevel 1 ( - echo imagesѹËõʧ°Ü!!!!!!!!!!!!!!!!!! + echo images压缩失败!!!!!!!!!!!!!!!!!! goto exit ) xcopy sdk\ ..\..\Helios_SDK\ /e/h/y diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py index f6a0f769..63837faa 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -516,7 +516,7 @@ class WechatScreen(Screen): buf = bytearray(ql_fs.path_getsize(path)) fd.readinto(buf) senddata = [self.countdown_old,buf] - EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata) Wechat_log("sending2") diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py index 604a3c4c..49a69271 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py @@ -26,6 +26,9 @@ class PROTOCOL: TK_SEND = "TK_SEND" TK_RECV = "TK_RECV" + TKS_SEND = "TKS_SEND" + TKS_RECV = "TKS_RECV" + MESSAGE_SEND = "MESSAGE_SEND" MESSAGE_RECV = "MESSAGE_RECV" @@ -137,6 +140,12 @@ class PROTOCOL: RCALLING_SEND = "RCALLING_SEND" RCALLING_RECV = "RCALLING_RECV" + AGTALK_SEND = "AGTALK_SEND" + AGTALK_RECV = "AGTALK_RECV" + + RTALK_SEND = "RTALK_SEND" + RTALK_RECV = "RTALK_RECV" + class EVENT: CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND" START_LOCATION = "START_LOCATION" diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py index 6de8b066..ae05827a 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py @@ -79,6 +79,7 @@ def main_init(): print("init5:{}".format(utime.localtime())) ui.add_screen(MainMenuScreen()) + ui.add_screen(_ui.deletealbumScreen()) ui.add_screen(_ui.PopupScreen()) ui.add_screen(_ui.PhoneScreen()) ui.add_screen(_ui.HeartrateScreen()) @@ -93,6 +94,9 @@ def main_init(): ui.add_screen(_ui.TemperatureScreen()) ui.add_screen(_ui.ContactsScreen()) ui.add_screen(_ui.cameraVdieoAnswerScreen()) + ui.add_screen(_ui.vedioCallingCallScreen()) + ui.add_screen(_ui.VedioShowScreen()) + ui.add_screen(_ui.videoOutCallScreen()) from appWechat import WechatScreen,NewWechatPopupScreen ui.add_screen(WechatScreen()) @@ -161,6 +165,7 @@ def main_init(): ui.add_screen(_ui.restore_confirmScreen()) ui.add_screen(_ui.down_Screen()) ui.add_screen(_ui.up_Screen()) + ui.add_screen(_ui.videolistScreen()) from pp_main import allppPopupScreen,delOnePopupScreen,ppListScreen,noppPopupScreen,delppsucessPopupScreen,ppMainScreen,addfaileppPopupScreen,ppMainPopupScreen,addppPopupScreen,addedppPopupScreen,ownaddppPopupScreen ui.add_screen(ppMainScreen()) @@ -180,7 +185,7 @@ def main_init(): # ui.add_screen(_ui.Setting3Screen()) print("init6:{}".format(utime.localtime())) - from protocol import RCALLING_ProtoCol,AGTALK_ProtoCol,CALLING_ProtoCol,MEMBERS_ProtoCol,JPREG_ProtoCol,ppsrvvoicemsg_ProtoCol,ppdevvoicemsg_ProtoCol,srvtextmsg_ProtoCol,TK_ProtoCol,MESSAGE_ProtoCol,APPVOICEMSG_ProtoCol,restart_ProtoCol,factory_ProtoCol,SILENCETIMEFS_ProtoCol,WLKEY_ProtoCol,SILENCETIME2_ProtoCol,KEYBRD_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\ + from protocol import RTALK_ProtoCol,TKS_ProtoCol,RCALLING_ProtoCol,AGTALK_ProtoCol,CALLING_ProtoCol,MEMBERS_ProtoCol,JPREG_ProtoCol,ppsrvvoicemsg_ProtoCol,ppdevvoicemsg_ProtoCol,srvtextmsg_ProtoCol,TK_ProtoCol,MESSAGE_ProtoCol,APPVOICEMSG_ProtoCol,restart_ProtoCol,factory_ProtoCol,SILENCETIMEFS_ProtoCol,WLKEY_ProtoCol,SILENCETIME2_ProtoCol,KEYBRD_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\ TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\ pp_ProtoCol,ppfriends_ProtoCol,revpp_ProtoCol,reqpp_ProtoCol,delpp_ProtoCol,ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager @@ -207,7 +212,8 @@ def main_init(): # .append_manager(mgr.StopwatchManager()) \ # .append_manager(mgr.CountdownManager()) \ - + app.append_manager(mgr.vedioInforManager()) + app.append_manager(mgr.videoBookManager()) app.append_manager(setkeyboardManager()) app.append_manager(ConfigStoreManager()) app.append_manager(NetManager()) @@ -250,6 +256,7 @@ def main_init(): pcr.add_support(POWEROFF_ProtoCol()) pcr.add_support(PHL_ProtoCol()) pcr.add_support(TK_ProtoCol()) + pcr.add_support(TKS_ProtoCol()) pcr.add_support(MESSAGE_ProtoCol()) pcr.add_support(APPVOICEMSG_ProtoCol()) pcr.add_support(srvtextmsg_ProtoCol()) @@ -289,6 +296,7 @@ def main_init(): pcr.add_support(AGTALK_ProtoCol()) pcr.add_support(CALLING_ProtoCol()) pcr.add_support(RCALLING_ProtoCol()) + pcr.add_support(RTALK_ProtoCol()) EventMesh.publish("load_screen", {"screen": "poweron"}) sm = SockManager() sm.add_support_resolver(pcr) diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py index e721cbf3..168e8c90 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py @@ -1579,6 +1579,7 @@ class DeviceInfoManager(Abstract): def get_imei(self, topic, msg): if not self.imei: self.imei = modem.getDevImei() + self.imei = "876226002021444" return self.imei def get_cid(self, topic, msg): @@ -2223,6 +2224,31 @@ class AddrBookManager(Abstract): self.check_json = msg[0] self.read_phonebook = msg[1] +class videoBookManager(Abstract): + # 视频通话账号 + def __init__(self): + self.videobook = {} + self.check_json = 0 + self.check_json = ql_fs.path_exists("/usr/static/storage_file/videobook.json") + + if self.check_json == True: + with open("/usr/static/storage_file/videobook.json","r",encoding="utf-8") as fd: + self.videobook = ujson.load(fd) + print("读取视频通话账号列表") + + def post_processor_after_instantiation(self): + EventMesh.subscribe("get_videobook_list", self.get) + EventMesh.subscribe("set_videobook_list", self.set) + + def get(self, event, msg): + self.check_json = ql_fs.path_exists("/usr/static/storage_file/videobook.json") + return [self.check_json,self.videobook] + + def set(self, event, msg): + print("videolist",msg) + self.check_json = msg[0] + self.videobook = msg[1] + class AddPPManager(Abstract): # 添加碰碰好友 def __init__(self): @@ -2974,16 +3000,25 @@ class getBootOffManager(Abstract):#开关机时间 class testSmsSetIPManager(Abstract):# def __init__(self): self.timer = osTimer() - self.newip = "test.iot.socket.thisiot.com" + # self.newip = "test.iot.socket.thisiot.com" + self.newip = "api.xcloudtech.com" # "8.134.110.49"#默认大锤服务器 在大锤服务器更改要连接新的服务器地址 - self.newcom = 9999 + # self.newcom = 9999 + self.newcom = 9000 # 31379 - self.new_key = "3JyCjsw4ryXKzjzudayY" - self.new_pid = "qAELPTKmFanR4RHe" + # self.new_key = "3JyCjsw4ryXKzjzudayY" + # self.new_pid = "qAELPTKmFanR4RHe" + + self.new_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + self.new_pid = "SZKW" self.server_sate = 0 - # d_server_addr = "tcp.tx.kidxin.com" - # d_server_port = 20500 + + # d_server_addr = "api.xcloudtech.com" + # d_server_port = 9000 + # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + # d_PID = "SZKW" + tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr") if tmp_data != None: self.newip = tmp_data @@ -3125,6 +3160,52 @@ class setkeyboardManager(Abstract):#设置键盘开关状态 return self.key_state +class vedioInforManager(Abstract):# + def __init__(self): + self.call_id = "" + self.meet_id = ""#会议id + self.call_type = 0 #会议id + self.tokens_data= ""#tokens + pass + + def post_processor_after_instantiation(self): + EventMesh.subscribe("set_vedio_call_id", self.set_vedio_call_id)# + EventMesh.subscribe("set_vedio_meet_id", self.set_vedio_meet_id)# + EventMesh.subscribe("set_vedio_call_type", self.set_vedio_call_type)# + EventMesh.subscribe("set_vedio_tokens_data", self.set_vedio_tokens_data)# + + EventMesh.subscribe("get_vedio_call_id", self.get_vedio_call_id)# + EventMesh.subscribe("get_vedio_meet_id", self.get_vedio_meet_id)# + EventMesh.subscribe("get_vedio_call_type", self.get_vedio_call_type)# + EventMesh.subscribe("get_vedio_tokens_data", self.get_vedio_tokens_data)# + + def set_vedio_call_id(self, event, msg): + self.call_id = msg + + def set_vedio_meet_id(self, event, msg): + self.meet_id = msg + + def set_vedio_call_type(self, event, msg): + self.call_type = msg + + def set_vedio_tokens_data(self, event, msg): + self.tokens_data= msg + + + def get_vedio_call_id(self, event, msg): + return self.call_id + + def get_vedio_meet_id(self, event, msg): + return self.meet_id + + def get_vedio_call_type(self, event, msg): + return self.call_type + + def get_vedio_tokens_data(self, event, msg): + return self.tokens_data + + + class simFactoryManager(Abstract):#恢复出厂设置 def __init__(self): self.timer= osTimer() @@ -3164,7 +3245,7 @@ class simFactoryManager(Abstract):#恢复出厂设置 class cameraAlbumManager(Abstract):#保存相册数目 def __init__(self): self.album_list = {} - + self.album_num = 0 check_txt = ql_fs.path_exists("/usr/static/storage_file/album_config.json") if check_txt == True : with open("/usr/static/storage_file/album_config.json","r") as fd:#音频文件编号 @@ -3184,21 +3265,23 @@ class cameraAlbumManager(Abstract):#保存相册数目 def post_processor_after_instantiation(self): - EventMesh.subscribe("set_camera_num", self.set_camera_num)#设置关机时间 + EventMesh.subscribe("set_camera_num", self.set_camera_num)# EventMesh.subscribe("get_camera_num", self.get_camera_num) - def set_camera_num(self, event, msg): + - self.album_list = msg - with open("/usr/static/storage_file/album_config.json","w+",encoding="utf-8") as fd: - ujson.dump(self.album_list,fd) - # sorted_keys = sorted(self.album_list.keys()) - # print("self.album_list",self.album_list,sorted_keys) + def set_camera_num(self, event, msg): + self.album_num = msg + # self.album_list = msg + # with open("/usr/static/storage_file/album_config.json","w+",encoding="utf-8") as fd: + # ujson.dump(self.album_list,fd) + # # sorted_keys = sorted(self.album_list.keys()) + # # print("self.album_list",self.album_list,sorted_keys) def get_camera_num(self, event, msg): - return self.album_list + return self.album_num class setclassTimeManager(Abstract):#设置上课禁用时间 def __init__(self): diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py index d2b5391e..8ed6663a 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py @@ -25,7 +25,7 @@ import usys def server_init(server_type = None): #服务器选择1,防走丢,2大锤,3三基同创,4童信 5云米 if server_type == None: - server_type = 2 + server_type = 1 #print("server_init:server_type:{}".format(server_type)) d_server_addr = "api.xcloudtech.com" d_server_port = 9000 @@ -181,7 +181,7 @@ class SockManager(Abstract): self.reconnect_flag = 0 def publish_timer_cb(self, *args): EventMesh.publish(constants.PROTOCOL.LK_SEND) - self.authen_set() + # self.authen_set() def authen_set(self): sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态 if sever_state != None: @@ -236,12 +236,12 @@ class SockManager(Abstract): secretKey = data_tmp["secretKey"]# pid = data_tmp["bid"]#产品型号 port = data_tmp["port"]#端口号 - - # host = "device.miwitracker.com"#童信 - # port = 8505 - # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + host = "api.xcloudtech.com"#童信 + port = 9000 + secretKey = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + pid = "SZKW" if secretKey != '': EventMesh.publish("set_new_key", str(secretKey))#获取pid和key if pid != '': @@ -291,7 +291,7 @@ class SockManager(Abstract): if data != None: try: self.sock.send(data) - print("TCP:send data2 len:{}".format(len(data))) + print("TCP:send data2 len:{}".format(data)) except Exception as e: self.reconnect() self.socket_send_queue.put(data)#重新把数据加回队列 @@ -2030,6 +2030,135 @@ class TK_ProtoCol(ProtoCol): TYPE = "TK" + def send(self, event, msg): + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TK,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*TK"%(self.imei,len_size) + MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TK:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) + len("TK,")+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec)) + send_data.extend(arm) + MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TK,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + EventMesh.publish("load_screen", {"screen": "wechat_popup"}) + else: + EventMesh.publish("wechat_updata_list_show") + # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num) + path = "/usr/static/storage_file/{}.wav".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TK_SEND,1) + + + + +class TKS_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TKS" + + def send(self, event, msg): # print("TK send:{}".format(msg)) if len(str(msg)) == 1: @@ -2066,7 +2195,7 @@ class TK_ProtoCol(ProtoCol): else : arm.append(arm_data[i]) - datalen = len(arm) + 4+len(str(arm_sec))+1 + datalen = len(arm) +len("TKS,")+len(str(arm_sec))+1 #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) send_data.extend(arm) @@ -2091,7 +2220,7 @@ class TK_ProtoCol(ProtoCol): #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) # print("TK recv:{}".format(msg)) msg_tmp = msg.decode('ascii') - str = msg_tmp.split('TK,') + str = msg_tmp.split('TKS,') # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) @@ -2149,11 +2278,10 @@ class TK_ProtoCol(ProtoCol): if j >= len(arm_data): break fd.write(arm) - EventMesh.publish(constants.PROTOCOL.TK_SEND,1) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,1) - - + class MESSAGE_ProtoCol(ProtoCol): """微聊""" @@ -2339,52 +2467,49 @@ class MEMBERS_ProtoCol(ProtoCol):#获取账号列表 @param event: @param msg: 接收到的下行数据 """ - # b'[SZKW*867387060319166*000A*KEYBRD]' + # b'[SZKW*876226002021444*0048*MEMBERS,0036003900350031003800330032002C563F563FD83CDF410020D83CDF42002C]' print("MEMBERS!!!!!!!!!!!!!",msg) - # EventMesh.publish(constants.PROTOCOL.MEMBERS_SEND) + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp = msg_tmp.split(',') -# [XT*YYYYYYYYYYYYYYY*LEN*AGTALK,通话类型,对方账号] -# 通话类型:0表示语音通话,1表示视频通话 -# 实例: -# XT*334588000000156*0007*AGTALK,0,d3e2f759f9d5af3858f3530b] -# 或[XT*334588000000156*0007*AGTALK,1,d3e2f759f9d5af3858f3530b] -# 注:如果佰锐视频,则账号为佰锐账号(整型) -# 平台回复:[XT*设备ID*LEN*AGTALK,结果,Token,声网频道名/会议号(如有的话,没有则不带)] -# 结果:0表示可正常通话,-1表示余额不足,不能通话,1表示对方不在线或未登陆成功 -# 实例:[XT*334588000000156*0006*AGTALK,0,efef2323423423,123]或[XT*334588000000156*0006*AGTALK,1] -class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话 - """""" - TYPE = "AGTALK" - def send(self, event, msg): - - # [XT*334588000000156*0005*WLKEY] - send_data = EventMesh.publish("get_new_pid")+"*%s*0006*AGTALK"%(self.imei) - MD5_SIGN = self.pack_MD5_head(send_data) - data = "[%s%s]"%(str(MD5_SIGN),send_data) - # print("WLKEY:data:%s"%(data)) - # print("WLKEY!!!!!!!!!!!!!") - # 通过socket发送到服务器端 - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + videobook = {} + msg_tmp = msg_tmp[1:] + msg_tmp = msg_tmp[0] - def recv(self, event, msg): - """ - @param event: - @param msg: 接收到的下行数据 - """ - # b'[SZKW*867387060319166*000A*KEYBRD]' - print("AGTALK!!!!!!!!!!!!!",msg) + j = 0 + i = 0 + videobook_old = {} + videobook_name_tmp = UnicodeHexStr_To_Utf8Str(msg_tmp) + lst = videobook_name_tmp.split(",") + + print("msg_tmp:{} phonebook_oldtmp:{} type:{}".format(msg_tmp,videobook_name_tmp,lst)) + # 0 1 2 3 + for vediobook_tmp in lst: + + if (j % 3) == 0:#账号 + videobook_old = vediobook_tmp + elif (j % 3) == 1:#名称 + i+=1 + videobook_name_cont= "{}:{}".format("%03d"%(i),videobook_old) + videobook[videobook_name_cont] = vediobook_tmp + j+=1 + print("videobook!!!:{}".format(str(videobook))) + # print("phonebook!!!:{}".format(str(phonebook))) + with open("/usr/static/storage_file/videobook.json","w",encoding="utf-8") as fd: + ujson.dump(videobook,fd) + print("创建视频通话账号") + + EventMesh.publish("set_videobook_list",[1,videobook]) + EventMesh.publish("video_updata_list_show") # EventMesh.publish(constants.PROTOCOL.MEMBERS_SEND) -# [XT*YYYYYYYYYYYYYYY*LEN*AGTALK,通话类型,对方账号] -# 通话类型:0表示语音通话,1表示视频通话 -# 实例: -# XT*334588000000156*0007*AGTALK,0,d3e2f759f9d5af3858f3530b] -# 或[XT*334588000000156*0007*AGTALK,1,d3e2f759f9d5af3858f3530b] -# 注:如果佰锐视频,则账号为佰锐账号(整型) -# 平台回复:[XT*设备ID*LEN*AGTALK,结果,Token,声网频道名/会议号(如有的话,没有则不带)] -# 结果:0表示可正常通话,-1表示余额不足,不能通话,1表示对方不在线或未登陆成功 -# 实例:[XT*334588000000156*0006*AGTALK,0,efef2323423423,123]或[XT*334588000000156*0006*AGTALK,1] -class CALLING_ProtoCol(ProtoCol):#设备发起视频通话 +# [X*Y*LEN*CALLING,呼叫者id,会议id,通话类型,Token] + +# 设备回复 +# [X*Y*LEN*CALLING,音视频状态] +# 音视频状态:为0表示正常可通讯状态,否则填上用音视频返回的状态码,比如200,如果未获取到返回状态码,则填1 +class CALLING_ProtoCol(ProtoCol):#app发起视频通话 """""" TYPE = "CALLING" def send(self, event, msg): @@ -2404,9 +2529,23 @@ class CALLING_ProtoCol(ProtoCol):#设备发起视频通话 @param msg: 接收到的下行数据 """ # b'[SZKW*867387060319166*000A*KEYBRD]' - print("AGTALK!!!!!!!!!!!!!",msg) + print("CALLING!!!!!!!!!!!!!",msg) + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp_d = msg_tmp.split(',') + call_id = msg_tmp_d[1]#id + meet_id = msg_tmp_d[2]#会议id + call_type = msg_tmp_d[3]#会议id + tokens_data = msg_tmp_d[4]#tokens + EventMesh.publish("set_vedio_call_id", call_id)# + EventMesh.publish("set_vedio_meet_id", meet_id)# + EventMesh.publish("set_vedio_call_type", call_type)# + EventMesh.publish("set_vedio_tokens_data", tokens_data)# + + + # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])# EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0) - EventMesh.publish("load_screen", {"screen": "camera_answer"}) + EventMesh.publish("load_screen", {"screen": "vedio_incall"}) # [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,呼叫者id,会议id/声网频道名(没有则留空,但位置保留),音频还是视频(0为音频,1为视频)] # 实例: @@ -2415,7 +2554,7 @@ class CALLING_ProtoCol(ProtoCol):#设备发起视频通话 # [XT*设备ID*LEN*RCALLING] # 实例:[XT*334588000000156*0009*RCALLING] # -class RCALLING_ProtoCol(ProtoCol):#设备挂断 +class RCALLING_ProtoCol(ProtoCol):#设备拒接接听 """""" TYPE = "RCALLING" def send(self, event, msg): @@ -2423,8 +2562,8 @@ class RCALLING_ProtoCol(ProtoCol):#设备挂断 # [XT*334588000000156*0005*WLKEY] send_data = EventMesh.publish("get_new_pid")+"*%s*0008*RCALLING"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) - data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - print("CALLING:send data:%s"%(data)) + data = "[%s%s,%s,%s,%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1],msg[2]) + print("RCALLING:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -2434,10 +2573,83 @@ class RCALLING_ProtoCol(ProtoCol):#设备挂断 @param event: @param msg: 接收到的下行数据 """ - # b'[SZKW*867387060319166*000A*KEYBRD]' - print("AGTALK!!!!!!!!!!!!!",msg) - EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0) - EventMesh.publish("load_screen", {"screen": "camera_answer"}) + # b'[SZKW*867387060319166*000A*RCALLING]' + print("RCALLING!!!!!!!!!!!!!") + +class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通话 + """""" + TYPE = "AGTALK" + def send(self, event, msg): + + # [XT*334588000000156*0005*WLKEY] + send_data = EventMesh.publish("get_new_pid")+"*%s*0006*AGTALK"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) + print("AGTALK:send data:%s"%(data)) + # print("WLKEY!!!!!!!!!!!!!") + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + def recv(self, event, msg): + """ + @param event: + @param msg: 接收到的下行数据 + """ + # b'[SZKW*876226002021444*007B*AGTALK,0,01lqlyqzzQHpfwv5g7jFVC2H6Ha2tHFpMlfSm5sd2uo7o55JEcc=OVxewje6MjP0NgEODwsLDwkJCwkLCA0NDQ==,8762260020214441701226895]' + + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp_d = msg_tmp.split(',') + call_state = int(msg_tmp_d[1])#id + + if call_state == 0:#可正常通话 + tokens_data = msg_tmp_d[2]#会议id + meet_id = msg_tmp_d[3]#会议id + EventMesh.publish("set_vedio_meet_id", meet_id)# + EventMesh.publish("set_vedio_tokens_data", tokens_data)# + EventMesh.publish("open_vedio_infor") + # EventMesh.publish("set_UI_high_priority", 0) + # EventMesh.publish("load_screen", {"screen": "vedio_answer"}) + # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])# + + + + print("AGTALK!!!!!!!!!!!!!") + + +class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 + """""" + TYPE = "RTALK" + def send(self, event, msg): + + # [XT*334588000000156*0005*WLKEY] + send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) + print("AGTALK:send data:%s"%(data)) + # print("WLKEY!!!!!!!!!!!!!") + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + def recv(self, event, msg): + """ + @param event: + @param msg: 接收到的下行数据 + """ + # b'[SZKW*867387060319166*000A*RTALK]' + print("RTALK!!!!!!!!!!!!!") + # [SZKW*876226002021444*003A*RTALK,3ef20e64f3abb84b27f7d764,8762260020214441701226522,1]' + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp_d = msg_tmp.split(',') + screen_NAME = EventMesh.publish("get_screen_NAME") + if screen_NAME != None: + if screen_NAME == "video_outcall": + # EventMesh.publish("close_jrtc_event") + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("load_screen", {"screen": "videolist"}) + + class ProtoColResolver(object): def __init__(self): @@ -2450,7 +2662,7 @@ class ProtoColResolver(object): def handler(self, data): # 这里接收数据 - # print("handler -> {}".format(data)) + print("handler -> {}".format(data)) # if data.startswith('Init;'): # data = data[5:] # EventMesh.publish(constants.EVENT.SET_KEY, {"value": ujson.loads(data)['KEY']}) diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py index 6679bdd0..242220d6 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py @@ -4397,6 +4397,9 @@ class ContactsScreen(Screen): def btn8_press(self): EventMesh.publish("watch_top_show") EventMesh.publish("load_screen", {"screen": "main_menu"}) + + + # -------------------------------------------temperature screen---------------------------------------------------------- temperature_screen = None @@ -7251,41 +7254,37 @@ class down_Screen(Screen):#下滑界面 # volum_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.VALUE_CHANGED, None) # volum_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.RELEASED, None) - down_show_bright_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"brightness")), lv.EVENT.CLICKED, None) - down_show_volume_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"totalvolume")), lv.EVENT.CLICKED, None) - down_show_setting_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"setting")), lv.EVENT.CLICKED, None) - - def img_cb(self,e,msg): - if msg == "brightness": - # volum_slider_1.add_flag(lv.obj.FLAG.HIDDEN) - # brightress_slider_1.clear_flag(lv.obj.FLAG.HIDDEN) - EventMesh.publish("load_screen", {"screen": "brightness"}) - elif msg == "totalvolume": - # brightress_slider_1.add_flag(lv.obj.FLAG.HIDDEN) - # volum_slider_1.clear_flag(lv.obj.FLAG.HIDDEN) - EventMesh.publish("load_screen", {"screen": "totalvolume"}) - else: - if msg == 'setting': - EventMesh.publish("load_screen", {"screen": "setting"}) - pass + down_show_bright_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"brightness")), lv.EVENT.SHORT_CLICKED, None) + down_show_volume_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"totalvolume")), lv.EVENT.SHORT_CLICKED, None) + down_show_setting_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"setting")), lv.EVENT.SHORT_CLICKED, None) + down_show_bright_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"brightness")), lv.EVENT.PRESSING, None) + down_show_volume_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"totalvolume")), lv.EVENT.PRESSING, None) + down_show_setting_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"setting")), lv.EVENT.PRESSING, None) - # def change_bright(self,e):#调节亮度 - # code = e.get_code() - # value_slider = brightress_slider_1.get_value() - # if code == lv.EVENT.RELEASED: - # value_slider = brightress_slider_1.get_value() - # print("bright value_slider",value_slider) - + def img_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) + # LV_DIR_TOP + if code == lv.EVENT.GESTURE: + if dir == lv.DIR.BOTTOM: + EventMesh.publish("load_screen", {"screen": "main_menu"}) - # def change_volum(self,e):#调节音量 - # code = e.get_code() - # value_slider = volum_slider_1.get_value() - # if code == lv.EVENT.RELEASED: - # value_slider = volum_slider_1.get_value() - # print("volum value_slider",value_slider) - - + elif code == lv.EVENT.SHORT_CLICKED: + if msg == "brightness": + # volum_slider_1.add_flag(lv.obj.FLAG.HIDDEN) + # brightress_slider_1.clear_flag(lv.obj.FLAG.HIDDEN) + EventMesh.publish("load_screen", {"screen": "brightness"}) + elif msg == "totalvolume": + # brightress_slider_1.add_flag(lv.obj.FLAG.HIDDEN) + # volum_slider_1.clear_flag(lv.obj.FLAG.HIDDEN) + EventMesh.publish("load_screen", {"screen": "totalvolume"}) + else: + if msg == 'setting': + EventMesh.publish("load_screen", {"screen": "setting"}) + pass @@ -7481,11 +7480,10 @@ def camCapturecallback(result_list): tmp = file.split('/')[3] tmp = tmp.split("_camera")[0] time = int(tmp) - album_data = EventMesh.publish("get_camera_num") - album_data_tmp = {} - album_data_tmp["timeSec"] = time - album_data[time] = album_data_tmp - EventMesh.publish("set_camera_num",album_data) + album_data = int(EventMesh.publish("get_camera_num")) + + EventMesh.publish("set_camera_num",album_data+1) + EventMesh.publish("save_album_succ",1) pass pass dec = camera.camCapture(0,240,320,1,128,128) @@ -7531,6 +7529,54 @@ class cameraFullScreen(Screen):#相册已满 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 + +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("load_screen", {"screen": "main_menu"}) + pass + + + def done_return(self): + EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def btn1_release(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) pass @@ -7549,60 +7595,134 @@ class cameraScreen(Screen):#相机拍照二级界面 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 - + state = dec.open() if camera_popup_screen == None: camera_popup_screen = lv.obj() print("Lowpower_screen") camera_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + + img_test = lv.img(camera_popup_screen) + # img_test.set_src("U:/hang_up.png") + ret = dec.set_img(img_test) + print("set img:", ret) + img_test.align(lv.ALIGN.CENTER, 0, 0) + 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.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.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.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.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.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.CLICKED, None) + camera_popup_label = lv.label(camera_popup_screen) - camera_popup_label.set_pos(0, 20) + camera_popup_label.set_pos(0, 40) camera_popup_label.set_size(128, 20) - camera_popup_label.set_text("点击屏幕保存") + 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 len(album_data) >= 2:#相册已满 + if int(album_data) >= 1:#相册已满 EventMesh.publish("load_screen", {"screen": "camera_full"}) pass - - - state = dec.open() - img_test = lv.img(camera_popup_screen) - img_test.set_src("U:/static/hang_up.png") - ret = jrtc.set_img(img_test) - print("set img:", ret) - img_test.set_pos(48, 90) - img_test.set_size(32,32) + if camera_popup_label != None: + camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN) self.timer.start(1*1000,1,self.fun) - print("state",state) + + 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 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() state = dec.close() - def done_click(self): - self.timer2.start(1*1000,0,self.save_album)#延迟1s保存图片 - pass + 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 len(album_data) < 2: + if int(album_data) <= 1: date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp) - dec.start(50,50, "U:/static/album/%d_camera"%(time_tmp)) + dec.start(128,128, "static/album/1_camera") else: EventMesh.publish("load_screen", {"screen": "camera_full"}) @@ -7646,112 +7766,76 @@ class cameraalbumScreen(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, 5) + 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.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(5, 30) - camera_album_popup_img1.set_size(50, 50) - 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(160) - camera_album_popup_img1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.CLICKED, None) + 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.CLICKED, None) camera_album_popup_img2 = lv.img(camera_album_popup_screen) - camera_album_popup_img2.set_pos(65, 30) - camera_album_popup_img2.set_size(50, 50) - camera_album_popup_img2.add_flag(lv.obj.FLAG.HIDDEN) + 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.set_zoom(160) - camera_album_popup_img2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,1)), lv.EVENT.CLICKED, None) + camera_album_popup_img2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.CLICKED, None) camera_album_popup_img3 = lv.img(camera_album_popup_screen) - camera_album_popup_img3.set_pos(5, 90) - camera_album_popup_img3.set_size(50, 50) - camera_album_popup_img3.add_flag(lv.obj.FLAG.HIDDEN) + 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_zoom(160) - camera_album_popup_img3.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,2)), lv.EVENT.CLICKED, None) - - camera_album_popup_img4 = lv.img(camera_album_popup_screen) - camera_album_popup_img4.set_pos(50, 90) - camera_album_popup_img4.set_size(65, 50) - camera_album_popup_img4.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img4.add_flag(lv.obj.FLAG.CLICKABLE) - # camera_album_popup_img4.set_zoom(160) - camera_album_popup_img4.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,3)), lv.EVENT.CLICKED, None) - - camera_album_popup_img5 = lv.img(camera_album_popup_screen) - camera_album_popup_img5.set_pos(5, 140) - camera_album_popup_img5.set_size(50, 50) - camera_album_popup_img5.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img5.add_flag(lv.obj.FLAG.CLICKABLE) - # camera_album_popup_img5.set_zoom(160) - camera_album_popup_img5.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,4)), lv.EVENT.CLICKED, None) + 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.CLICKED, None) self.meta = camera_album_popup_screen - read_album = {} + read_album = 0 read_album = EventMesh.publish("get_camera_num") - sort_new = {} - sort_new = sorted(read_album.keys())#按照key的升序排序 - count = 0 - camera_album_popup_img1.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img2.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img3.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img4.add_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img5.add_flag(lv.obj.FLAG.HIDDEN) - - # print("sort_new read_album ",sort_new,read_album) - for i in range(0,len(sort_new)): - key = sort_new[i] - value = int(read_album[key]["timeSec"]) - print(value) - check_img = ql_fs.path_exists("/usr/static/album/%d_camera.jpg"%(value)) - if check_img == True :#图片存着 - print("图片存在显示") - pass - else: - print("图片不存在不显示循环下一个显示") - continue - - if count == 0: - camera_album_popup_img1.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img1.set_src("U:/static/album/%d_camera.jpg"%(value)) #'U:/6_camera.jpeg' - pass - elif count == 1: - camera_album_popup_img2.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img2.set_src("U:/static/album/%d_camera.jpg"%(value))#'U:/6_camera.jpeg' - pass - elif count == 2: - camera_album_popup_img3.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img3.set_src("U:/static/album/%d_camera.jpg"%(value))#'U:/6_camera.jpeg' - pass - elif count == 3: - camera_album_popup_img4.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img4.set_src("U:/static/album/%d_camera.jpg"%(value))#'U:/6_camera.jpeg' - pass - elif count == 4: - camera_album_popup_img5.clear_flag(lv.obj.FLAG.HIDDEN) - camera_album_popup_img5.set_src("U:/static/album/%d_camera.jpg"%(value))#'U:/6_camera.jpeg' - pass - count+=1 + print("read_album",read_album) + if int(read_album) != 0: + 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): - 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) + 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): @@ -7796,8 +7880,8 @@ class albumPreviewScreen(Screen):#点击预览 album_preview_popup_img = lv.img(album_preview_popup_screen) - album_preview_popup_img.set_pos(39, 5) - album_preview_popup_img.set_size(50,50) + 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) @@ -7842,25 +7926,25 @@ class albumPreviewScreen(Screen):#点击预览 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) + # 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 + # 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 @@ -7886,7 +7970,7 @@ class albumPreviewScreen(Screen):#点击预览 camera_video_screen = None camera_video_label = None -class cameraVdieoScreen(Screen):#相机拍照二级界面 +class cameraVdieoScreen(Screen):# # NAME = "camera_video" @@ -7948,12 +8032,91 @@ class cameraVdieoScreen(Screen):#相机拍照二级界面 +video_answer_screen = None +video_answer_label = None +video_answer_btn1 = None +video_answer_btn_label1 = None +class cameraVdieoAnswerScreen(Screen):#接听画面 + # + NAME = "vedio_answer" + + def __init__(self): + super().__init__() + self.meta = None + self.timer = osTimer() + self.count = 0 + + def initialization(self): + global video_answer_screen ,video_answer_btn_label1 + self.count = 0 + if video_answer_screen == None: + video_answer_screen = lv.obj() + print("video_answer_screen") + video_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_answer_btn_label1 = lv.label(video_answer_screen) + video_answer_btn_label1.set_pos(0, 50) + video_answer_btn_label1.set_text("正在接听中...") + video_answer_btn_label1.set_size(128, 40) + video_answer_btn_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_answer_btn_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + self.meta = video_answer_screen + self.timer.start(1*1000,1,self.fun) + + def fun(self,*argc): + call_state = jrtc.get_state() + if call_state == 5: + self.timer.stop() + EventMesh.publish("load_screen", {"screen": "vedioing"}) + return + if call_state == 0: + call_id = str(EventMesh.publish("get_vedio_call_id"))# + meet_id = str(EventMesh.publish("get_vedio_meet_id"))# + call_type = int(EventMesh.publish("get_vedio_call_type"))# + + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + EventMesh.publish("load_screen", {"screen": "main_menu"}) + return + print("vedio_answer call_state",call_state) + self.count+=1 + if self.count >= 20: + EventMesh.publish("close_jrtc_event") + self.timer.stop() + EventMesh.publish("load_screen", {"screen": "main_menu"}) + return + + EventMesh.publish("system_sleep_rest")#防止黑屏 + + + def Close(self): + self.timer.stop() + + def done_return(self): + pass + # EventMesh.publish("load_screen", {"screen": "main_menu"}) + + + def btn1_release(self): + # EventMesh.publish("load_screen", {"screen": "main_menu"}) + pass + + def btn8_press(self): + # EventMesh.publish("load_screen", {"screen": "main_menu"}) + pass + camera_video_answer_screen = None camera_video_answer_label = None camera_video_answer_btn = None -class cameraVdieoAnswerScreen(Screen):#相机拍照二级界面 +vcamera_video_answer_btn_label = None +camera_video_answer_label = None +def jrtc_cb(close_sta): + print("jrtc callback:", close_sta) + if close_sta == 0 or close_sta == 1: + jrtc.close(1) +jrtc.set_callback(jrtc_cb) +class VedioShowScreen(Screen):#正在视频通话中 # - NAME = "camera_answer" + NAME = "vedioing" def __init__(self): super().__init__() @@ -7961,50 +8124,92 @@ class cameraVdieoAnswerScreen(Screen):#相机拍照二级界面 self.preview1 = None self.timer = osTimer() self.statu_open = -1 - self.count = 0 - - def initialization(self): - global camera_video_answer_screen ,camera_video_answer_label,camera_video_answer_btn - self.count = 0 + self.show_label = 0 + EventMesh.subscribe("open_vedio_infor",self.open_vedio_infor) + EventMesh.subscribe("close_jrtc_event",self.close_jrtc_event) + + def open_vedio_infor(self,event,msg): + 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数据 + + + print("vedio infor",call_id,meet_id,call_type,tokens_data) + # data = ['6951832', '876226002021444', '1', '01lqlyqzQ4Gozdz8OJv1Mij2Y3PBq2y3+rtIA26Ge+m2QHTc/Vk=gufkGNMBiYhPjbq1tLCwtLKysLKws7a2tg=='] jrtc.init() - jrtc.config_server("119.3.54.56:1050") - jrtc.config("6c06d1b0d9015e47ec144097", "us145b", "1234567890abcdef", "") - self.statu_open = jrtc.open("us144a", "",[15,120,240,320],[15,129,128,128]) + # jrtc.config_server("119.3.54.56:1050")#测试服地址 + tokens = str(tokens_data) + oneself_id = str(876226002021444)#自己的账号 + jrtc.config("efe9f8800a39d96244234097", oneself_id, "25v9C652123QL3N8", tokens) + uid = str(call_id) + ticket = str(meet_id) + + print("uid ",uid,ticket,tokens) + jrtc.open(uid,ticket,[15,120,240,320],[15,129,128,128]) + + pass + def close_jrtc_event(self,event,msg): + call_state = jrtc.get_state() + print("close_jrtc_event",call_state) + jrtc.close(1) + pass + + def initialization(self): + global camera_video_answer_screen ,camera_video_answer_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) - - - img_test = lv.img(camera_video_answer_screen) - # img_test.set_src("U:/hang_up.png") ret = jrtc.set_img(img_test) - print("set img:", ret) img_test.align(lv.ALIGN.CENTER, 0, 0) img_test.set_size(128,128) + # camera_video_answer_label = lv.label(camera_video_answer_screen) + # camera_video_answer_label.set_pos(0, 50) + # 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_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.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.CLICKED, None) + self.meta = camera_video_answer_screen - + # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN) + # camera_video_answer_btn.add_flag(lv.obj.FLAG.HIDDEN) + self.statu_open = 0 self.timer.start(1*1000,1,self.fun) def close_cb(self,e): - if self.statu_open == 0: - jrtc.close(1) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,0) - EventMesh.publish("load_screen", {"screen": "main_menu"}) + self.statu_open = 1 + EventMesh.publish("close_jrtc_event") + + 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"}) def fun(self,*argc): EventMesh.publish("system_sleep_rest")#防止黑屏 + call_state = jrtc.get_state() + print("call_state",call_state) + if call_state == 0 and self.statu_open == 0: + self.timer.stop() + EventMesh.publish("close_jrtc_event") + EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def Close(self): @@ -8025,75 +8230,485 @@ class cameraVdieoAnswerScreen(Screen):#相机拍照二级界面 +vedio_call_screen = None +vedio_call_img = None +vedio_call_name_label = None +vedio_call_answer = None +vedio_call_hangup = None +vedio_call_label = None +# CALL_LOG_MAX = 50 +class vedioCallingCallScreen(Screen):#视频通话打入中 + NAME = "vedio_incall" + + def __init__(self): + super().__init__() + self.CALL_LOG_MAX = CALL_LOG_MAX + self.read_data = {} + self.meta_type = "popup" + self.aud = audio.Audio(0) + self.call_timer = osTimer() + self.call_timer1 = osTimer() + self.name = None + self.phonebook = {} + self.pro_state = 0 + self.meta = None + self.timeout = 0 + + def initialization(self): + global vedio_call_screen,vedio_call_img,vedio_call_name_label,vedio_call_answer,vedio_call_hangup,vedio_call_label + if vedio_call_screen == None : + # -------------------------------------------vedio_call screen---------------------------------------------------------- + vedio_call_screen = lv.obj() + print("vedio_call_screen") + vedio_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + vedio_call_label = lv.label(vedio_call_screen) + vedio_call_label.set_pos(0, 10) + vedio_call_label.set_text("是否接听视频通话") + vedio_call_label.set_size(128, 40) + vedio_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + vedio_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + # vedio_call_img = lv.img(vedio_call_screen) + # vedio_call_img.set_pos(48, 10) + # vedio_call_img.set_size(32, 32) + # vedio_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") + # vedio_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + vedio_call_name_label = lv.label(vedio_call_screen) + vedio_call_name_label.set_pos(0, 50) + vedio_call_name_label.set_text(" ") + vedio_call_name_label.set_size(128, 40) + vedio_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + vedio_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + vedio_call_answer = lv.img(vedio_call_screen) + vedio_call_answer.set_size(32, 32) + vedio_call_answer.add_flag(lv.obj.FLAG.CLICKABLE) + vedio_call_answer.set_pos(84, 85) + vedio_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + vedio_call_answer.set_src("U:/static/answer.png") + + vedio_call_hangup = lv.img(vedio_call_screen) + vedio_call_hangup.set_size(32, 32) + vedio_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE) + vedio_call_hangup.set_pos(11, 85) + vedio_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + vedio_call_hangup.set_src("U:/static/hang_up.png") + + vedio_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)), + lv.EVENT.CLICKED, None) + vedio_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), + lv.EVENT.CLICKED, None) + self.meta = vedio_call_screen + EventMesh.publish("set_UI_high_priority", 1) + call_id = str(EventMesh.publish("get_vedio_call_id"))# + + vedio_call_name_label.set_text(call_id) + + + def post_processor_after_initialization(self): + global vedio_call_screen,vedio_call_img,vedio_call_name_label,vedio_call_answer,vedio_call_hangup + self.call_timer.start(6000, 1, self.call_timer_cb) + self.timeout = 0 + self.call_timer1.start(1*1000, 1, self.get_video_state) + self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 + + def call_timer_cb(self,e): + self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 + + def get_video_state(self,e): + call_state = jrtc.get_state() + print("vedio_incall",call_state) + self.timeout+=1 + if self.timeout >= 1*60: + self.timeout = 0 + self.call_timer1.stop() + call_id = str(EventMesh.publish("get_vedio_call_id"))# + meet_id = str(EventMesh.publish("get_vedio_meet_id"))# + call_type = int(EventMesh.publish("get_vedio_call_type"))# + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def answer(self,e): + self.call_timer.stop() + self.aud.stop() + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("open_vedio_infor") + EventMesh.publish("load_screen", {"screen": "vedio_answer"}) + + 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("set_UI_high_priority", 0) + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + + EventMesh.publish("load_screen", {"screen": "main_menu"}) -# class cameraVdieoScreen(Screen):#视频通话 -# # -# NAME = "camera_video" + 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 __init__(self): -# super().__init__() -# self.meta = camera_video_screen -# self.preview1 = None -# self.timer = osTimer() -# self.open_preview1 = 0 - -# def initialization(self): -# global camera_video_screen,camera_video_label_screen -# print("Lowpower_screen") -# if camera_video_screen == None: -# camera_video_screen = lv.obj() -# print("Lowpower_screen") -# camera_video_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - -# camera_video_label_screen = lv.label(camera_video_screen) -# camera_video_label_screen.set_pos(0, 40) -# camera_video_label_screen.set_size(128, 40) -# camera_video_label_screen.set_text(" ") -# camera_video_label_screen.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -# camera_video_label_screen.set_long_mode(lv.label.LONG.WRAP) -# camera_video_label_screen.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - -# # self.meta = camera_video_screen - -# if EventMesh.publish(constants.EVENT.GET_CONNECT) != 0:#未联网提示关机 -# self.preview1 = camera.camPreview(0,240,320,128,128,1) -# state = self.preview1.open() -# self.timer.start(1*1000,1,self.fun) -# camera_video_label_screen.set_text(" ") -# self.open_preview1 = 1 -# print("init preview!!!!!!!!") -# else: -# self.open_preview1 = 0 -# camera_video_label_screen.set_text("无SIM卡或无网络") - -# def fun(self,*argc): -# pass -# # EventMesh.publish("system_sleep_rest")#防止黑屏 - - -# def Close(self): -# self.timer.stop() -# if self.open_preview1 == 1: -# self.timer.stop() -# self.preview1.close() - -# def done_click(self): -# pass - - - - -# def done_return(self): -# EventMesh.publish("load_screen", {"screen": "main_menu"}) + 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 +class videoOutCallScreen(Screen):#正在拨号中...未打出 + NAME = "video_outcall" + + def __init__(self): + super().__init__() + self.meta = None + self.meta_type = "popup" + self.timer1 = osTimer() + self.time_count = 0 + self.timer2 = osTimer() + self.CALL_LOG_MAX = CALL_LOG_MAX + self.read_call_log = {} + + def initialization(self): + EventMesh.publish("set_UI_high_priority", 1) + self.time_count = 0 + global video_outcall_screen,video_outcall_img,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) + + # img_test = lv.img(video_outcall_screen) + # ret = jrtc.set_img(img_test) + # img_test.align(lv.ALIGN.CENTER, 0, 0) + # img_test.set_size(128,128) + + # dialing_popup_img = lv.img(video_outcall_screen) + # dialing_popup_img.set_pos(32, 5) + # dialing_popup_img.set_size(64, 64) + # dialing_popup_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") + # dialing_popup_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_outcall_name = lv.label(video_outcall_screen) + video_outcall_name.set_pos(0, 15) + video_outcall_name.set_size(LCD_X, 20) + video_outcall_name.set_text(" ") + video_outcall_name.set_long_mode(lv.label.LONG.DOT) + video_outcall_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_outcall_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_outcall_call = lv.label(video_outcall_screen) + video_outcall_call.set_pos(0, 50) + video_outcall_call.set_size(LCD_X, 40) + video_outcall_call.set_text("正在等待对方接听中...") + video_outcall_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_outcall_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_outcall_hangup_imgbtn = lv.img(video_outcall_screen) + video_outcall_hangup_imgbtn.set_size(32, 32) + video_outcall_hangup_imgbtn.set_src("U:/static/hang_up.png") + video_outcall_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) + video_outcall_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + video_outcall_hangup_imgbtn.set_pos(48, 90) + video_outcall_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), + lv.EVENT.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.timer1.start(1*1000,1,self.fun_cb) + # video_outcall_call.clear_flag(lv.obj.FLAG.HIDDEN) + # video_outcall_name.clear_flag(lv.obj.FLAG.HIDDEN) + + def post_processor_after_initialization(self): + pass + + def hangup(self,e): + 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): + call_state = jrtc.get_state() + print("video_outcall",call_state) + EventMesh.publish("system_sleep_rest")#防止黑屏 + if call_state == 5: + self.timer1.stop() + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("load_screen", {"screen": "vedioing"}) + self.time_count+=1 + if self.time_count >= 1*60: + self.time_count = 0 + self.timer1.stop() + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("load_screen", {"screen": "videolist"}) + + def Close(self): + 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_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_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) -# def btn1_release(self): -# EventMesh.publish("load_screen", {"screen": "main_menu"}) -# pass + videolist_none_label = lv.label(videolist_screen_list_screen) + videolist_none_label.set_pos(0, 20) + videolist_none_label.set_size(LCD_X, 40) + 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) + 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)), + lv.EVENT.CLICKED, None) + contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.PRESSING, None) + contact_btn.add_flag(lv.obj.FLAG.HIDDEN) + # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) + + contact_btn_label_1 = lv.label(contact_btn) + contact_btn_label_1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + contact_btn_label_2 = lv.label(contact_btn) + # contact_btn_label_2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + contact_btn_label_3 = lv.label(contact_btn) + contact_btn_label_3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + self.videolist_detail_listt_dict.append({"contact_btn":contact_btn,"contact_btn_label_1":contact_btn_label_1,"contact_btn_label_2":contact_btn_label_2,"contact_btn_label_3":contact_btn_label_3}) + self.meta = videolist_screen + self.count = 0 + self.btn_create_list_show(0) + + def video_updata_list_show(self,event,msg): + self.post_processor_before_initialization() + self.timer.start(1 * 1000, 0, self.OutTime_s) + + def OutTime_s(self,e): + self.btn_create_list_show(1) + + def btn_create_list_show(self,state): + EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_list_show_screen,"data":state}) + + def btn_create_list_show_screen(self,state): + global videolist_screen,videolist_cont,videolist_top_title,videolist_none_label,videolist_screen_list_screen + print("btn_create_list_show_screen!!!!!!!!!!!") + if videolist_screen == None: + return + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#有卡时触发sos报警 无卡时自动关机 + self.videolist_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) + videolist_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 + else: + #读取json文件中的键作为label文本; + if self.check_json == True and len(self.videobook) != 0: + self.videolist_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) + videolist_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 + j =0 + print("self.videobook sorted :{} len(self.videobook) :{}".format(sorted(self.videobook.keys()),len(self.videobook))) + phonebook_keys = sorted(self.videobook.keys()) + + + if len(self.videobook) > self.MXA_phone_num: + j = len(self.videobook) - self.MXA_phone_num + for i in range(self.MXA_phone_num): #字典 key value + if(j >= len(self.videobook)): + self.videolist_detail_listt_dict[i]["contact_btn"].add_flag(lv.obj.FLAG.HIDDEN) + continue + name = self.videobook[phonebook_keys[j]] + key_tmp = phonebook_keys[j] + + print("name :{} key_tmp:{}".format(name,key_tmp)) + + #contact_btn = lv.btn(self.contact_detail_list) + self.videolist_detail_listt_dict[i]["contact_btn"].set_size(LCD_X,45) + self.videolist_detail_listt_dict[i]["contact_btn"].set_pos(0,47*i ) + self.videolist_detail_listt_dict[i]["contact_btn"].set_style_bg_color(lv.color_make(0xff, 0xff, 0xff), lv.PART.MAIN | lv.STATE.DEFAULT) + # add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT) + # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED) + # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)), + # lv.EVENT.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-15, 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.CLIP) + # self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT) + # self.videolist_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + + #contact_btn_label_2 = lv.label(contact_btn) + self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_pos(0, 0) + self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_size(0, 0) + self.videolist_detail_listt_dict[i]["contact_btn_label_2"].set_text(key_tmp[4:]) + + + #contact_btn_label_3 = lv.label(contact_btn) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_pos(0, 20) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-15, 16) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_text(name) + self.videolist_detail_listt_dict[i]["contact_btn_label_3"].set_long_mode(lv.label.LONG.CLIP) + # self.videolist_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + + + self.videolist_detail_listt_dict[i]["contact_btn"].clear_flag(lv.obj.FLAG.HIDDEN) + #self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) + j+=1 + + if state == 1: + self.videolist_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) + + else: + if videolist_screen_list_screen != None: + videolist_none_label.clear_flag(lv.obj.FLAG.HIDDEN) #显示空文本 + if self.videolist_detail_list != None: + self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 + + + def calling_cb(self,e): + code = e.get_code() + if code == lv.EVENT.PRESSING: + #print("PRESSING") + self.is_sliding += 1 + + elif code == lv.EVENT.CLICKED: + #utime.sleep_ms(10) + print("1self.is_sliding",self.is_sliding) + if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件 + self.is_sliding = 0 + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 + msg_text = e.get_target().get_child(1).get_text() + EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + else: + EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) + + self.is_sliding =0 + + + def calling(self,msg_text): + _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"}) + + + + + + -# def btn8_press(self): -# EventMesh.publish("load_screen", {"screen": "main_menu"}) -# pass style_screen_calendar_1_extra_header_main_default = lv.style_t() style_screen_calendar_1_extra_header_main_default.init() diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py index 16f2b5c4..55d67c61 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py @@ -369,9 +369,9 @@ class MainMenuScreen(Screen): MainMenu2_img_toolbox.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "toolbox")), lv.EVENT.CLICKED, None) MainMenu2_img_setting.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "setting")), lv.EVENT.CLICKED, None) MainMenu2_img_add_friends.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "pp_main")), lv.EVENT.CLICKED, None) - MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_answer")), lv.EVENT.CLICKED, None) + MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "videolist")), lv.EVENT.CLICKED, None) MainMenu2_img_camera.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera")), lv.EVENT.CLICKED, None) - # MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.CLICKED, None) + MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.CLICKED, None) MainMenu2_img_contacts.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "contacts")), lv.EVENT.CLICKED, None) MainMenu2_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.CLICKED, None) # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.CLICKED, None) @@ -381,9 +381,9 @@ class MainMenuScreen(Screen): MainMenu2_img_toolbox.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "toolbox")), lv.EVENT.PRESSING, None) MainMenu2_img_setting.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "setting")), lv.EVENT.PRESSING, None) MainMenu2_img_add_friends.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "pp_main")), lv.EVENT.PRESSING, None) - MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_answer")), lv.EVENT.PRESSING, None) + MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "videolist")), lv.EVENT.PRESSING, None) MainMenu2_img_camera.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera")), lv.EVENT.PRESSING, None) - # MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.CLICKED, None) + MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.PRESSING, None) MainMenu2_img_contacts.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "contacts")), lv.EVENT.PRESSING, None) MainMenu2_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.PRESSING, None) # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.CLICKED, None) diff --git a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip index 116856af..45d3d8d9 100644 Binary files a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip and b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip differ diff --git a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/include/app_link_start_addr.h b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/include/app_link_start_addr.h index 00a6fa7d..45677750 100644 --- a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/include/app_link_start_addr.h +++ b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/include/app_link_start_addr.h @@ -2,8 +2,8 @@ #ifndef __APP_LINK_START_ADDR_H__ #define __APP_LINK_START_ADDR_H__ -#define APP_LINK_START_ADDR 0x804D5000 -#define APP_FLASH_MAX_SIZE 0x1DB000 +#define APP_LINK_START_ADDR 0x804DA000 +#define APP_FLASH_MAX_SIZE 0x208000 #define APP_RAM_START 0x7E3E0000 #define APP_RAM_MAX_SIZE 0x180000 diff --git a/2.sdk/project/K01/usr/static/album/camer.txt b/2.sdk/project/K01/usr/static/album/camer.txt new file mode 100644 index 00000000..e69de29b diff --git a/2.sdk/project/K01/usr/static/album_delete.png b/2.sdk/project/K01/usr/static/album_delete.png new file mode 100644 index 00000000..a6cc75cd Binary files /dev/null and b/2.sdk/project/K01/usr/static/album_delete.png differ diff --git a/2.sdk/project/K01/usr/static/camera_album_btn.png b/2.sdk/project/K01/usr/static/camera_album_btn.png new file mode 100644 index 00000000..6e1bf643 Binary files /dev/null and b/2.sdk/project/K01/usr/static/camera_album_btn.png differ diff --git a/2.sdk/project/K01/usr/static/camera_btn.png b/2.sdk/project/K01/usr/static/camera_btn.png new file mode 100644 index 00000000..9474e7ee Binary files /dev/null and b/2.sdk/project/K01/usr/static/camera_btn.png differ