Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	entry/src/main/ets/common/service/voiceService.ts
This commit is contained in:
surenjun 2024-09-02 18:20:19 +08:00
commit 8da91d74e0
8 changed files with 216 additions and 95 deletions

View File

@ -5,7 +5,7 @@ import { dateFormat } from '../utils/tools'
import FileUtil from '../../common/utils/File' import FileUtil from '../../common/utils/File'
import AccountTable from '../../common/database/tables/AccountTable' import AccountTable from '../../common/database/tables/AccountTable'
import MA_SYSSET from '../../common/constants/MA_SYSSET' import MA_SYSSET from '../../common/constants/MA_SYSSET'
import { takePhoto } from '../../common/service/videoService' import { takePhoto,deleteAllFileByPiC } from '../../common/service/videoService'
import { import {
delSyncTable, delSyncTable,
@ -46,6 +46,7 @@ export async function deleteAllFIleLog(path){
"recursion": false, "recursion": false,
"listNum": 0, "listNum": 0,
}; };
let filenames = fs.listFileSync(path, options); let filenames = fs.listFileSync(path, options);
console.info("listFile succeed",JSON.stringify(filenames)); console.info("listFile succeed",JSON.stringify(filenames));
for (let i = 0; i < filenames.length; i++) { for (let i = 0; i < filenames.length; i++) {
@ -64,14 +65,35 @@ export async function deleteAllFIleLog(path){
} }
} }
export async function delHilog(){
console.log('kkkkmmm1')
const fileUtil = new FileUtil(globalThis.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/hilogTime.txt');
const folderPath = await fileUtil.initFolder(`/config`);
console.log('kkkkmmm2',data)
if(data === '' || data === undefined){
const date=dateFormat(new Date()).split(' ')[0]
console.log('mm'.date)
fileUtil.addFile(`${folderPath}/hilogTime.txt`, date)
}else{
console.log('kkkkmmm2',data)
console.log('datadata',data,isSevenDaysAgo(data))
if(isSevenDaysAgo(data)){
const date=dateFormat(new Date()).split(' ')[0]
fileUtil.addFile(`${folderPath}/hilogTime.txt`, date)
deleteAllFileByPiC('pz',1)
// fileUtil.addFile(`${folderPath}/hilogTime.txt`, JSON.stringify(num))
}
}
}
function isSevenDaysAgo(date) { function isSevenDaysAgo(date) {
const today = new Date(); // 当前日期 const today = new Date(); // 当前日期
const target = new Date(date); // 需要判断的日期 const target = new Date(date); // 需要判断的日期
console.info("listFile succeed1",JSON.stringify(target)); console.info("listFile succeed1",JSON.stringify(target));
const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异 const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数 const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
console.info("listFile succeed2",JSON.stringify(diffDays)); console.info("listFile succeed2",(diffDays));
// 如果差异天数正好是7则原日期是当前日期的前七天 // 如果差异天数正好是7则原日期是当前日期的前七天
return diffDays > 7; return diffDays > 7;
} }

View File

@ -5,10 +5,12 @@ import fs from '@ohos.file.fs'
// @ts-ignore // @ts-ignore
import photoAccessHelper from '@ohos.file.photoAccessHelper' import photoAccessHelper from '@ohos.file.photoAccessHelper'
import dataSharePredicates from '@ohos.data.dataSharePredicates' import dataSharePredicates from '@ohos.data.dataSharePredicates'
import { getCurrentTime } from '../utils/tools' import { dateFormat, getCurrentTime, isSevenDaysAgo } from '../utils/tools'
// import rtsp_server from '@ohos.rtsprecord'; // import rtsp_server from '@ohos.rtsprecord';
import record from '@ohos.rtsprecord'; import record from '@ohos.rtsprecord';
import { FileHelper } from './FileHelper'; import { FileHelper } from './FileHelper';
import FileUtil from '../utils/File';
import { GlobalConfig } from '../../config';
const rtsp_server = record.createServer(); const rtsp_server = record.createServer();
//开始录屏 //开始录屏
@ -28,22 +30,30 @@ photoAccessHelper.PhotoKeys.TITLE,
photoAccessHelper.PhotoKeys.POSITION, photoAccessHelper.PhotoKeys.POSITION,
photoAccessHelper.PhotoKeys.DATE_TRASHED, photoAccessHelper.PhotoKeys.DATE_TRASHED,
photoAccessHelper.PhotoKeys.HIDDEN]; photoAccessHelper.PhotoKeys.HIDDEN];
// const rtsp_server = record.createServer(); // const rtsp_server = record.createServer();
export async function startRecordVideo(param, td, context, dir) { export async function startRecordVideo(param, td, context, dir, path?,index?) {
return new Promise((reslove, reject) => { return new Promise(async (reslove, reject) => {
// const fileUtil = new FileUtil(globalThis.context)
// const date=dateFormat(new Date).split(' ')[0]
// const folderPath = await fileUtil.initFolder(`/PLC/${date}/${dir}`);
var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${td}/main/av_stream`; var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${td}/main/av_stream`;
if (rtsp_server != null) { if (rtsp_server != null) {
console.log(`Rtsprecord startRecordVideo begin,video_uri`, video_uri); console.log(`Rtsprecord startRecordVideo begin,video_uri`, video_uri);
const num = Math.floor(Math.random() * 10000) const num = Math.floor(Math.random() * 10000)
const fileName = `movie_record${num}.mp4` let fileName
if (!path) {
fileName = `movie_record${num}.mp4`
} else {
fileName = `${path}_${index||num}.mp4`
}
// @ts-ignore // @ts-ignore
var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, dir); var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, dir);
const handleId = recordResult.dataInt; const handleId = recordResult.dataInt;
console.log(`Rtsprecord startRecordVideo begin,handleId`, handleId);
reslove(handleId) reslove(handleId)
console.log(`Rtsprecord startRecordVideo record_handle` + recordResult.dataInt);
} }
else { else {
console.log(`Rtsprecord startRecordVideo rtsp_server isnull`); console.log(`Rtsprecord startRecordVideo rtsp_server isnull`);
@ -55,21 +65,95 @@ export async function startRecordVideo(param, td, context, dir) {
} }
//结束录屏 //结束录屏
export async function endRecordVideo(record_handle) { export async function endRecordVideo(record_handleObj) {
if (rtsp_server != null && record_handle > 0) { for (let key in record_handleObj) {
if (rtsp_server != null && record_handleObj[key] > 0) {
console.log(`Rtsprecord endRecordVideo begin`); console.log(`Rtsprecord endRecordVideo begin`);
// @ts-ignore // @ts-ignore
var recordResult = rtsp_server.endRecordVideo(record_handle); var recordResult = rtsp_server.endRecordVideo(record_handleObj[key]);
console.log(`Rtsprecord startRecordVideo record_handle` + recordResult.dataInt + ` filename:` + recordResult.fileName); console.log(`Rtsprecord endRecordVideo record_handle` + record_handleObj[key].dataInt + ` filename:` + record_handleObj[key].fileName);
} }
else { else {
console.log(`Rtsprecord endRecordVideo handleId isnull`); console.log(`Rtsprecord endRecordVideo handleId isnull`);
} }
// var result = onvifclient.endRecordVideo(record_handle); }
// fs.closeSync(record_handle);
// file_asset.close(record_handle);
} }
export async function saveStartRecordVideo(path) {
return new Promise(async (reslove, reject) => {
const fileUtil = new FileUtil(globalThis.context)
const fileHelper = new FileHelper();
const date = dateFormat(new Date).split(' ')[0]
fileHelper.createAlbum(date);
// const folderPath = await fileUtil.initFolder(`/${path}/${date}`);
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/config3.txt');
const param = JSON.parse(data)
const record_handle = {
1: 0,
2: 1,
3: 2,
4: 3
}
for (let i = 1; i <= 4; i++) {
if (param['videoRecord'+i]) {
console.log('pathpath0',path)
record_handle[i] = await getfilehandleCode(i, param, date, path,i)
}
}
reslove(record_handle)
})
}
async function getfilehandleCode(td, param, dir, path,index) {
return new Promise(async (reslove, reject) => {
console.log('pathpath1',path)
const record_handle = await startRecordVideo(param, td, globalThis.context, dir, path,index)
// this.rocordHandleObj['rocord_handle'+td] = record_handle
reslove(record_handle)
})
}
export async function getUserAlbumItemByDisplayName(displayName: string): Promise<photoAccessHelper.Album> {
let fetchResult = null
let album: photoAccessHelper.Album = null
try {
console.log('getUserAlbumItemByDisplayName');
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo(photoAccessHelper.AlbumKeys.ALBUM_NAME, displayName)
let fetchOptions = {
fetchColumns: [],
predicates: predicates
};
const userFileMgr = photoAccessHelper.getPhotoAccessHelper(globalThis.context);
fetchResult = await userFileMgr.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
console.log('get getUserAlbumItemByDisplayName, count: ' + JSON.stringify(fetchResult));
if (fetchResult.getCount() > 0) {
const albums = await fetchResult.getLastObject();
console.log('get getUserAlbumItemByDisplayName album111',albums.albumName)
if(isSevenDaysAgo(albums.albumName)){
deleteAllFileByPiC(albums.albumName,2)
}
console.log('get getUserAlbumItemByDisplayName album',)
}
} catch (err) {
console.log('get Album getUserAlbumItemByDisplayName fetchResult failed with err: ' + err);
} finally {
if (fetchResult != null) {
fetchResult.close();
}
}
return album;
}
/** /**
* *
* @param param * @param param
@ -82,6 +166,7 @@ interface takePhotoParam {
fileSize?: number, fileSize?: number,
errorCode?: number errorCode?: number
} }
/** /**
* *
* @param param * @param param
@ -92,6 +177,7 @@ interface takePhotoParam {
* @returns * @returns
*/ */
const fileHelper = new FileHelper(); const fileHelper = new FileHelper();
export async function takePhoto(param, context, dir, flag = 1, callback?) { export async function takePhoto(param, context, dir, flag = 1, callback?) {
var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${param.pztd}/main/av_stream`; var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${param.pztd}/main/av_stream`;
@ -117,7 +203,12 @@ console.log('baoyihubaoyihu',video_uri,flag)
rtsp_server.getVideoSnapshot(context, video_uri, fileName, dir, true, (err, snapResult) => { rtsp_server.getVideoSnapshot(context, video_uri, fileName, dir, true, (err, snapResult) => {
console.log('baoyihubaoyihu', video_uri, flag, JSON.stringify(snapResult)) console.log('baoyihubaoyihu', video_uri, flag, JSON.stringify(snapResult))
console.log('getPhtot', JSON.stringify(snapResult)) console.log('getPhtot', JSON.stringify(snapResult))
resolve({base64: snapResult.dataString,name:snapResult.fileName,fileSize:snapResult.fileSize,errorCode:snapResult.errorCode }) resolve({
base64: snapResult.dataString,
name: snapResult.fileName,
fileSize: snapResult.fileSize,
errorCode: snapResult.errorCode
})
}); });
}) })
console.log('getmyLog02') console.log('getmyLog02')
@ -127,6 +218,7 @@ console.log('baoyihubaoyihu',video_uri,flag)
} }
//type:1 是图片 2是视频 //type:1 是图片 2是视频
export async function deleteAllFileByPiC(dirName, type = 1) { export async function deleteAllFileByPiC(dirName, type = 1) {
// const fileHelper = new FileHelper(); // const fileHelper = new FileHelper();

View File

@ -195,7 +195,6 @@ export default class TcpClient {
} }
clearInterval(globalThis.intervaltcp) clearInterval(globalThis.intervaltcp)
globalThis.intervaltcp=setInterval(()=>{ globalThis.intervaltcp=setInterval(()=>{
setTimeout(async () => {
//程序断开 //程序断开
if (globalThis.tcpUdpError) { if (globalThis.tcpUdpError) {
console.log(TAG,'tcp信号丢失') console.log(TAG,'tcp信号丢失')
@ -206,7 +205,6 @@ export default class TcpClient {
}); });
} }
globalThis.tcpUdpError = true; globalThis.tcpUdpError = true;
}, 2000)
},3000) },3000)
// callback(value.message) // callback(value.message)
}); });

