Compare commits
	
		
			2 Commits
		
	
	
		
			c94005445d
			...
			1a6a87ebae
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					1a6a87ebae | ||
| 
						 | 
					181ca85f01 | 
@ -6,7 +6,7 @@ import { GetSyncData } from '../utils/table/Operation';
 | 
			
		||||
import { GetCurrentTime } from '../utils/Common';
 | 
			
		||||
import FileUtils from '../utils/FileUtils';
 | 
			
		||||
 | 
			
		||||
let baseHost: string = AppStorage.get('host');
 | 
			
		||||
let baseHost: string = AppStorage.get<string>('host');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// 下载模型
 | 
			
		||||
@ -27,11 +27,11 @@ interface WR {
 | 
			
		||||
 | 
			
		||||
// 通用监管接口
 | 
			
		||||
export async function writeObjectOut(params: RegulatoryInterfaceParams, filePath?: string): Promise<WR> {
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return { code: 1 }
 | 
			
		||||
  }
 | 
			
		||||
  let JGHOST: string = AppStorage.get("JGHOST")
 | 
			
		||||
  let JGHOST: string = AppStorage.get<string>("JGHOST")
 | 
			
		||||
  //获取监管接口地址路径
 | 
			
		||||
  if (!JGHOST) {
 | 
			
		||||
    const syssetParams: MASYSSETTableType[] = await GetSyncData<MASYSSETTableType>("MA_SYSSET");
 | 
			
		||||
@ -49,7 +49,7 @@ export async function writeObjectOut(params: RegulatoryInterfaceParams, filePath
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
  // const { xtlb, jkxlh, jkid, drvexam } = params;
 | 
			
		||||
  const isJGNew: boolean = AppStorage.get('isJGNew')
 | 
			
		||||
  const isJGNew: boolean = AppStorage.get<boolean>('isJGNew')
 | 
			
		||||
  //新监管调用
 | 
			
		||||
  if (isJGNew) {
 | 
			
		||||
    return await writeObjectOutNew(params, filePath)
 | 
			
		||||
@ -73,7 +73,7 @@ export async function writeObjectOut(params: RegulatoryInterfaceParams, filePath
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //对象转换成xml
 | 
			
		||||
  JGHOST = AppStorage.get("JGHOST")
 | 
			
		||||
  JGHOST = AppStorage.get<string>("JGHOST")
 | 
			
		||||
  const temp = await request<object>({
 | 
			
		||||
    host: JGHOST,
 | 
			
		||||
    url: '/dems_ws/services/TmriOutAccess?wsdl',
 | 
			
		||||
@ -132,7 +132,7 @@ interface UploadExamProgressDataParams {
 | 
			
		||||
// 过程文件上传
 | 
			
		||||
export async function uploadExamProgressData(params: UploadExamProgressDataParams) {
 | 
			
		||||
  // const singlePlay = globalThis.singlePlay
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
@ -169,7 +169,7 @@ interface UploadExamProgressDataParams2 {
 | 
			
		||||
 | 
			
		||||
export async function uploadExamProgressData2(params: UploadExamProgressDataParams2) {
 | 
			
		||||
  // const singlePlay = globalThis.singlePlay
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
@ -203,7 +203,7 @@ interface UploadExamMileage {
 | 
			
		||||
// 上传考试里程
 | 
			
		||||
export async function uploadExamMileage(params: UploadExamMileage) {
 | 
			
		||||
  // const singlePlay = globalThis.singlePlay
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return
 | 
			
		||||
@ -230,7 +230,7 @@ export async function uploadExamMileage(params: UploadExamMileage) {
 | 
			
		||||
// 上传考试成绩
 | 
			
		||||
export async function uploadExamGrade(params: ESObject) {
 | 
			
		||||
  // const singlePlay = globalThis.singlePlay
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -30,6 +30,7 @@ import { GlobalConfig } from '../../config/index';
 | 
			
		||||
import prompt from '@ohos.promptAction';
 | 
			
		||||
import DB, { ColumnType } from '../database/DbSql';
 | 
			
		||||
import FileUtils from '../../utils/FileUtils';
 | 
			
		||||
import { TimeSynchronizationRspBody } from '../../model';
 | 
			
		||||
 | 
			
		||||
//读表
 | 
			
		||||
//参数平台
 | 
			
		||||
@ -291,7 +292,7 @@ export async function delSyncTable(tableName, context?) {
 | 
			
		||||
//获取车模、场地模型
 | 
			
		||||
export async function getEsCarModel(context) {
 | 
			
		||||
  const date = new Date()
 | 
			
		||||
  const timeInfo = AppStorage.get('timeInfo')
 | 
			
		||||
  const timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')
 | 
			
		||||
  if (!timeInfo?.paraKdid) {
 | 
			
		||||
    prompt.showToast({
 | 
			
		||||
      message: 'paraKdid获取失败',
 | 
			
		||||
@ -308,7 +309,7 @@ export async function getEsCarModel(context) {
 | 
			
		||||
      "paraKdid": timeInfo.paraKdid, //参数平台kdid
 | 
			
		||||
      "examinationRoomId": timeInfo.kdid, //考试平台kdid
 | 
			
		||||
      // "carMac":"MAC-HCPAD-210",
 | 
			
		||||
      "carMac": AppStorage.get('deviceNo')
 | 
			
		||||
      "carMac": AppStorage.get<string>('deviceNo')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  const venueStr = {
 | 
			
		||||
@ -320,7 +321,7 @@ export async function getEsCarModel(context) {
 | 
			
		||||
      "paraKdid": timeInfo.paraKdid, //参数平台kdid
 | 
			
		||||
      "examinationRoomId": timeInfo.kdid, //考试平台kdid
 | 
			
		||||
      // "carMac":"MAC-HCPAD-210",
 | 
			
		||||
      "carMac": AppStorage.get('deviceNo')
 | 
			
		||||
      "carMac": AppStorage.get<string>('deviceNo')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -137,7 +137,7 @@ export async function getUDP2(context, errorFlag?) {
 | 
			
		||||
            globalThis.udpEvent.sendKfContent(val.body[0])
 | 
			
		||||
          } else if (val.id == '46') {
 | 
			
		||||
            let tmpList = []
 | 
			
		||||
            const str = AppStorage.get('lsh')
 | 
			
		||||
            const str = AppStorage.get<string>('lsh')
 | 
			
		||||
            for (let i = 0; i < str.length; i++) {
 | 
			
		||||
              tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0])
 | 
			
		||||
            }
 | 
			
		||||
@ -188,7 +188,7 @@ export async function setJudgeUdp() {
 | 
			
		||||
  const fileUtil = new FileUtil(context)
 | 
			
		||||
  const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
 | 
			
		||||
  const config = JSON.parse(data)
 | 
			
		||||
  const carInfo = AppStorage.get('carInfo')
 | 
			
		||||
  const carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
  //
 | 
			
		||||
  // const config = await getSyncData('IpConfigTable');
 | 
			
		||||
  let udpIndex = 0;
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@ import systemTime from '@ohos.systemDateTime';
 | 
			
		||||
import { testKm2Items, testKm3Items } from '../../pages/judgeSDK/dataTest/index';
 | 
			
		||||
import { judgeConfig } from '../../pages/judgeSDK/utils/judgeConfig';
 | 
			
		||||
import { setJudgeUdp, setTopLineUdp } from './GlobalUdp';
 | 
			
		||||
import { examCalcGpsDistance } from '../../pages/judgeSDK/api'
 | 
			
		||||
import { examCalcGpsDistance } from '../../pages/judgeSDK/api';
 | 
			
		||||
 | 
			
		||||
export const initJudgeUdp = async () => {
 | 
			
		||||
  AppStorage.setOrCreate('serialIndex', 0)
 | 
			
		||||
@ -51,7 +51,7 @@ export const initJudgeUdp = async () => {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const getMessageHeartbeat = async (msg) => {
 | 
			
		||||
  const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
  const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
  const { examSubject, plateNo } = carInfo;
 | 
			
		||||
  const ksyh = '0000000000000'
 | 
			
		||||
  const { fourInOneScreen:{ gpsDigit } } = judgeConfig
 | 
			
		||||
 | 
			
		||||
@ -44,10 +44,10 @@ export default class EntryAbility extends UIAbility {
 | 
			
		||||
 | 
			
		||||
    AppStorage.setOrCreate<CarInfoType>('carInfo', {})
 | 
			
		||||
    AppStorage.setOrCreate<ExaminerInfoType>('examinerInfo', {})
 | 
			
		||||
    AppStorage.setOrCreate('lsh', '0000000000000')
 | 
			
		||||
    AppStorage.setOrCreate('statue', 1) //考试状态
 | 
			
		||||
    AppStorage.setOrCreate('signNum', 0) //心跳指令编号
 | 
			
		||||
    AppStorage.setOrCreate('deviceNo', 0) //设备号
 | 
			
		||||
    AppStorage.setOrCreate<string>('lsh', '0000000000000')
 | 
			
		||||
    AppStorage.setOrCreate<string>('statue', "1") //考试状态
 | 
			
		||||
    AppStorage.setOrCreate<number>('signNum', 0) //心跳指令编号
 | 
			
		||||
    AppStorage.setOrCreate<string>('deviceNo', "") //设备号
 | 
			
		||||
    AppStorage.setOrCreate<BaseInfoType>('baseInfo', {
 | 
			
		||||
      hasAuth: false,
 | 
			
		||||
      version: GlobalConfig.version.jn.km3[0],
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
import { ColumnInfo, ColumnType } from '../common/database/DbSql'
 | 
			
		||||
import common from '@ohos.app.ability.common';
 | 
			
		||||
import { ColumnInfo, ColumnType } from '../utils/DbSql';
 | 
			
		||||
 | 
			
		||||
export const MA_SYS_SET_COLUMN: ColumnInfo[] = [
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
import { DrvexamType } from ".";
 | 
			
		||||
import { DrvexamType } from '.';
 | 
			
		||||
 | 
			
		||||
// -----new-----
 | 
			
		||||
export interface ApiResponseType {
 | 
			
		||||
@ -28,6 +28,8 @@ interface TimeSynchronizationRsp {
 | 
			
		||||
export interface TimeSynchronizationRspBody {
 | 
			
		||||
  mode?: string;
 | 
			
		||||
  url?: string
 | 
			
		||||
  paraKdid?: string
 | 
			
		||||
  kdid?: string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface UploadExamCarCheckResultRsp {
 | 
			
		||||
 | 
			
		||||
@ -4,9 +4,8 @@ import TopLogo from './compontents/TopLogo';
 | 
			
		||||
import testNapi from '@ohos.hiserialsdk';
 | 
			
		||||
import { DwMapData, PassData, RealNumData, StackValueData, WarnFlagData, WarnFlagTipData } from '../mock';
 | 
			
		||||
import { BaseInfoType, RouteParamsType } from '../model/Common';
 | 
			
		||||
import { CarCheckDataType, CarConfigurationParams, CarInfoType } from '../model';
 | 
			
		||||
import { CarCheckDataType, CarConfigurationParams, CarInfoType, SpzdType } from '../model';
 | 
			
		||||
import { BusinessError } from '@ohos.base';
 | 
			
		||||
import { SpzdType } from '../model';
 | 
			
		||||
import { voiceService } from '../utils/Voice';
 | 
			
		||||
import dayTs from '../utils/Date';
 | 
			
		||||
 | 
			
		||||
@ -46,7 +45,7 @@ struct Index {
 | 
			
		||||
  // private AccountTable = new AccountTable(()=>{},CommonConstants);
 | 
			
		||||
  aboutToAppear() {
 | 
			
		||||
    const that = this
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    this.vocObj = new voiceService(async (status: string, val: string) => {
 | 
			
		||||
      if (!that.breakFlag) {
 | 
			
		||||
        return
 | 
			
		||||
@ -121,7 +120,7 @@ struct Index {
 | 
			
		||||
 | 
			
		||||
  //
 | 
			
		||||
  carConfigurationInfoFn() {
 | 
			
		||||
    if (AppStorage.get('singlePlay')) {
 | 
			
		||||
    if (AppStorage.get<boolean>('singlePlay')) {
 | 
			
		||||
      const str =
 | 
			
		||||
        "1:5;2:5;3:5;4:5;5:5;6:5;7:5;8:5;9:5;10:5;11:5;12:5;13:5;14:5;15:5;16:5;17:5;18:5;19:5;20:5;21:5;22:2;23:5;24:5"
 | 
			
		||||
      const data = str.split(';')
 | 
			
		||||
@ -137,7 +136,7 @@ struct Index {
 | 
			
		||||
      this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    const baseInfo = AppStorage.get('baseInfo') as BaseInfoType
 | 
			
		||||
    const baseInfo = AppStorage.get<BaseInfoType>("baseInfo")
 | 
			
		||||
    //模拟真实数据
 | 
			
		||||
    const param: CarConfigurationParams = {
 | 
			
		||||
      body: {
 | 
			
		||||
@ -277,7 +276,7 @@ struct Index {
 | 
			
		||||
          type: 1,
 | 
			
		||||
          name: flag ? 'zjwtg.wav' : 'zjtg.wav'
 | 
			
		||||
        })
 | 
			
		||||
        if (AppStorage.get('singlePlay')) {
 | 
			
		||||
        if (AppStorage.get<boolean>('singlePlay')) {
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        let date = new Date();
 | 
			
		||||
 | 
			
		||||
@ -94,7 +94,7 @@ struct Index {
 | 
			
		||||
                    if (this.limit) {
 | 
			
		||||
                      return
 | 
			
		||||
                    }
 | 
			
		||||
                    const carInfo: CarInfoType = AppStorage.get('carInfo')
 | 
			
		||||
                    const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
                    const param: UserLoginType = {
 | 
			
		||||
                      carId: carInfo.carId as string,
 | 
			
		||||
                      examinationRoomId: carInfo.examinationRoomId as string,
 | 
			
		||||
@ -130,7 +130,7 @@ struct Index {
 | 
			
		||||
                        console.log('res11', JSON.stringify(res))
 | 
			
		||||
                        const examinerLoginInfo: ExaminerLoginInfo = res.examinerLoginRsp.body
 | 
			
		||||
                        examinerLoginInfo.username = this.inputTextArr[0]
 | 
			
		||||
                        AppStorage.setOrCreate('examinerLoginInfo', examinerLoginInfo)
 | 
			
		||||
                        AppStorage.setOrCreate<ExaminerLoginInfo>('examinerLoginInfo', examinerLoginInfo)
 | 
			
		||||
                      }).catch((err: BusinessError) => {
 | 
			
		||||
                        console.log('jiangsong12', JSON.stringify(err))
 | 
			
		||||
                        this.errorDialog.close()
 | 
			
		||||
 | 
			
		||||
@ -11,8 +11,12 @@ import errorMsgDialog from './compontents/errorMsgDialog';
 | 
			
		||||
import imageBtn from './compontents/imageBtn';
 | 
			
		||||
import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
 | 
			
		||||
import { BaseInfoType } from '../model/Common';
 | 
			
		||||
import { CarInfoType } from '../model';
 | 
			
		||||
import { InitializeTheCentralTableType, MASYSSETTableType, TimeInfo } from '../model';
 | 
			
		||||
import {
 | 
			
		||||
  CarInfoType,
 | 
			
		||||
  InitializeTheCentralTableType,
 | 
			
		||||
  MASYSSETTableType,
 | 
			
		||||
  TimeSynchronizationRspBody
 | 
			
		||||
} from '../model';
 | 
			
		||||
import { GetCarInfo, GetDeviceInfo, SetCurrentTime, SetSerialNumber, UseAuth } from './Index/utils';
 | 
			
		||||
import { GetSyncData, InitializeTheCentralTable } from '../utils/table/Operation';
 | 
			
		||||
import { BusinessError } from '@ohos.base';
 | 
			
		||||
@ -56,7 +60,7 @@ struct Index {
 | 
			
		||||
  )
 | 
			
		||||
  private interval = -1;
 | 
			
		||||
  private avPlayer: VoiceAnnounce
 | 
			
		||||
  private timeInfo: TimeInfo
 | 
			
		||||
  private timeInfo: TimeSynchronizationRspBody
 | 
			
		||||
  private context = getContext(this) as common.UIAbilityContext;
 | 
			
		||||
 | 
			
		||||
  @Styles
 | 
			
		||||
@ -353,7 +357,7 @@ struct Index {
 | 
			
		||||
 | 
			
		||||
  async aboutToAppear() {
 | 
			
		||||
    this.avPlayer = new VoiceAnnounce();
 | 
			
		||||
    this.ratio = AppStorage.get('ratio')
 | 
			
		||||
    this.ratio = AppStorage.get<number>('ratio')
 | 
			
		||||
    this.initParamFlag = false
 | 
			
		||||
    this.delLoading = false
 | 
			
		||||
    this.dialogVisiable = false
 | 
			
		||||
@ -391,7 +395,7 @@ struct Index {
 | 
			
		||||
      kdid: this.timeInfo?.kdid || this.timeInfo?.paraKdid,
 | 
			
		||||
      mode: this.timeInfo?.mode,
 | 
			
		||||
      context: this.context,
 | 
			
		||||
      host: AppStorage.get('host'),
 | 
			
		||||
      host: AppStorage.get<string>('host'),
 | 
			
		||||
      centerHost: this.timeInfo?.url,
 | 
			
		||||
      singlePlay: this.singlePlay
 | 
			
		||||
    }
 | 
			
		||||
@ -427,13 +431,13 @@ struct Index {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async heartMsg() {
 | 
			
		||||
    const signNum = AppStorage.get('signNum') as number
 | 
			
		||||
    const statue = AppStorage.get('statue') as number
 | 
			
		||||
    const lsh = AppStorage.get('lsh') as String
 | 
			
		||||
    const signNum = AppStorage.get<number>('signNum')
 | 
			
		||||
    const statue = AppStorage.get<string>('statue')
 | 
			
		||||
    const lsh = AppStorage.get<string>('lsh')
 | 
			
		||||
    const arr = [signNum || 0, statue || 1]
 | 
			
		||||
    let tmpList: number[] = [];
 | 
			
		||||
    tmpList.push(NumberToByteArray(arr[0], 1 * 8)[0])
 | 
			
		||||
    tmpList.push(NumberToByteArray(arr[1], 1 * 8)[0])
 | 
			
		||||
    tmpList.push(NumberToByteArray(Number(arr[0]), 1 * 8)[0])
 | 
			
		||||
    tmpList.push(NumberToByteArray(Number(arr[1]), 1 * 8)[0])
 | 
			
		||||
    const str = lsh || '0000000000000'
 | 
			
		||||
    for (let i = 0; i < str.length; i++) {
 | 
			
		||||
      tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0])
 | 
			
		||||
@ -453,8 +457,8 @@ struct Index {
 | 
			
		||||
 | 
			
		||||
  async onPageShow() {
 | 
			
		||||
    console.log('ttttt', 1111)
 | 
			
		||||
    this.singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    this.baseInfo = AppStorage.get('baseInfo') as BaseInfoType
 | 
			
		||||
    this.singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')
 | 
			
		||||
    // await this.userAuth();
 | 
			
		||||
    UseAuth(this.context).then(() => {
 | 
			
		||||
      this.initParams()
 | 
			
		||||
@ -504,12 +508,12 @@ struct Index {
 | 
			
		||||
    await GetCarInfo()
 | 
			
		||||
    await getUDP2(this.context, false)
 | 
			
		||||
    getTCP()
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    this.deviceId = this.carInfo.carNo
 | 
			
		||||
    // await setCurrentTime();
 | 
			
		||||
    await SetCurrentTime()
 | 
			
		||||
    this.timeInfo = AppStorage.get('timeInfo')
 | 
			
		||||
    const distanceClass = AppStorage.get('distanceClass') as boolean
 | 
			
		||||
    this.timeInfo = AppStorage.get<TimeSynchronizationRspBody>('timeInfo')
 | 
			
		||||
    const distanceClass = AppStorage.get<boolean>('distanceClass')
 | 
			
		||||
    if (!distanceClass) {
 | 
			
		||||
      const distanceClass = new GetDistance(this.context)
 | 
			
		||||
      await distanceClass.initFolder()
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,10 @@ import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
 | 
			
		||||
import { BusinessError } from '@ohos.base';
 | 
			
		||||
import systemTime from '@ohos.systemTime';
 | 
			
		||||
import { VideoConfigData } from '../../mock';
 | 
			
		||||
ontext: common.UIAbilityContext): Promise<string> {
 | 
			
		||||
import FileUtils from '../../utils/FileUtils';
 | 
			
		||||
 | 
			
		||||
//获取设备信息
 | 
			
		||||
export async function GetDeviceInfo(context: common.UIAbilityContext): Promise<string> {
 | 
			
		||||
  return new Promise(async (resolve, reject) => {
 | 
			
		||||
    const fileUtil = new FileUtils(context)
 | 
			
		||||
    const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/deviceNo.txt');
 | 
			
		||||
@ -40,7 +43,7 @@ export async function GetCarInfo() {
 | 
			
		||||
  let date = new Date();
 | 
			
		||||
  let params: ObtainCarExamInfoParams = {
 | 
			
		||||
    time: dayTs(date).format("YYYY-MM-DD HH:mm:ss"),
 | 
			
		||||
    deviceNo: AppStorage.get('deviceNo')
 | 
			
		||||
    deviceNo: AppStorage.get<string>('deviceNo')
 | 
			
		||||
  };
 | 
			
		||||
  let res: ApiResponseType = await obtainCarExamInfo(params)
 | 
			
		||||
  if (res.obtainCarExamInfoRsp.body) {
 | 
			
		||||
@ -87,7 +90,7 @@ export async function SetCurrentTime(): Promise<void> {
 | 
			
		||||
    judgeVersion: baseInfo.judgeVersion
 | 
			
		||||
  }
 | 
			
		||||
  let res: ApiResponseType = await timeSynchronization(params);
 | 
			
		||||
  AppStorage.setOrCreate('timeInfo', res.timeSynchronizationRsp.body)
 | 
			
		||||
  AppStorage.setOrCreate<ApiResponseType.timeSynchronizationRsp.body>('timeInfo', res.timeSynchronizationRsp.body)
 | 
			
		||||
  let currentTime = res.timeSynchronizationRsp.head.time;
 | 
			
		||||
  let times = new Date(currentTime).getTime();
 | 
			
		||||
  try {
 | 
			
		||||
 | 
			
		||||
@ -159,8 +159,8 @@ struct Index {
 | 
			
		||||
 | 
			
		||||
  async aboutToAppear() {
 | 
			
		||||
    const time = await GetCurrentTime()
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    this.singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    this.startTime = time.split(' ')[1]
 | 
			
		||||
    this.startFullTime = await GetCurrentTime(1);
 | 
			
		||||
    // this.startHourTime = await getCurrentHourTime()
 | 
			
		||||
 | 
			
		||||
@ -220,9 +220,9 @@ struct UserInfo {
 | 
			
		||||
    this.ksksLimit = false
 | 
			
		||||
    this.currentUser = EmptyCandidateObject
 | 
			
		||||
    this.filePhoto = new FilePhoto(this.context);
 | 
			
		||||
    this.singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    this.examinerLoginInfo = AppStorage.get('examinerLoginInfo')
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    this.examinerLoginInfo = AppStorage.get<ExaminerLoginInfo>('examinerLoginInfo')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    //语音功能on
 | 
			
		||||
    // new WebRTCVoice(this.context);
 | 
			
		||||
    //初始化数据
 | 
			
		||||
@ -485,7 +485,7 @@ struct UserInfo {
 | 
			
		||||
  //考点端查询缺考指令内容消息请求
 | 
			
		||||
  getqkFn() {
 | 
			
		||||
    let tmpList: Array<number> = [];
 | 
			
		||||
    tmpList.push(NumberToByteArray(AppStorage.get('signNum'), 1 * 8)[0])
 | 
			
		||||
    tmpList.push(NumberToByteArray(AppStorage.get<number>('signNum'), 1 * 8)[0])
 | 
			
		||||
    const param: QKParamType = {
 | 
			
		||||
      id: 41,
 | 
			
		||||
      list: tmpList,
 | 
			
		||||
@ -1275,7 +1275,7 @@ struct UserInfo {
 | 
			
		||||
          getqkFlag: $getqkFlag,
 | 
			
		||||
          faceCatchImg: $faceCatchImg,
 | 
			
		||||
          showFaceCompare: $showFaceCompare,
 | 
			
		||||
          lsh: AppStorage.get('lsh'),
 | 
			
		||||
          lsh: AppStorage.get<string>('lsh'),
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      if (this.qkFlag) {
 | 
			
		||||
 | 
			
		||||
@ -174,7 +174,7 @@ export default struct FaceCompare {
 | 
			
		||||
 | 
			
		||||
  async aboutToAppear() {
 | 
			
		||||
    const fileUtil = new FileUtils(this.context)
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    this.fileUtil = fileUtil
 | 
			
		||||
    this.getVideoConfig()
 | 
			
		||||
  }
 | 
			
		||||
@ -187,7 +187,7 @@ export default struct FaceCompare {
 | 
			
		||||
 | 
			
		||||
  getqkFn() {
 | 
			
		||||
    let tmpList: number[] = [];
 | 
			
		||||
    tmpList.push(NumberToByteArray(AppStorage.get('signNum'), 1 * 8)[0])
 | 
			
		||||
    tmpList.push(NumberToByteArray(AppStorage.get <number>('signNum'), 1 * 8)[0])
 | 
			
		||||
    const param: ParamType = {
 | 
			
		||||
      id: 41,
 | 
			
		||||
      list: tmpList,
 | 
			
		||||
 | 
			
		||||
@ -81,8 +81,8 @@ export default struct DeductedPopup {
 | 
			
		||||
  private avPlayer: VoiceAnnounce
 | 
			
		||||
 | 
			
		||||
  async aboutToAppear() {
 | 
			
		||||
    this.carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    this.singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    this.carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    this.singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    this.avPlayer = new VoiceAnnounce();
 | 
			
		||||
    this.judgeTask = new JudgeTask();
 | 
			
		||||
    const mediaTest = new FilePhoto(this.context);
 | 
			
		||||
 | 
			
		||||
@ -48,6 +48,7 @@ import { Array2Byte, convertGpsCoord2, deepClone, fillZero, string2Bytes } from
 | 
			
		||||
import { GetCurrentTime, StringToASCII } from '../../utils/Common';
 | 
			
		||||
import UsbService from '../../utils/USB';
 | 
			
		||||
import FileUtils from '../../utils/FileUtils';
 | 
			
		||||
import { BaseInfoType, CarInfoType } from '../../model';
 | 
			
		||||
 | 
			
		||||
const judgeTag = 'SURENJUN_JUDGE'
 | 
			
		||||
 | 
			
		||||
@ -68,7 +69,7 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  //上传无锡所过程数据
 | 
			
		||||
  uploadProgressData = async () => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    const { judgeUI, fileUtil, fileLog } = this;
 | 
			
		||||
    const { idCard, startFullTime } = judgeUI
 | 
			
		||||
    const { carId, examinationRoomId } = carInfo
 | 
			
		||||
@ -119,7 +120,7 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  // 处理特殊参数配置
 | 
			
		||||
  handleSEP = async (code: number) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo')
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
    const {
 | 
			
		||||
      judgeUI:{
 | 
			
		||||
        judgeConfigObj
 | 
			
		||||
@ -239,7 +240,7 @@ export default class Judge {
 | 
			
		||||
  private filePhoto: FilePhoto
 | 
			
		||||
  // 过程照片拍照
 | 
			
		||||
  getPhoto = async (empty?: boolean) => {
 | 
			
		||||
    const singlePlay: boolean = AppStorage.get('singlePlay')
 | 
			
		||||
    const singlePlay: boolean = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    //单机模式返回空照片
 | 
			
		||||
    if (singlePlay) {
 | 
			
		||||
      return ''
 | 
			
		||||
@ -466,7 +467,7 @@ export default class Judge {
 | 
			
		||||
    if (!this.isExamEnd) {
 | 
			
		||||
      await examJudgeRealExam(plcData)
 | 
			
		||||
    }
 | 
			
		||||
    let udpIndex = AppStorage.get('udpIndex') as number;
 | 
			
		||||
    let udpIndex = AppStorage.get<number>('udpIndex');
 | 
			
		||||
    let [prevJd, preWd] = [0, 0]
 | 
			
		||||
    if (udpIndex % 5 === 0 && !this.isUdpEnd) {
 | 
			
		||||
      // TODO UPD缺失
 | 
			
		||||
@ -521,7 +522,7 @@ export default class Judge {
 | 
			
		||||
  private isJudgeDisConnect: boolean;
 | 
			
		||||
  // 项目开始接口同步
 | 
			
		||||
  beginProject = async (ksxm) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo } = carInfo;
 | 
			
		||||
    const { judgeUI, fileLog, getSbbm, xmxh, filePath } = this;
 | 
			
		||||
    const { lsh, idCard, serialNumber, projectsObj, ksdd, kslx, xldm } = judgeUI
 | 
			
		||||
@ -557,7 +558,7 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  // 项目结束接口同步
 | 
			
		||||
  endProject = async (ksxm) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo, carNo } = carInfo;
 | 
			
		||||
    const { judgeUI, fileLog, getSbxh, xmxh, getSbbm, filePath } = this;
 | 
			
		||||
    const { lsh, idCard, serialNumber, projectsObj, cdsbInfoObj, ksdd, kslx, xldm, } = judgeUI
 | 
			
		||||
@ -623,7 +624,7 @@ export default class Judge {
 | 
			
		||||
    const time = await GetCurrentTime();
 | 
			
		||||
    const { judgeUI, plcData, getPhoto, fileLog, filePath } = this;
 | 
			
		||||
    const photoBase64 = await getPhoto();
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo, carNo } = carInfo;
 | 
			
		||||
    const { lsh, idCard, serialNumber, projectsObj, ksdd, judgeConfigObj } = judgeUI;
 | 
			
		||||
    const { sensor, gps } = plcData
 | 
			
		||||
@ -703,7 +704,7 @@ export default class Judge {
 | 
			
		||||
  // 获取评判初始化数据
 | 
			
		||||
  getJudgeInitData = async () => {
 | 
			
		||||
    const { getModelData, getKm3JudgeInitConfig } = this
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo, carId } = carInfo;
 | 
			
		||||
    const judgeUI = this.judgeUI
 | 
			
		||||
    const { projectsObj, itemInfoObj, markRuleListObj, carType, carName, systemparmArr, carinfoArr } = judgeUI
 | 
			
		||||
@ -723,7 +724,7 @@ export default class Judge {
 | 
			
		||||
    const sdkver = await examJudgeVersion();
 | 
			
		||||
    const initInfo = {
 | 
			
		||||
      sdkver,
 | 
			
		||||
      appver: AppStorage.get('baseInfo').version,
 | 
			
		||||
      appver: AppStorage.get<BaseInfoType>('baseInfo').version,
 | 
			
		||||
      kskm: examSubject * 1,
 | 
			
		||||
      kchp: plateNo,
 | 
			
		||||
      kchm: carId * 1,
 | 
			
		||||
@ -1104,7 +1105,7 @@ export default class Judge {
 | 
			
		||||
      case 5:
 | 
			
		||||
        console.info(judgeTag, '考试结束')
 | 
			
		||||
        //关闭录像
 | 
			
		||||
        const singlePlay = AppStorage.get('singlePlay') as boolean
 | 
			
		||||
        const singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
        if (!singlePlay) {
 | 
			
		||||
          await endRecordVideo(this.videoData)
 | 
			
		||||
        }
 | 
			
		||||
@ -1131,7 +1132,7 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  // 考试扣分
 | 
			
		||||
  pointsDedute = async (ksxm, kf) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo, carNo } = carInfo;
 | 
			
		||||
    const { judgeUI, getProjectInfo, fileLog, xmmcSingleCode, xmmcEndCode, filePath } = this;
 | 
			
		||||
    const { lsh, idCard, serialNumber, ksdd, projectsObj } = judgeUI
 | 
			
		||||
@ -1212,7 +1213,7 @@ export default class Judge {
 | 
			
		||||
    const { judgeConfigObj, examSubject, isAllProjectsEnd, totalScore, passingScore } = judgeUI;
 | 
			
		||||
    //计算考试分数
 | 
			
		||||
    // this.judgeUI.totalScore = isAllProjectsEnd ? totalScore : 0;
 | 
			
		||||
    const singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    const singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    const param302 = judgeConfigObj['302'];
 | 
			
		||||
    // globalThis.windowClass.setWindowSystemBarEnable(['navigation'])
 | 
			
		||||
 | 
			
		||||
@ -1261,8 +1262,8 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  // 考试结束
 | 
			
		||||
  public endExam = async (isManual?: Boolean) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    const { examSubject, plateNo } = carInfo;
 | 
			
		||||
    const {
 | 
			
		||||
      judgeUI,
 | 
			
		||||
@ -1447,7 +1448,7 @@ export default class Judge {
 | 
			
		||||
  }
 | 
			
		||||
  // 消息心跳发送
 | 
			
		||||
  getMessageHeartbeat = async (isEnd?: Boolean) => {
 | 
			
		||||
    const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
    const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
    const { examSubject, plateNo, ksyh } = carInfo;
 | 
			
		||||
    const {
 | 
			
		||||
      judgeUI,
 | 
			
		||||
@ -1464,7 +1465,7 @@ export default class Judge {
 | 
			
		||||
      getSbxh,
 | 
			
		||||
      fileLog,
 | 
			
		||||
    } = this;
 | 
			
		||||
    const singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
    const singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
    const { lsh, startHourTime, totalScore, examTime, judgeConfigObj } = judgeUI;
 | 
			
		||||
    const {
 | 
			
		||||
      fourInOneScreen:{
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ import { testMarkRules, testRealExam } from '../dataTest/index';
 | 
			
		||||
 | 
			
		||||
import systemTime from '@ohos.systemDateTime';
 | 
			
		||||
import { Array2Byte } from './Common';
 | 
			
		||||
import { CarInfoType } from '../../../model';
 | 
			
		||||
 | 
			
		||||
//获取本地扣分项
 | 
			
		||||
export const getTestMarkRules = () => {
 | 
			
		||||
@ -110,7 +111,7 @@ export function getKmProjectVoice(
 | 
			
		||||
  lane,
 | 
			
		||||
  xmxh
 | 
			
		||||
) {
 | 
			
		||||
  const carInfo = AppStorage.get('carInfo');
 | 
			
		||||
  const carInfo = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
  const { examSubject } = carInfo;
 | 
			
		||||
  const param506Str = judgeConfig['506']?.split(',') || [];
 | 
			
		||||
  const param512Str = judgeConfig['512']?.split(',') || [];
 | 
			
		||||
@ -206,7 +207,7 @@ export function promptWxCode(
 | 
			
		||||
) {
 | 
			
		||||
  let toast = '';
 | 
			
		||||
 | 
			
		||||
  const singlePlay = AppStorage.get('singlePlay')
 | 
			
		||||
  const singlePlay = AppStorage.get<boolean>('singlePlay')
 | 
			
		||||
  if (singlePlay) {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ export default class JudgeImg {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async init() {
 | 
			
		||||
    const isJudgeInitBool = AppStorage.get('isJudgeInitBool');
 | 
			
		||||
    const isJudgeInitBool = AppStorage.get<boolean>('isJudgeInitBool');
 | 
			
		||||
    const { judgeUI } = this;
 | 
			
		||||
 | 
			
		||||
    //TODO 临时处理
 | 
			
		||||
 | 
			
		||||
@ -1,14 +1,12 @@
 | 
			
		||||
import media from '@ohos.multimedia.media';
 | 
			
		||||
import webSocket from '@ohos.net.webSocket';
 | 
			
		||||
import camera from '@ohos.multimedia.camera';
 | 
			
		||||
import common from '@ohos.app.ability.common';
 | 
			
		||||
import ethernet from '@ohos.net.ethernet';
 | 
			
		||||
import prompt from '@ohos.prompt'
 | 
			
		||||
import prompt from '@ohos.prompt';
 | 
			
		||||
 | 
			
		||||
const TAG_RTC: string = '[SURENJUN_RTC]';
 | 
			
		||||
 | 
			
		||||
const carNo = AppStorage.get('carInfo').carNo;
 | 
			
		||||
const carNo = AppStorage.get<CarInfoType>('carInfo').carNo;
 | 
			
		||||
const WS_SERVER = `ws://192.168.36.9:5000/ws/KM2-C${carNo}/2`;
 | 
			
		||||
 | 
			
		||||
// const WS_SERVER = 'wss://webrtc.nirbheek.in:8443';
 | 
			
		||||
// const WS_SERVER = 'wss://webrtc.youzhi.life:8443';
 | 
			
		||||
export enum WebRtcState {
 | 
			
		||||
@ -25,18 +23,90 @@ export enum WebRtcState {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default class WebRtcModel {
 | 
			
		||||
  private ourId : string = '';
 | 
			
		||||
  public isConnected: boolean = false;
 | 
			
		||||
  sendIceCandidate = async (icecandidate: any) => {
 | 
			
		||||
    const { peerId, remoteUserId } = this
 | 
			
		||||
    this.sendMessage(JSON.stringify({
 | 
			
		||||
      eventName: '__ice_candidate',
 | 
			
		||||
      data: {
 | 
			
		||||
        userID: remoteUserId,
 | 
			
		||||
        id: 'audio',
 | 
			
		||||
        label: 0,
 | 
			
		||||
        fromId: peerId,
 | 
			
		||||
        candidate: icecandidate.candidate
 | 
			
		||||
      }
 | 
			
		||||
    }));
 | 
			
		||||
  }
 | 
			
		||||
  private ourId: string = '';
 | 
			
		||||
  //TODO 待替换
 | 
			
		||||
  private peerId: string = `KM2-C${carNo}`;
 | 
			
		||||
  public isConnected: boolean = false;
 | 
			
		||||
  private remoteUserId: string = '';
 | 
			
		||||
  private roomId: string = '';
 | 
			
		||||
  // private state: number = WebRtcState.UNKNOWN;
 | 
			
		||||
 | 
			
		||||
  private roomId: string = '';
 | 
			
		||||
  private context: any = undefined;
 | 
			
		||||
  private ws : webSocket.WebSocket = undefined;
 | 
			
		||||
  private webrtc : media.WebRtc = undefined;
 | 
			
		||||
  private ws: webSocket.WebSocket = undefined;
 | 
			
		||||
  private webrtc: media.WebRtc = undefined;
 | 
			
		||||
  sendAnswer = async () => {
 | 
			
		||||
    const { peerId:fromID, remoteUserId:userID } = this;
 | 
			
		||||
    console.info(TAG_RTC, 'surenjun')
 | 
			
		||||
    try {
 | 
			
		||||
      let answer = await this.webrtc.createAnswer();
 | 
			
		||||
      console.info(TAG_RTC, 'createAnswer: ' + JSON.stringify(answer));
 | 
			
		||||
 | 
			
		||||
      this.webrtc.setLocalDescription(answer);
 | 
			
		||||
 | 
			
		||||
      this.sendMessage(JSON.stringify({
 | 
			
		||||
        eventName: '__answer',
 | 
			
		||||
        data: {
 | 
			
		||||
          userID,
 | 
			
		||||
          fromID,
 | 
			
		||||
          label: 0,
 | 
			
		||||
          id: 'audio',
 | 
			
		||||
          sdp: answer.sdp
 | 
			
		||||
        }
 | 
			
		||||
      }))
 | 
			
		||||
      this.isConnected = true;
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      console.error(TAG_RTC, 'createAnswer: ' + JSON.stringify(e));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  receiveSdp = async (sdp) => {
 | 
			
		||||
    let type = sdp.type as string;
 | 
			
		||||
    // let text = json.sdp.text as string;
 | 
			
		||||
    if (type === 'offer') {
 | 
			
		||||
      this.webrtc.setRemoteDescription(sdp);
 | 
			
		||||
      this.sendAnswer();
 | 
			
		||||
      prompt.showToast({
 | 
			
		||||
        message: '语音对讲连接完成',
 | 
			
		||||
        duration: 4000
 | 
			
		||||
      });
 | 
			
		||||
    } else if (type === 'answer') {
 | 
			
		||||
      this.webrtc.setRemoteDescription(sdp);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  private stateCallback: (state: number, message: string) => void = undefined;
 | 
			
		||||
  sendOffer = async () => {
 | 
			
		||||
    const { peerId:fromID, remoteUserId:userID } = this;
 | 
			
		||||
    try {
 | 
			
		||||
      let offer = await this.webrtc.createOffer();
 | 
			
		||||
      this.webrtc.setLocalDescription(offer);
 | 
			
		||||
      if (this.stateCallback) {
 | 
			
		||||
        this.stateCallback(WebRtcState.PEER_NEGOTIATING, '发送Offer');
 | 
			
		||||
      }
 | 
			
		||||
      this.sendMessage(JSON.stringify({
 | 
			
		||||
        eventName: '__answer',
 | 
			
		||||
        data: {
 | 
			
		||||
          userID,
 | 
			
		||||
          fromID,
 | 
			
		||||
          label: 0,
 | 
			
		||||
          id: 'audio',
 | 
			
		||||
          sdp: offer.sdp
 | 
			
		||||
        }
 | 
			
		||||
      }))
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      console.error(TAG_RTC, 'createOffer: ' + JSON.stringify(e));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  initWebSocket(ourId: string, handleStateChange: (state, message) => void) {
 | 
			
		||||
 | 
			
		||||
@ -57,30 +127,49 @@ export default class WebRtcModel {
 | 
			
		||||
      console.info(TAG_RTC, '信令服务器连接失败');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.ws.on('message', (err, value:string) => {
 | 
			
		||||
      const {acceptInvited,receiveIce,sendAnswer,receiveSdp,disconnect} = this;
 | 
			
		||||
    this.ws.on('message', (err, value: string) => {
 | 
			
		||||
      const { acceptInvited, receiveIce, sendAnswer, receiveSdp, disconnect } = this;
 | 
			
		||||
      const socketMessage = JSON.parse(value);
 | 
			
		||||
      const {eventName,data:{candidate,sdp,room,userID,inviteID:fromId,toID}} = socketMessage;
 | 
			
		||||
      const {
 | 
			
		||||
        eventName, data:{
 | 
			
		||||
          candidate,
 | 
			
		||||
          sdp,
 | 
			
		||||
          room,
 | 
			
		||||
          userID,
 | 
			
		||||
          inviteID: fromId,
 | 
			
		||||
          toID
 | 
			
		||||
        }
 | 
			
		||||
      } = socketMessage;
 | 
			
		||||
 | 
			
		||||
      console.info(TAG_RTC,'receive message =>' + eventName.split('__')[1])
 | 
			
		||||
      switch (eventName.split('__')[1]){
 | 
			
		||||
      console.info(TAG_RTC, 'receive message =>' + eventName.split('__')[1])
 | 
			
		||||
      switch (eventName.split('__')[1]) {
 | 
			
		||||
 | 
			
		||||
      //离开
 | 
			
		||||
        case 'leave':disconnect();break
 | 
			
		||||
        case 'leave':
 | 
			
		||||
          disconnect();
 | 
			
		||||
          break
 | 
			
		||||
 | 
			
		||||
      //收到对方邀请通知
 | 
			
		||||
        case 'invite':acceptInvited(fromId , room);break;
 | 
			
		||||
        case 'invite':
 | 
			
		||||
          acceptInvited(fromId, room);
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
      //对方接受通话邀请
 | 
			
		||||
        case 'new_peer':
 | 
			
		||||
 | 
			
		||||
      //添加ice证书
 | 
			
		||||
        case 'ice_candidate':receiveIce(candidate);break;
 | 
			
		||||
        case 'ice_candidate':
 | 
			
		||||
          receiveIce(candidate);
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        case 'answer':
 | 
			
		||||
      // sendAnswer()
 | 
			
		||||
 | 
			
		||||
        case 'offer':receiveSdp({type:'offer',sdp});break;
 | 
			
		||||
        case 'offer':
 | 
			
		||||
          receiveSdp({
 | 
			
		||||
            type: 'offer', sdp
 | 
			
		||||
          });
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
@ -149,7 +238,11 @@ export default class WebRtcModel {
 | 
			
		||||
    console.info(TAG_RTC, 'webrtc prepare');
 | 
			
		||||
 | 
			
		||||
    // 参数暂时无效
 | 
			
		||||
    this.webrtc.prepare({ iceServers: [ { urls: "stun://stun.l.google.com:19302" } ] });
 | 
			
		||||
    this.webrtc.prepare({
 | 
			
		||||
      iceServers: [{
 | 
			
		||||
        urls: "stun://stun.l.google.com:19302"
 | 
			
		||||
      }]
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async connect(peerId: string) {
 | 
			
		||||
@ -163,7 +256,7 @@ export default class WebRtcModel {
 | 
			
		||||
    this.sendMessage('SESSION ' + this.peerId)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public disconnect =  async ()=> {
 | 
			
		||||
  public disconnect = async () => {
 | 
			
		||||
    console.info(TAG_RTC, 'disconnect');
 | 
			
		||||
    if (this.ws) {
 | 
			
		||||
      this.webrtc.close()
 | 
			
		||||
@ -174,78 +267,17 @@ export default class WebRtcModel {
 | 
			
		||||
      });
 | 
			
		||||
      const webRtcModel = new WebRtcModel()
 | 
			
		||||
      webRtcModel.setContext(this.context);
 | 
			
		||||
      webRtcModel.initWebSocket('', ()=>{});
 | 
			
		||||
      webRtcModel.initWebSocket('', () => {
 | 
			
		||||
      });
 | 
			
		||||
      webRtcModel.initRtc();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendOffer = async ()=> {
 | 
			
		||||
    const {peerId:fromID,remoteUserId:userID} = this;
 | 
			
		||||
    try {
 | 
			
		||||
      let offer = await this.webrtc.createOffer();
 | 
			
		||||
      this.webrtc.setLocalDescription(offer);
 | 
			
		||||
      if (this.stateCallback) {
 | 
			
		||||
        this.stateCallback(WebRtcState.PEER_NEGOTIATING, '发送Offer');
 | 
			
		||||
      }
 | 
			
		||||
      this.sendMessage(JSON.stringify({
 | 
			
		||||
        eventName:'__answer',
 | 
			
		||||
        data:{
 | 
			
		||||
          userID,
 | 
			
		||||
          fromID,
 | 
			
		||||
          label:0,
 | 
			
		||||
          id:'audio',
 | 
			
		||||
          sdp:offer.sdp
 | 
			
		||||
        }
 | 
			
		||||
      }))
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      console.error( TAG_RTC, 'createOffer: ' + JSON.stringify(e));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendAnswer = async () => {
 | 
			
		||||
     const {peerId:fromID,remoteUserId:userID} = this;
 | 
			
		||||
     console.info(TAG_RTC,'surenjun')
 | 
			
		||||
      try {
 | 
			
		||||
        let answer = await this.webrtc.createAnswer();
 | 
			
		||||
        console.info(TAG_RTC, 'createAnswer: ' + JSON.stringify(answer));
 | 
			
		||||
 | 
			
		||||
        this.webrtc.setLocalDescription(answer);
 | 
			
		||||
 | 
			
		||||
        this.sendMessage(JSON.stringify({
 | 
			
		||||
          eventName:'__answer',
 | 
			
		||||
          data:{
 | 
			
		||||
            userID,
 | 
			
		||||
            fromID,
 | 
			
		||||
            label:0,
 | 
			
		||||
            id:'audio',
 | 
			
		||||
            sdp:answer.sdp
 | 
			
		||||
          }
 | 
			
		||||
        }))
 | 
			
		||||
        this.isConnected = true;
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        console.error( TAG_RTC, 'createAnswer: ' + JSON.stringify(e));
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendIceCandidate = async (icecandidate: any) => {
 | 
			
		||||
    const {peerId,remoteUserId} = this
 | 
			
		||||
    this.sendMessage(JSON.stringify({
 | 
			
		||||
      eventName:'__ice_candidate',
 | 
			
		||||
      data:{
 | 
			
		||||
        userID:remoteUserId,
 | 
			
		||||
        id:'audio',
 | 
			
		||||
        label:0,
 | 
			
		||||
        fromId:peerId,
 | 
			
		||||
        candidate:icecandidate.candidate
 | 
			
		||||
      }
 | 
			
		||||
    }));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  sendMessage = async (message:string) => {
 | 
			
		||||
  sendMessage = async (message: string) => {
 | 
			
		||||
    this.ws.send(message, (error, success) => {
 | 
			
		||||
      if (success){
 | 
			
		||||
      if (success) {
 | 
			
		||||
        console.info(TAG_RTC, 'ws send success' + message)
 | 
			
		||||
      }else{
 | 
			
		||||
      } else {
 | 
			
		||||
        console.error(TAG_RTC, 'ws send error: ' + error);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
@ -256,28 +288,13 @@ export default class WebRtcModel {
 | 
			
		||||
    return await this.ws.close();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  receiveSdp = async (sdp) => {
 | 
			
		||||
    let type = sdp.type as string;
 | 
			
		||||
    // let text = json.sdp.text as string;
 | 
			
		||||
    if (type === 'offer') {
 | 
			
		||||
      this.webrtc.setRemoteDescription(sdp);
 | 
			
		||||
      this.sendAnswer();
 | 
			
		||||
      prompt.showToast({
 | 
			
		||||
        message: '语音对讲连接完成',
 | 
			
		||||
        duration: 4000
 | 
			
		||||
      });
 | 
			
		||||
    } else if (type === 'answer') {
 | 
			
		||||
      this.webrtc.setRemoteDescription(sdp);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  receiveIce = (ice) => {
 | 
			
		||||
    try {
 | 
			
		||||
      this.webrtc.addIceCandidate({
 | 
			
		||||
        candidate:ice,
 | 
			
		||||
        candidate: ice,
 | 
			
		||||
      });
 | 
			
		||||
    }catch (e){
 | 
			
		||||
      console.info(TAG_RTC,JSON.stringify(e))
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      console.info(TAG_RTC, JSON.stringify(e))
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -294,16 +311,16 @@ export default class WebRtcModel {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //接受对方的邀请
 | 
			
		||||
  acceptInvited = (fromId:string,roomId:string) =>{
 | 
			
		||||
    const {sendMessage,peerId} = this;
 | 
			
		||||
  acceptInvited = (fromId: string, roomId: string) => {
 | 
			
		||||
    const { sendMessage, peerId } = this;
 | 
			
		||||
    this.remoteUserId = fromId;
 | 
			
		||||
    this.roomId = roomId
 | 
			
		||||
 | 
			
		||||
    sendMessage(JSON.stringify({
 | 
			
		||||
      eventName:'__join',
 | 
			
		||||
      data:{
 | 
			
		||||
        userID:peerId,
 | 
			
		||||
        room:roomId
 | 
			
		||||
      eventName: '__join',
 | 
			
		||||
      data: {
 | 
			
		||||
        userID: peerId,
 | 
			
		||||
        room: roomId
 | 
			
		||||
      }
 | 
			
		||||
    }))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -108,7 +108,7 @@ class CenterUDPClient extends UdpClient {
 | 
			
		||||
    try {
 | 
			
		||||
      const fileUtil = new FileUtils(context)
 | 
			
		||||
      const data = await fileUtil.readFile("" + '/config/ipConfig.txt');
 | 
			
		||||
      const carInfo: CarInfoType = AppStorage.get('carInfo')
 | 
			
		||||
      const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')
 | 
			
		||||
      if (data?.length > 0) {
 | 
			
		||||
        const result: IPConfig = JSON.parse(data)
 | 
			
		||||
        this.create(result.udplocalIp, '8800', carInfo?.udpAddress, carInfo?.messagePort)
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ export default class GetDistance {
 | 
			
		||||
  //上传行驶里程数据
 | 
			
		||||
  uploadData = async () => {
 | 
			
		||||
    setInterval(() => {
 | 
			
		||||
      const { carId } = AppStorage.get('carInfo');
 | 
			
		||||
      const { carId } = AppStorage.get<CarInfoType>('carInfo');
 | 
			
		||||
      const { date, timeStr, totalDistance } = this;
 | 
			
		||||
      return
 | 
			
		||||
      //"carid":"1001","startTime":"2024-08-24 08:09:01","time":"111233", "mileage":"1222"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user