文件传输

FileTransfernterface

属性

isTransmitting

是否在执行传输

transFileType

当前传输中的文件类型

方法

transferFiles(fileItems:cancelPrevTranTask:transProgress:transStatus:completion:)

执行文件传输

  • Parameters:
    • fileItems: 待传文件
    • cancelPrevTranTask: 是否取消执行中的传输任务(如果有)
    • transProgress: 文件传输进度
    • transStatus: 文件传输状态
    • completion: 传输结果,形如:[true, true, ...] 和传入的 fileItems 一一对应

iwfFileSize(filePath:type:completion:)

获取压缩前.iwf文件大小

  • Parameters:
    • filePath: 表盘文件绝对路径
    • type: 表盘类型 1 云表盘 ,2 壁纸表盘
    • completion: 文件大小(单位 字节)

registerDeviceTranFileToApp(transTask:)

注册 设备文件->app传输 (全局注册一次)

  • Parameters:
    • transTask: 接收到的文件任务

unregisterDeviceTranFileToApp()

取消注册 设备文件 -> app传输

示例

实体类:

IDOTransSportModel

IDOTransMusicModel

IDOTransNormalModel

IDODeviceFileToAppTask (设备文件 -> App)

枚举:

IDOTransType

Swift:

var items = [IDOTransBaseModel]()

// 音乐
items.append(IDOTransMusicModel(filePath: "\(mp3Path)/1.mp3", fileName: "mp3_1", musicId: 1))
items.append(IDOTransMusicModel(filePath: "\(mp3Path)/2.mp3", fileName: "mp3_2", musicId: 2))
items.append(IDOTransMusicModel(filePath: "\(mp3Path)/3.mp3", fileName: "mp3_3", musicId: 3))

// 运动图标 - 图片
items.append(IDOTransSportModel(filePath: "x.png", fileName: "icon_sport1", sportType: 2, iconType: 1, isSports: false))
items.append(IDOTransSportModel(filePath: "x.png", fileName: "icon_sport2", sportType: 2, iconType: 1, isSports: false))

// 运动图标 - 动画
items.append(IDOTransSportModel(filePath: "x.bmp", fileName: "icon_sports1", sportType: 2, iconType: 3, isSports: true))
items.append(IDOTransSportModel(filePath: "x.bmp", fileName: "icon_sports2", sportType: 2, iconType: 3, isSports: true))

// 壁纸表盘
items.append(IDOTransNormalModel(fileType: .wallpaperZ, filePath: "x.png", fileName: "wallpaper.z"))

// 云表盘
items.append(IDOTransNormalModel(fileType: .iwfLz, filePath: "noise_w96.zip", fileName: "noise_w96"))

// 固件
items.append(IDOTransNormalModel(fileType: .fw, filePath: "xx.fw", fileName: "xx"))


// 调用传输
let canceler = sdk.transfer.transferFiles(fileItems: items, cancelPrevTranTask: true) { currentIndex, totalCount, _, totalProgress in
      print("传输中(\(currentIndex + 1)/\(totalCount)...")
} transStatus: { _, status, errorCode, _ in
    if status != .finished || errorCode != 0 {
        print("传输失败:\(errorCode)")
    }
} completion: { rs in
    print("传输结束: \(rs)")
    if rs.last! {
        // 传输成功
    } else {
        // 传输失败
    }
}

// 取消传输
canceler?.cancel()



// 设备传输文件到app

// 注册监听 设备传输文件到app任务
sdk.transfer.registerDeviceTranFileToApp { [weak self] task in
        let txt = "\n\n收到设备传输文件 名称:\(task.deviceTransItem.fileName) 大小:\(task.deviceTransItem.fileSize) 到App"
        print(txt)
        textResponse.text += "\n\(txt)"
        // 接收设备传输文件到app
        task.acceptReceiveFile { [weak self] progress in
            let s = "接收进度:\(progress * 100)%"
            print(s)
            self?.textResponse.text += "\n\(s)"
        } onComplete: { [weak self] isCompleted, receiveFilePath in
            let s = "接收结果:\(isCompleted) filePath:\(receiveFilePath ?? "")"
            print(s)
            self?.textResponse.text += "\n\(s)"
        }

        /*
        // 注:接收中 可随时终止接收
        // 终止接收文件
        task.stopReceiveFile { rs in
            print("已终止接收文件\(task.deviceTransItem.fileName)")
        }
         */
}

// 取消监听
deinit {
        sdk.transfer.unregisterDeviceTranFileToApp()
    }

Kotlin:

var items = mutableListOf<IDOTransBaseModel>()

// 音乐
items.add(IDOTransMusicModel(filePath: "\(mp3Path)/1.mp3", fileName: "mp3_1", musicId: 1))
items.add(IDOTransMusicModel(filePath: "\(mp3Path)/2.mp3", fileName: "mp3_2", musicId: 2))
items.add(IDOTransMusicModel(filePath: "\(mp3Path)/3.mp3", fileName: "mp3_3", musicId: 3))

// 运动图标 - 图片
items.add(IDOTransSportModel(filePath: "x.png", fileName: "icon_sport1", sportType: 2, iconType: 1, isSports: false))
items.add(IDOTransSportModel(filePath: "x.png", fileName: "icon_sport2", sportType: 2, iconType: 1, isSports: false))