View File

@ -343,10 +343,10 @@ export default class UdpClientByCenter {
// this.stashFn(str) // this.stashFn(str)
const newArr = JSON.parse(JSON.stringify(strachArr)) const newArr = JSON.parse(JSON.stringify(strachArr))
// this.writeLog({ this.writeLog({
// time:dateFormat(new Date()), time:dateFormat(new Date()),
// PLC: JSON.stringify(newArr.toString()), PLC: JSON.stringify(newArr.toString()),
// }) })
if(strachArr[83]!='4'){ if(strachArr[83]!='4'){
this.chafenFlag++ this.chafenFlag++
if(this.chafenFlag>=15&&!globalThis.dialogOpen){ if(this.chafenFlag>=15&&!globalThis.dialogOpen){
@ -393,10 +393,10 @@ export default class UdpClientByCenter {
this.testIfUdpConnetced(callback) this.testIfUdpConnetced(callback)
} }
async writeLog(param){ async writeLog(param){
// const fileUtil = new FileUtil(globalThis.context) const fileUtil = new FileUtil(globalThis.context)
// const date=dateFormat(new Date).split(' ')[0] const date=dateFormat(new Date).split(' ')[0]
// const folderPath = await fileUtil.initFolder(`/PLC/${date}`); const folderPath = await fileUtil.initFolder(`/PLC/${date}`);
// fileUtil.editFile(`${folderPath}/plcLog.txt`, JSON.stringify(param)+`\n`) fileUtil.editFile(`${folderPath}/plcLog.txt`, JSON.stringify(param)+`\n`)
} }
//获取当前UDP信号 //获取当前UDP信号

View File

@ -2,7 +2,18 @@
import systemTime from '@ohos.systemDateTime'; import systemTime from '@ohos.systemDateTime';
import { expect } from '@ohos/hypium'; import { expect } from '@ohos/hypium';
import FileUtil from './File'; import FileUtil from './File';
export function isSevenDaysAgo(date) {
const today = new Date(); // 当前日期
const target = new Date(date); // 需要判断的日期
console.info("listFile succeed1",JSON.stringify(target));
const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
console.info("listFile succeed2",JSON.stringify(diffDays));
// 如果差异天数正好是7则原日期是当前日期的前七天
console.log('diffDays',diffDays)
return diffDays > 7;
}
export async function writeLog(path,param){ export async function writeLog(path,param){
return return
const fileUtil = new FileUtil(globalThis.context) const fileUtil = new FileUtil(globalThis.context)

View File

@ -59,8 +59,8 @@ export default class EntryAbility extends UIAbility {
const windowClass = await windowStage.getMainWindow(); const windowClass = await windowStage.getMainWindow();
globalThis.windowClass = windowClass globalThis.windowClass = windowClass
// await windowClass.setWindowLayoutFullScreen(true) await windowClass.setWindowLayoutFullScreen(true)
await windowClass.setWindowSystemBarEnable([]) //全屏 // await windowClass.setWindowSystemBarEnable([]) //全屏
// await windowClass.setWindowSystemBarEnable(['navigation']) // await windowClass.setWindowSystemBarEnable(['navigation'])
windowStage.loadContent('pages/Index', (err, data) => { windowStage.loadContent('pages/Index', (err, data) => {

View File

@ -1,4 +1,3 @@
// @ts-nocheck
import common from '@ohos.app.ability.common'; import common from '@ohos.app.ability.common';
import router from '@ohos.router'; import router from '@ohos.router';
import { getCarInfo, getDeviceInfo } from '../common/service/terminalService'; import { getCarInfo, getDeviceInfo } from '../common/service/terminalService';
@ -11,7 +10,7 @@ import { getUDP, getUDP2 } from '../common/utils/GlobalUdp';
import { initJudgeUdp } from '../common/utils/UdpJudge'; import { initJudgeUdp } from '../common/utils/UdpJudge';
import { judgeConfig } from './judgeSDK/utils/judgeConfig'; import { judgeConfig } from './judgeSDK/utils/judgeConfig';
import { getTCP } from '../common/utils/GlobalTcp'; import { getTCP } from '../common/utils/GlobalTcp';
import { getliushuiNum, setliushuiNum, takePhotoFn, deleteAllFIleLog } from '../common/service/indexService'; import { getliushuiNum, setliushuiNum, takePhotoFn, delHilog } from '../common/service/indexService';
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import worker, { MessageEvents } from '@ohos.worker'; import worker, { MessageEvents } from '@ohos.worker';
import promptAction from '@ohos.promptAction' import promptAction from '@ohos.promptAction'
@ -19,6 +18,8 @@ import { voiceService } from '../common/service/voiceService';
import errorMsgDialog from './compontents/errorMsgDialog' import errorMsgDialog from './compontents/errorMsgDialog'
import { getSyncData } from '../common/service/initable'; import { getSyncData } from '../common/service/initable';
import GetDistance from '../common/utils/GetDistance' import GetDistance from '../common/utils/GetDistance'
import UIAbility from '@ohos.app.ability.UIAbility';
import { endRecordVideo, getUserAlbumItemByDisplayName, saveStartRecordVideo } from '../common/service/videoService';
// import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements'; // import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
@ -44,8 +45,6 @@ struct Index {
private vocObj = null; private vocObj = null;
private workerInstance = null; private workerInstance = null;
private context = getContext(this) as common.UIAbilityContext; private context = getContext(this) as common.UIAbilityContext;
private title = ''
private type = '2'
errorDialog: CustomDialogController = new CustomDialogController({ errorDialog: CustomDialogController = new CustomDialogController({
builder: errorMsgDialog({ builder: errorMsgDialog({
title: globalThis.title, title: globalThis.title,
@ -329,6 +328,7 @@ struct Index {
workerInstance.postMessage(param); workerInstance.postMessage(param);
workerInstance.onmessage = (e: MessageEvents): void => { workerInstance.onmessage = (e: MessageEvents): void => {
console.log("baoyihu after postMessage :", JSON.stringify(e.data)); console.log("baoyihu after postMessage :", JSON.stringify(e.data));
// @ts-ignore
let workData: WorkData = e.data; let workData: WorkData = e.data;
if (workData.isComplete) { if (workData.isComplete) {
router.pushUrl({ router.pushUrl({
@ -369,19 +369,24 @@ struct Index {
async onPageShow() { async onPageShow() {
console.log('ttttt', 1111) console.log('ttttt', 1111)
this.userAuth(); this.userAuth();
let resourceManager = this.context.resourceManager;
this.vocObj = new voiceService(async (status, val, next) => { this.vocObj = new voiceService(async (status, val, next) => {
}); });
console.log('globalThis.singlePlay', globalThis.singlePlay) console.log('globalThis.singlePlay', globalThis.singlePlay)
if (globalThis.singlePlay == undefined || globalThis.singlePlay == null) { if (globalThis.singlePlay == undefined || globalThis.singlePlay == null) {
this.context.resourceManager.getRawFileContent("welcome.wav").then(value => {
console.log('tttttttt') console.log('tttttttt')
setTimeout(()=>{
this.vocObj.playAudio({ this.vocObj.playAudio({
type: 1, type: 1,
name: 'welcome.wav' name: 'welcome.wav'
}) })
},500) // let rawFile = value;
}).catch(error => {
console.log("getRawFileContent promise error is " + error);
});
globalThis.singlePlay = false globalThis.singlePlay = false
} }
this.isSingle = globalThis.singlePlay this.isSingle = globalThis.singlePlay
@ -425,6 +430,7 @@ struct Index {
} }
async initParams() { async initParams() {
console.log('kkkkmmm')
// deleteAllFIleLog(GlobalConfig.comoonfileWriteAddress + '/PLC/') // deleteAllFIleLog(GlobalConfig.comoonfileWriteAddress + '/PLC/')
//设置plc udp 同步requesthost //设置plc udp 同步requesthost
await getUDP(this.context, false) await getUDP(this.context, false)
@ -451,17 +457,9 @@ struct Index {
if (this.num >= 3) { if (this.num >= 3) {
this.heartMsg() this.heartMsg()
} }
// const data=AppStorage.Get('errorMsg');
// console.log('1123',data,globalThis.type,globalThis.dialogOpen)
// if(data==1){
// if(globalThis.type=='3'&&!globalThis.dialogOpen){
// globalThis.dialogOpen=true
// this.errorDialog.open()
// }else if(globalThis.type=='1'){
// this.errorDialog.open()
// }
// }
}, 1000) }, 1000)
delHilog()
getUserAlbumItemByDisplayName('')
//下载模型 //下载模型
// await this.getModel() // await this.getModel()
// const arr = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00] // const arr = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00]

View File

@ -1450,7 +1450,7 @@ export default class Judge {
const msgStr = strArr[num]; const msgStr = strArr[num];
if(msgStr == ''){ if(msgStr == ''){
console.info(judgeTag, '模拟数据考试结束') console.info(judgeTag, '模拟数据考试结束')
globalThis.windowClass.setWindowSystemBarEnable(['navigation']) // globalThis.windowClass.setWindowSystemBarEnable(['navigation'])
clearInterval(judgeTimer) clearInterval(judgeTimer)
this.checkExamIsEnd(true) this.checkExamIsEnd(true)
return return