文件传输

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()
    }
Copyright © 2023-2024 IDO. All rights reserved. all right reserved,powered by Gitbook修改日期: 2024-08-21 11:21:00

results matching ""

    No results matching ""