//package cn.i2edu.dubbing_lib.util
//
//import android.os.Environment
//import android.util.Log
//import cn.i2edu.dubbing_lib.api.DownloadHelper
//import okhttp3.ResponseBody
//import retrofit2.Call
//import cn.i2edu.dubbing_lib.api.DownloadService
//import cn.i2edu.dubbing_lib.listener.DownloadListener
//import retrofit2.Callback
//import retrofit2.Response
//import java.io.*
//
//
//class DownloadUtil {
//
//    companion object {
//        private val Tag: String = "DownloadUtil"
//        val PATH_VIDEO = "${Environment.getExternalStorageDirectory().absoluteFile}/i2_file/i2_video/"
//        val PATH_BGM = "${Environment.getExternalStorageDirectory().absoluteFile}/i2_file/i2_bgm/"
//    }
//
//    protected lateinit var mApi: DownloadService
//    private var mCall: Call<ResponseBody>? = null
//    private var mThread: Thread? = null
//
//    constructor() {
//        if (!this::mApi.isInitialized) {
//            mApi = DownloadHelper.instance.buildRetrofit(" http://cdn.i2nexted.com/upload/video/file/")
//                    .createRetrofit(DownloadService::class.java)
//        }
//    }
//
//    fun downloadFile(url: String, downloadListener: DownloadListener) {
//        downloadListener.onStart()
//        val file = File(PATH_VIDEO)
//        if (!file.exists()) {
//            file.mkdirs()
//        }
//        var name = url
//        val i = url.lastIndexOf('/')
//        if (i == -1) {
//            return
//        }
//        name = PATH_VIDEO + name.substring(i)
//        val mFile = File(name)
//        if (!mFile.exists()) {
//            if (!mFile.createNewFile()) {
//                return
//            }
//        }
//        // 下载
//        mCall = mApi.downFile(url)
//        mCall?.enqueue(object : Callback<ResponseBody>{
//            override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
//                downloadListener.onFailure()
//            }
//
//            override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
//                mThread = Thread {
//                    saveToFile(response, mFile, downloadListener)
//                }
//                mThread?.start()
//            }
//        })
//    }
//
//    /**
//     * download BGM file with [url] and  [downloadListener]
//     */
//    fun downloadBGMFile(url: String, downloadListener: DownloadListener) {
//        downloadListener.onStart()
//        val file = File(PATH_BGM)
//        if (!file.exists()) {
//            file.mkdirs()
//        }
//        var name = url
//        val i = url.lastIndexOf('/')
//        if (i == -1) {
//            return
//        }
//        name = PATH_BGM + name.substring(i)
//        val mFile = File(name)
//        if (!mFile.exists()) {
//            if (!mFile.createNewFile()) {
//                return
//            }
//        }
//        // 下载
//        mCall = mApi.downFile(url)
//        mCall?.enqueue(object : Callback<ResponseBody>{
//            override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
//                downloadListener.onFailure()
//            }
//
//            override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
//                mThread = Thread {
//                    saveToFile(response, mFile, downloadListener)
//                }
//                mThread?.start()
//            }
//        })
//    }
//
//    private fun saveToFile(response: Response<ResponseBody>, mFile: File, downloadListener: DownloadListener) {
//        var currentLength: Long = 0
//        var os: OutputStream? = null
//
//        val iStream = response.body()?.byteStream()
//        val totalLength = response.body()?.contentLength()
//
//        try {
//            os = FileOutputStream(mFile)
//            val buff = ByteArray(1024)
//            do{
//                val len = iStream!!.read(buff)
//                if (len == -1) {
//                    break
//                }
//                os.write(buff, 0, len)
//                currentLength += len
//                Log.i(Tag, "当前进度: ${(100 * currentLength / totalLength!!).toInt()}")
//                //计算当前下载百分比，并经由回调传出
//                downloadListener.onProgress((100 * currentLength / totalLength!!).toInt())
//                //当百分比为100时下载结束，调用结束回调，并传出下载后的本地路径
//                if ((100 * currentLength / totalLength).toInt() == 100) {
//                    downloadListener.onFinish(mFile.absolutePath)//下载完成
//                }
//            } while (true)
//        } catch (e: FileNotFoundException) {
//            e.printStackTrace()
//        } catch (e: IOException) {
//            e.printStackTrace()
//        } finally {
//            os?.close()
//            iStream?.close()
//        }
//
//    }
//
//}