def getDuractionTime(year, duractionTime): massing = [] startLockTime = 0 startLockName = "" ren = len(duractionTime) if "PM: suspend of" in duractionTime.keys( ) and "PM: resume of" in duractionTime.keys(): totalityTime = Time.DuractionTime(year, duractionTime["PM: resume of"], duractionTime["PM: suspend of"]) massing.append("唤醒持续时长:" + str(totalityTime) + "秒" + "=====" + "开始时间:" + duractionTime["PM: resume of"] + ">>>>" + "结束时间:" + duractionTime["PM: suspend of"] + "\n") else: massing.append("本次唤醒之后没有休眠或者log终结唤醒时间:" + duractionTime["PM: resume of"] + "\n") for key, address in duractionTime.items(): if not key == "PM: resume of": if startLockTime != 0 and startLockName != "": lockTime = Time.DuractionTime(year, startLockTime, address) massing.append(startLockName + "持续了:" + str(lockTime) + "秒" + "\n") startLockName = key startLockTime = address else: startLockName = key startLockTime = address return massing
def calculation_All_Time_Current(startTime, all_Time, endTime, fd_main, strTitle, year): if Time.isTime(startTime) and int( Time.TimeTransferTimestamp(str(startTime))) > 0: fd_main.writelines(strTitle + str(all_Time + Time.DuractionTime( year, startTime, Time.TimeTimestampTransfer(endTime))) + "秒" + "\n") startTime = 0 else: fd_main.writelines(strTitle + str(all_Time) + "秒" + "\n") startTime = 0 return startTime
def readRadioFiles(filenamelits, startTime, endTime, keyword, year, resultDirectory): isTime = False lineIsTime = False indexd = 0 indexc = 0 activeStartTime = "" fd_modem_active = open(resultDirectory + "\modem_active.txt", 'a', encoding='utf-8') fd_getDataConnec = open(resultDirectory + "\getDataConnec.txt", 'a', encoding='utf-8') fd_voice_state = open(resultDirectory + "\VOICE_STATE.txt", 'a', encoding='utf-8') fd_data_state = open(resultDirectory + "\DATA_STATE.txt", 'a', encoding='utf-8') result_Radio = {} dataConnecte = {} dataRadioTechnology = [] modelActiveData = [] for fileName in filenamelits: file = open(fileName, "rb") fd_modem_active.write(fileName + '\n') fd_getDataConnec.write(fileName + '\n') fd_voice_state.write(fileName + '\n') fd_data_state.write(fileName + '\n') while 1: lines = file.readlines(100000) if not lines: break for line in lines: for key, address in keyword.items(): if str.encode(key) in line: #if re.search(str.encode(key),line)!= None: #内判断满足条件的行的时间是否在开始时间和结束时间内 #获取每行开头的时间 "2018-01-06 05:54:40类型" currentTime = year + "-" + str(line)[2:16] if (Time.inTheTime(startTime, endTime, str(currentTime))): if (key == r'LIST_CHANGED [D'): #print(str(line)[str(line).find(r"active=") + len(r"active="):str(line).find(r"active=")+len(r"active=") + 1]) indexValuts = str(line).find(r"active=") + len( r"active=") fd_modem_active.writelines( str(line, encoding='utf-8')) #只统计第一个不等于2的 if int(str(line)[indexValuts:indexValuts + 1] ) == 2 and activeStartTime == "": activeStartTime = currentTime #print("2="+currentTime) #print(str(line)[str(line).find(r"active=") + len(r"active="):str(line).find(r"active=")+len(r"active=") + 1]) #print (str(line,encoding='utf-8')) elif int( str(line) [indexValuts:indexValuts + 1]) == 1 or int( str(line)[indexValuts:indexValuts + 1]) == 0: #print("1="+currentTime) #只计算第一个等于 1 的 if (activeStartTime != 0): duractionTime = Time.DuractionTime( year, activeStartTime, currentTime) modelActiveData.append(duractionTime) #把modem active激活和释放的时间和时长输出到文本 string = "StartTime=" + str( activeStartTime ) + ">>" + "entTime" + str( currentTime ) + "===" + "DuractionTime=" + str( duractionTime) + "\n" fd_modem_active.writelines(string) activeStartTime = "" elif key == r'DEACTIVATE_DATA_CALL 0' or key == r'DEACTIVATE_DATA_CALL 1': duractionTime = Time.DuractionTime( year, activeStartTime, currentTime) modelActiveData.append(duractionTime) #把modem active激活和释放的时间和时长输出到文本 string = "StartTime=" + str( activeStartTime) + ">>" + "entTime" + str( currentTime ) + "===" + "DuractionTime=" + str( duractionTime) + "\n" fd_modem_active.writelines(string) activeStartTime = "" elif (key == r'getDataConnec'): #返回时间节点和链接或者断开的状态 if str.encode("DISCONNECTED") in line: if r"断网:" in dataConnecte.keys(): dataConnecte[r"断网:"] = int( dataConnecte[r"断网:"]) + 1 else: dataConnecte[r"断网:"] = 1 elif str.encode("CONNECTED") in line: if r"链接:" in dataConnecte.keys(): dataConnecte[r"链接:"] = int( dataConnecte[r"链接:"]) + 1 else: dataConnecte[r"链接:"] = 1 elif str.encode("CONNECTING") in line: if r"正在链接:" in dataConnecte.keys(): dataConnecte[r"正在链接:"] = int( dataConnecte[r"正在链接:"]) + 1 else: dataConnecte[r"正在链接:"] = 1 elif str.encode("suspended") in line: if r"暂停:" in dataConnecte.keys(): dataConnecte[r"暂停:"] = int( dataConnecte[r"暂停:"]) + 1 else: dataConnecte[r"暂停:"] = 1 fd_getDataConnec.writelines( str(line, encoding='utf-8')) elif (key == r'VOICE_REGISTRATION_STATE'): fd_voice_state.writelines( str(line, encoding='utf-8')) elif (key == r'DATA_REGISTRATION_STATE'): fd_data_state.writelines( str(line, encoding='utf-8')) elif (key == r'dataRadioTechnology'): dataValuts = str(line).find( r"dataRadioTechnology=") + len( r"dataRadioTechnology=") dataRadioTechnology.append( str(line)[dataValuts:-3]) # copy_file(R"E:\a\ojhgakbkyroqrhih\heart.txt",R"E:\a\ojhgakbkyroqrhih\healthd.txt",'utf-8') if os.path.isfile(fileName): file.close if activeStartTime != "": duractionTime = Time.DuractionTime(year, activeStartTime, Time.TimeTimestampTransfer(endTime)) modelActiveData.append(duractionTime) #把modem active激活和释放的时间和时长输出到文本 fd_modem_active.writelines("到log结束的时间点,没释放的active" + "\n") string = "StartTime=" + str(activeStartTime) + ">>" + "entTime" + str( Time.TimeTimestampTransfer(endTime) ) + "===" + "DuractionTime=" + str(duractionTime) + "\n" fd_modem_active.writelines(string) activeStartTime = "" fd_modem_active.flush() fd_modem_active.close() fd_getDataConnec.flush() fd_getDataConnec.close() fd_voice_state.flush() fd_voice_state.close() fd_data_state.flush() fd_data_state.close() if modelActiveData: result_Radio["modelActiveData"] = modelActiveData if dataConnecte: result_Radio["dataConnecte"] = dataConnecte if dataRadioTechnology: result_Radio["dataRadioTechnology"] = dataRadioTechnology return result_Radio
def readKernelFiles(filenamelits, startTime, endTime, keyword, year, resultDirectory): kernelData = {} fd_kernel = open(resultDirectory + "\kernel.txt", 'a', encoding='utf-8') wakeUp = False duractionTime = OrderedDict() wakeLockName = "" wakeUpTime = "" wakeUpNum = 0 # totalityWakeUpDeque = OrderedDict() #为了区别计算每次唤醒相同锁出现的次数 itme = 0 for fileName in filenamelits: file = open(fileName, "rb") fd_kernel.write(fileName + '\n') while 1: lines = file.readlines(100000) if not lines: break for line in lines: for key, address in keyword.items(): #判断CPU的状态并保持到文本 if str.encode(key) in line: #获取每行开头的时间 "2018-01-06 05:54:40类型" currentTime = year + "-" + str(line)[2:16] #内判断满足条件的行的时间是否在开始时间和结束时间内 if (Time.inTheTime(startTime, endTime, str(currentTime))): ''' if (key == "PM: suspend exit"): wakeUp = True duractionTime[key] = currentTime elif (wakeUp and key == "active wakeup source"): #为了区别计算每次唤醒相同锁出现的次数 itme = itme + 1 #获取锁的名字 wakeLockName = MyString.getCherByWake(line,"active wakeup source:") #过滤掉换行符,由于读取的是二进制所以先转换成utf-8编码 wakeLockName = str(wakeLockName,encoding = 'utf-8').strip("\n") #因为会有重复的锁,所以先判断是否已经存在,就加个标志 if wakeLockName in duractionTime.keys(): duractionTime[wakeLockName+"=="+str(itme)] = currentTime else: duractionTime[wakeLockName] = currentTime elif (wakeUp and key == "PM: suspend entry"): wakeUp = False duractionTime[key] = currentTime #计算唤醒时间的总时长并计算中间的持锁的时间 message = getDuractionTime(year,duractionTime) #返回的结果写入文本 fd_kernel.writelines(message) #每次结束清除掉字典 duractionTime.clear() ''' if (key == "PM: suspend exit"): #取PM: suspend exit后面的值 wakeUpTime = MyString.getCherTime( str(line, encoding='utf-8'), "PM: suspend exit ") #按 "."切割,取第一个数据就是时间 wakeUpTime = str(wakeUpTime).split(".")[0] wakeUp = True wakeUpNum = wakeUpNum + 1 pass elif (wakeUp == True and key == "PM: suspend entry"): entryTime = MyString.getCherTime( str(line, encoding='utf-8'), "PM: suspend entry ") #按 "."切割,取第一个数据就是时间 entryTime = str(entryTime).split(".")[0] wakeUpDuractionTimee = Time.DuractionTime( year, wakeUpTime, entryTime) fd_kernel.writelines( "唤醒时长:" + str(wakeUpDuractionTimee) + "秒" + "---" + "开始时间:" + str(wakeUpTime) + ">>>" + "结束时间:" + str(entryTime) + "\n") wakeUp = False wakeUpTime = "" entryTime = "" else: if address in kernelData.keys( ) and address != r"系统休眠:": kernelData[address] = int( kernelData[address]) + 1 elif address != r"系统休眠:": kernelData[address] = 1 break if os.path.isfile(fileName): file.close ''' #解析完成后 判断duractionTime里面是否有数据,如果有数据,说明最后唤醒后就没有在休眠了,或者log没有了,这里提个醒 if len(duractionTime) > 0: #计算唤醒时间的总时长并计算中间的持锁的时间 message = getDuractionTime(year,duractionTime) #返回的结果写入文本 fd_kernel.writelines(message) ''' if wakeUpTime != "": fd_kernel.writelines(str(wakeUpTime) + "时间点唤醒之后没有休眠确认是否log结束" + "\n") fd_kernel.writelines("唤醒次数:" + str(wakeUpNum) + "\n") ''' for key,address in kernelData.items(): fd_kernel.writelines(key+str(address)) fd_kernel.flush() fd_kernel.close() ''' return kernelData
def readMainFiles(filenamelits, startTime, endTime, keyword, year, resultDirectory): isTime = False lineIsTime = False indexd = 0 indexc = 0 result = {} otherData = {} mainData = {} wakeUpData = {} fd_heart = open(resultDirectory + "\heart.txt", 'a', encoding='utf-8') fd_healthd = open(resultDirectory + "\healthd.txt", 'a', encoding='utf-8') #保存锁的文本 fd_wakeup = open(resultDirectory + "\wakeup.txt", 'a', encoding='utf-8') #保存main信息 fd_main = open(resultDirectory + "\main.txt", 'a', encoding='utf-8') #保存锁的列表 wakelockDeque = [] #保存锁的出现次数和总共持续时间 totalityLockDeque = OrderedDict() removeLock = False differenceLock = [] screenOnTime = 0 screenOnAllTime = 0 screenOnAllNum = 0 differenceScreenOn = [] sensorList = [] sensorAllNum = 0 sensorAllTime = 0 gpsAllNum = 0 gpsAllTime = 0 gpsOpenTime = 0 wifi_on_time = "" wifi_on_All_time = 0 bluetooth_on_time = "" bluetooth_on_All_time = 0 mobile_data_time = "" mobile_data_All_time = 0 #保存视频通话时长和次数 videoChat_Time = 0 videoChat_Num = 0 #判断是不是展讯平台 isSprd = False moreTag_dict = OrderedDict() for fileName in filenamelits: if r'slog' in fileName: isSprd = True file = open(fileName, "rb") fd_healthd.write(fileName + '\n') fd_heart.write(fileName + '\n') fd_wakeup.write(fileName + '\n') while 1: lines = file.readlines(100000) if not lines: break for line in lines: if not str.encode( "=================== beginning of main_system" ) in line: tag = str(line)[35:].split(" ")[0] tag = str(str.encode(tag), encoding='utf-8') if tag != ":": if (not tag in moreTag_dict.keys()): moreTag_dict[tag] = 1 else: moreTag_dict[tag] = moreTag_dict[tag] + 1 for key, address in keyword.items(): if str.encode(key) in line: #if re.search(str.encode(key),line)!= None: #获取每行开头的时间 "2018-01-06 05:54:40类型" currentTime = year + "-" + str(line)[2:16] #内判断满足条件的行的时间是否在开始时间和结束时间内 if (Time.inTheTime(startTime, endTime, str(currentTime))): #***************************************************************************************************** ''' 统计亮屏时间和次数 ''' if r"Screen on to" == key or r'", ON' == key: #获取当前行的前面时间包括毫秒 diffTime = str(line, encoding='utf-8')[:20] #判断这个锁是否已经统计过了 if not diffTime in differenceScreenOn: if screenOnTime != 0: fd_main.writelines( str(currentTime) + "这个时间点亮屏,后面没有灭屏,又亮屏了") screenOnTime = currentTime else: screenOnTime = currentTime screenOnAllNum = screenOnAllNum + 1 differenceScreenOn.append(diffTime) if r"Screen off to" == key or r'", OFF' == key: #获取当前行的前面时间包括毫秒 diffTime = str(line, encoding='utf-8')[:20] if not diffTime in differenceScreenOn: screenOnTime_Duraction = Time.DuractionTime( year, screenOnTime, currentTime) fd_main.writelines( str(screenOnTime) + " --- " + str(currentTime) + " --- " + "亮屏时间:" + str(screenOnTime_Duraction) + "秒" + "\n") screenOnTime = 0 screenOnAllTime = screenOnAllTime + screenOnTime_Duraction differenceScreenOn.append(diffTime) #****************************************************************************************************** #输出所有的电池信息到文本 if str.encode( r'healthd' ) in line or r"healthd" == key or ( str.encode(r'ACTION_BATTERY_CHANGED') in line and isSprd): fd_healthd.writelines( str(line, encoding='utf-8')) #视频通话时长输出到文本 if str.encode(r'通话总时长') in line or str.encode( r'通话时长') in line: fd_main.writelines(str(line, encoding='utf-8')) if str.encode(r'通话总时长') in line: time = str(line).split("during = ")[1] time = str(time).replace(r"\n'", "") videoChat_Num += 1 videoChat_Time += int(time) #输出所有的心跳信息到文本 if r"atInfo is" == key or r"receive heartbeat" == key or r"send broadcast on heartbeat response successful" == key: #currentTime = year+"-"+str(line)[2:16] fd_heart.writelines(str(line, encoding='utf-8')) #****************************************************************************************************** #统计锁 #把锁的信息都输出到文本 elif r"acquireWakeLockInternal:" == key and not str.encode( "RILJ") in line: #获取锁的flags flags = int( MyString.getIndexCher( line, ",", 1, "flags="), 16) #判断是否是唤醒锁,以下4种锁是唤醒CPU的 if Utilty.isWakeUpCpu(flags): #获取当前行的前面时间包括毫秒 diffTime = str(line, encoding='utf-8')[:20] #获取锁的名字,并去掉前后的"号,获取lock值 tag, lock = Utilty.getWakeLockInfo( str(line, encoding='utf-8')) #判断这条记录是否已经统计过了,统计过了就不加到列表里面 if not Utilty.isInLockDeque( differenceLock, tag, lock, diffTime): fd_wakeup.writelines( str(line, encoding='utf-8')) #给对象负值 wakeLockObject = WakeLockObject.WakeLock( tag, lock, currentTime) #把对象加到集合里面 wakelockDeque.append(wakeLockObject) #这个锁已经记录了保存 diffWakeLockObject = WakeLockObject.WakeLock( tag, lock, diffTime) differenceLock.append( diffWakeLockObject) elif r"releaseWakeLockInternal:" == key and not str.encode( "RILJ") in line: indexs = [] #在这里计算锁释放的时间 for index, wakeLock in enumerate( wakelockDeque): if str.encode(wakeLock._lock_ ) in line and str.encode( wakeLock._name_) in line: #判断这个锁释放已经处理并移除过了,如果相同的锁就直接移除不在计算时间 if removeLock == True: fd_wakeup.writelines( "name=" + str(wakeLock._name_) + "==" + "lock=" + str(wakeLock._lock_) + "==" + "time" + str(wakeLock._time_) + "重复锁" + "\n") #记录要移除的锁 indexs.append(index) else: time = Time.DuractionTime( year, wakeLock._time_, currentTime) #释放锁的时候的打印 fd_wakeup.writelines( str(line, encoding='utf-8')) #输出文本 fd_wakeup.writelines( str("time=" + str(wakeLock._time_) + "lock=" + wakeLock._lock_ + "tag=" + wakeLock._name_ + "锁持续:" + str(time) + "秒") + "\n") #统计锁出现的次数和总共持续时间 totalityLockDeque = Utilty.addWakeLockToDeque( wakeLock._name_, totalityLockDeque, time) #记录要移除的锁 indexs.append(index) #标志这个锁已经处理过并且移除过了,第二次在出现相同锁的时候直接移除不计算时间 removeLock = True #完成一次索引后移除的标志要设为False removeLock = False #从wakelockDeque移除锁 #因为每次移除一个元素,列表的长度就减少一位,那么原来的坐标就会变化,再按照原来的坐标去移除就不对了 #做法是:真正移除的坐标等于要移除的坐标减去列表的偏移 wakelockDeque_len = len(wakelockDeque) for index in indexs: index = index - (wakelockDeque_len - len(wakelockDeque)) wakelockDeque.pop(index) #****************************************************************************************************** elif r"activate sensors" == key: ''' sensorStutas = MyString.getIndexCher(str(line,encoding='utf-8'),",",1,"enable=").strip("\n") sensorsName = MyString.getIndexCher(line,",",0,"activate sensors").strip("\"") ''' #获取sensor的名字和状态,#状态1 代表开启 0代表关闭 sensorStutas, sensorsName = Utilty.getSensorInfo( line) if sensorStutas == "1": #把开启的sensor,名字和时间加入队列 sensorList.append( [sensorsName, currentTime]) elif sensorStutas == "0": for index, sensor in enumerate(sensorList): if sensorsName == sensor[0]: sensorTime = Time.DuractionTime( year, sensor[1], currentTime) fd_main.writelines( sensor[1] + "---" + str(currentTime) + ">>>" + "sensor:" + sensorsName + "持续:" + str(sensorTime) + "秒" + "\n") sensorList.pop(index) sensorAllNum = sensorAllNum + 1 sensorAllTime = sensorAllTime + sensorTime break elif r"Call open_gps name" == key: gpsOpenTime = currentTime gpsAllNum = gpsAllNum + 1 elif r"gps_cleanup: clear init" == key: gpsTime = Time.DuractionTime( year, gpsOpenTime, currentTime) gpsAllTime = gpsAllTime + gpsAllTime gpsOpenTime = 0 elif r"Global.putString(name=" == key: ''' #获取设备名,wifi/bluetooth_on/mobile_data globalName = MyString.getIndexCher(str(line,encoding='utf-8'),",",0,"name=").strip("\n") #获取状态值先按","切割取第二个值,然后再按" "切割取value=后面的值 #状态1 代表开启 0代表关闭 value = str(line,encoding='utf-8').split(",")[1] value = MyString.getIndexCher(value," ",1,"value=").strip("\n") ''' #获取设备名,wifi/bluetooth_on/mobile_data 和开关状态值 globalName, value = Utilty.getGlobalInfo( str(line, encoding='utf-8')) time = Time.DuractionTime( year, wifi_on_time, currentTime) if globalName == "wifi_on": if value == "1": wifi_on_time = currentTime elif value == "0" and wifi_on_time != "": wifi_on_All_time = wifi_on_All_time + time wifi_on_time = "" elif globalName == "bluetooth_on": if value == "1": bluetooth_on_time = currentTime elif value == "0" and bluetooth_on_time != "": bluetooth_on_All_time = bluetooth_on_All_time + time bluetooth_on_time = "" elif globalName == "mobile_data": if value == "1": mobile_data_time = currentTime elif value == "0" and mobile_data_time != "": mobile_data_All_time = mobile_data_All_time + time mobile_data_time = "" #address != r"healthd:" 为了过滤掉healthd在图片上的显示 elif address in mainData.keys( ) and address != r"healthd:" and address != r"AP唤醒CPU:" and address != r"AP释放锁:" and address != r"电量:" and address != r"灭屏:": mainData[address] = int(mainData[address]) + 1 elif address != r"healthd:" and address != r"AP唤醒CPU:" and address != r"AP释放锁:" and address != r"电量:" and address != r"灭屏:": mainData[address] = 1 break # copy_file(R"E:\a\ojhgakbkyroqrhih\heart.txt",R"E:\a\ojhgakbkyroqrhih\healthd.txt",'utf-8') if os.path.isfile(fileName): file.close #***************************************************************************************************************************** ''' #统计没有释放的锁 ''' if len(wakelockDeque) > 0: for index, wakeLock in enumerate(wakelockDeque): fd_wakeup.writelines(wakeLock._time_ + "-----" + "tag=" + wakeLock._name_ + "lock=" + wakeLock._lock_ + "未释放或者log已完结" + "\n") #统计锁出现的次数和总共持续时间 if wakeLock._name_ in totalityLockDeque.keys(): totalityLockDeque[wakeLock._name_][0] = totalityLockDeque[ wakeLock._name_][0] + 1 totalityLockDeque[wakeLock._name_][1] = totalityLockDeque[ wakeLock._name_][1] + Time.DuractionTime( year, wakeLock._time_, Time.TimeTimestampTransfer(endTime)) else: totalityLockDeque[wakeLock._name_] = [1, 0] ''' 统计锁出现的次数和总共持续的时间 ''' #先排序 按字典的value值排序reverse = True取反,因为默认是从小到大 totalityLockDeque = sorted(totalityLockDeque.items(), key=operator.itemgetter(1), reverse=True) #print(totalityLockDeque) if len(totalityLockDeque) > 0: for key, address in enumerate(totalityLockDeque): fd_wakeup.writelines( str(address[0]) + "---" + "次数:" + str(address[1][0]) + "时间:" + str(address[1][1]) + "秒" + "\n") wakeUpData = totalityLockDeque #***************************************************************************************************************************** ''' 统计亮屏次数和时间 ''' if screenOnTime != 0: fd_main.writelines( str(screenOnTime) + "这个时间点亮屏,后面没有灭屏,确定是否是log完结" + "\n") if screenOnAllNum != 0 and screenOnAllTime != 0: fd_main.writelines("亮屏时间:" + str(screenOnAllTime) + "秒" + "---" + "亮屏次数:" + str(screenOnAllNum) + "\n") otherData["亮屏"] = [screenOnAllTime, screenOnAllNum] #***************************************************************************************************************************** ''' 统计sensor次数和时间 ''' if (sensorAllTime != 0 and sensorAllNum != 0) or len(sensorList) > 0: if len(sensorList) > 0: for index, sensor in enumerate(sensorList): sensorAllTime = sensorAllTime + Time.DuractionTime( year, sensor[1], Time.TimeTimestampTransfer(endTime)) fd_main.writelines("sensor:" + sensor[0] + "---" + sensor[1] + "这个时间开启一直没关确认是否log结束" + "\n") fd_main.writelines("sensor时间:" + str(sensorAllTime) + "秒" + "---" + "sensor次数:" + str(sensorAllNum) + "\n") otherData["sensor"] = [sensorAllTime, sensorAllNum] #***************************************************************************************************************************** ''' 统计gps次数和时间 ''' if (gpsAllTime != 0 and gpsAllNum != 0) or gpsOpenTime != 0: fd_main.writelines("gps持续时间:" + str(gpsAllTime) + "秒" + "---" + "gps次数:" + str(gpsAllNum) + "\n") if gpsOpenTime != 0: fd_main.writelines("gps:" + str(gpsOpenTime) + "这个时间开启一直没关确认是否log结束" + "\n") gpsAllTime = gpsAllTime + Time.DuractionTime( year, gpsOpenTime, Time.TimeTimestampTransfer(endTime)) otherData["gps"] = [gpsAllTime, gpsAllNum] gpsOpenTime = 0 #***************************************************************************************************************************** #把视频通话的时长和次数统计添加到列表otherData里面 # if (videoChat_Num != 0 or videoChat_Time != 0): otherData["视频通话时长"] = [videoChat_Time / 1000, videoChat_Num] #***************************************************************************************************************************** ''' 统计wifi的运行时间 ''' if Time.isTime(wifi_on_time) and int( Time.TimeTransferTimestamp(wifi_on_time)) > 0: fd_main.writelines( "wifi开启时间:" + str(wifi_on_All_time + Time.DuractionTime( year, wifi_on_time, Time.TimeTimestampTransfer(endTime))) + "秒" + "\n") wifi_on_time = 0 else: fd_main.writelines("wifi开启时间:" + str(wifi_on_All_time) + "秒" + "\n") wifi_on_time = 0 #***************************************************************************************************************************** ''' 统计bluetooth的运行时间 ''' if Time.isTime(bluetooth_on_time) and int( Time.TimeTransferTimestamp(str(bluetooth_on_time))) > 0: fd_main.writelines( "蓝牙开启时间:" + str(bluetooth_on_All_time + Time.DuractionTime(year, bluetooth_on_time, Time.TimeTimestampTransfer(endTime))) + "秒" + "\n") bluetooth_on_time = 0 else: fd_main.writelines("蓝牙开启时间:" + str(bluetooth_on_All_time) + "秒" + "\n") bluetooth_on_time = 0 #***************************************************************************************************************************** ''' 统计数据流量的运行时间 ''' ''' if Time.isTime(mobile_data_time) and int(Time.TimeTransferTimestamp(str(mobile_data_time))) > 0: fd_main.writelines("数据流量开启时间:"+str(mobile_data_All_time+Time.DuractionTime(year,mobile_data_time,Time.TimeTimestampTransfer(endTime)))+"秒"+"\n") mobile_data_time = 0 else: fd_main.writelines("数据流量开启时间:"+str(mobile_data_All_time)+"秒"+"\n") mobile_data_time = 0 ''' #这个方法待验证 mobile_data_time = Utilty.calculation_All_Time_Current( mobile_data_time, mobile_data_All_time, endTime, fd_main, "数据流量开启时间:", year) #***************************************************************************************************************************** more_tag_dict = sorted(moreTag_dict.items(), key=operator.itemgetter(1), reverse=True) for address in more_tag_dict: fd_main.writelines(str(address) + "\n") fd_healthd.flush() fd_healthd.close() fd_heart.flush() fd_heart.close() fd_wakeup.flush() fd_wakeup.close() fd_main.flush() fd_main.close() if mainData: result["mainData"] = mainData if otherData: result["otherData"] = otherData if wakeUpData: result["wakeUpData"] = wakeUpData return result