// 运动图标 - 动画
items.add(IDOTransSportModel(filePath: "x.bmp", fileName: "icon_sports1", sportType: 2, iconType: 3, isSports: true))
items.add(IDOTransSportModel(filePath: "x.bmp", fileName: "icon_sports2", sportType: 2, iconType: 3, isSports: true))

// 壁纸表盘
items.add(IDOTransNormalModel(fileType = IDOTransType.WALLPAPERZ,filePath = "xx/xx.png",fileName = "wallpaper.z",fileSize = xx))

// 云表盘
items.add(IDOTransNormalModel(fileType: .iwfLz, filePath: "noise_w96.zip", fileName: "noise_w96"))

// 固件
items.add(IDOTransNormalModel(fileType: .fw, filePath: "xx.fw", fileName: "xx"))


// 调用传输
val cancellable = sdk.transfer.transferFiles(
    items, cancelPre,
    { currentIndex, totalCount, currentProgress, totalProgress -> 
      print("传输中${currentIndex + 1}/$totalCount...")
    },
    { currentIndex: Int, status: IDOTransStatus, errorCode: Int?, finishingTime: Int? ->
        if (status != IDOTransStatus.FINISHED || errorCode != 0) {
            print("传输失败:$errorCode")
        }
    },
    {resultList-> resultList.forEach {
        if (it){
            //传输成功
        }else{
            //传输失败
        }
    }})

// Cancel transfer
canceler?.cancel()


sdk.transfer.registerDeviceTranFileToApp {
          println("收到设备传输文件 名称:${task.deviceTransItem.fileName} 大小:${task.deviceTransItem.fileSize} 到App")
                it.acceptReceiveFile(onProgress = { progress ->
                    // Handle progress updates here
                    println("Progress: $progress")
                    tv_response?.text ="Progress: $progress"
                },
                    onComplete = { isCompleted, receiveFilePath ->
                        // Handle completion here
                        if (isCompleted) {
                            println("File received successfully at: $receiveFilePath")
                            tv_response?.text ="File received successfully at: $receiveFilePath"
                        } else {
                            tv_response?.text ="File transfer failed."

                        }
                    })
                /*
                // Note: Receiving can be terminated at any time
                // Abort receiving file
                it.stopReceiveFile { rs ->
                    println("已终止接收文件${task.deviceTransItem.fileName)")
                }
                 */  
}

// 取消监听
override fun onDestroy() {
        super.onDestroy()
        sdk.transfer.unregisterDeviceTranFileToApp()
    }

ArkTs

let cancelPrevTranTask  = true
let items = Array<IDOTransBaseModel>()

//音乐
items.push(new IDOTransMusicModel("\(mp3Path)/1.mp3","m1.mp3",0,1,"singer1"))
items.push(new IDOTransMusicModel("\(mp3Path)/2.mp3","m2.mp3",0,2,"singer2"))
items.push(new IDOTransMusicModel("\(mp3Path)/3.mp3","m3.mp3",0,3,"singer3"))

//运动图标 -图片
items.push(new IDOTransSportModel("x.png","icon_sport1",0,2,1,false))
items.push(new IDOTransSportModel("x.png","icon_sport2",0,2,1,false))

//运动图标 -动画
items.push(new IDOTransSportModel("x.bmp","icon_sport1",0,2,3,false))
items.push(new IDOTransSportModel("x.bmp","icon_sport2",0,2,3,false))

//壁纸表盘
items.push(new IDOTransNormalModel(IDOTransType.wallpaperZ,"xx/xx.png","wallpaper.z",xx))

// 云表盘
items.push(new IDOTransNormalModel(IDOTransType.iwfLz,"noise_w96.zip","noise_w96",xx))
// 固件
items.push(new IDOTransNormalModel(IDOTransType.fw,"xx.fw","xx",xx))

let cancellable = sdk.transfer.transferFiles(items,cancelPrevTranTask,
  (currentIndex, totalCount, currentProgress, totalProgress) =>{
    console.log(`传输中 ${currentIndex+1}/${totalCount}`)
  },
  (currentIndex, status, errorCode, finishingTime) =>{
      if(status != IDOTransStatus.finished || errorCode != 0){
        console.log(`传输失败:${errorCode}`)
      }
  },
  (results: boolean[]) =>{
    console.debug(`trans rs: ${results}`);
    for (let res of results) {
      if(res){
        //传输成功
      } else{
        //传输失败
      }
    }
  }
)

// Cancel transfer
cancellable?.cancel()

sdk.transfer.registerDeviceTranFileToApp((task: IDODeviceFileToAppTask)=>{
console.log(`收到设备传输文件 名称:${task.deviceTransItem.fileName} 大小:${task.deviceTransItem.fileSize} 到App`)
task.acceptReceiveFile((progress: number)=>{
    console.log(`Progress: ${progress}`)
},
    (isCompleted: boolean, receiveFilePath: string | null)=>{
    if(isCompleted){
        console.log(`File received successfully at: ${receiveFilePath}`)
    } else {
        console.log(`File transfer failed`)
    }
    }
)
})

// 取消监听
aboutToDisappear(): void {
    sdk.transfer.unregisterDeviceTranFileToApp()
}
Copyright © 2023-2024 IDO. All rights reserved. all right reserved,powered by Gitbook修改日期: 2026-03-13 12:04:56

results matching ""

    No results matching ""