//package com.kfzs.duanduan.services;
//
//import android.app.Service;
//import android.content.Intent;
//import android.os.IBinder;
//import android.support.annotation.Nullable;
//import android.util.Log;
//
//import com.kfzs.duanduan.KFZSApp;
//import com.kfzs.duanduan.bean.DownloadStatus;
//import com.kfzs.duanduan.datashare.DDProviderHelper;
//import com.kfzs.duanduan.datashare.provider.download.DownLoadInfo;
//
//import org.greenrobot.eventbus.EventBus;
//
//import java.text.DecimalFormat;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * The appstore download service
// * Created by HooRang on 2017/2/20.
// */
//public class KFDownloadServices extends Service {
//
//    private static final String TAG = KFDownloadServices.class.getSimpleName();
//
//    private static double FAKE_DOWNLOADED_SIZE = 0.5;
//
//
//    DownloadTaskService downloadTaskService;
//    private DownloadStatus statusInfo;
//    private Map<String, String> urlAndPackageNameMap = new HashMap<>();
//
//    @Override
//    public void onCreate() {
//        super.onCreate();
//
//        downloadTaskService = new DownloadTaskService(this);
//        //        FileDownloader.continueAll(true);
//    }
//
//    @Nullable
//    @Override
//    public IBinder onBind(Intent intent) {
//        Log.i(TAG, "onBind");
//        return null;
//
//
//    }
//
//
//    @Override
//    public void onDestroy() {
//        super.onDestroy();
//
//        Log.i(TAG, "onDestroy");
//
//    }
//
//
//    // 正在重试下载（如果你配置了重试次数，当一旦下载失败时会尝试重试下载），retryTimes是当前第几次重试
//    @Override
//    public void onFileDownloadStatusRetrying(DownloadFileInfo downloadFileInfo, int retryTimes) {
//        Log.i(TAG, "onFileDownloadStatusRetrying");
//    }
//
//
//    // 等待下载（等待其它任务执行完成，或者FileDownloader在忙别的操作）
//    @Override
//    public void onFileDownloadStatusWaiting(DownloadFileInfo downloadFileInfo) {
//        Log.i(TAG, "onFileDownloadStatusWaiting");
//    }
//
//
//    // 准备中（即，正在连接资源）
//    @Override
//    public void onFileDownloadStatusPreparing(DownloadFileInfo downloadFileInfo) {
//        Log.i(TAG, "onFileDownloadStatusPreparing");
//        statusInfo = new DownloadStatus();
//
//        // Send a fucking fake download event to update user interface
//        FAKE_DOWNLOADED_SIZE = getRandomFakeDownloadSize();
//        DownLoadInfo task = downloadTaskService.getDownloadTaskByUrl(downloadFileInfo.getUrl());
//        if (task != null) {
//            FAKE_DOWNLOADED_SIZE = task.getMDownloadedSize() == null ? FAKE_DOWNLOADED_SIZE : task.getMDownloadedSize();
//            statusInfo.setDownloadPgrs(task.getMPercent() == null ? 1 : task.getMPercent());
//        } else {
//            statusInfo.setDownloadPgrs(1);
//        }
//
//        double fileSize = downloadFileInfo.getFileSizeLong() / 1024f / 1024;
//        statusInfo.setStatus(DownloadTaskService.STATUS_ING);
//        statusInfo.setFileTotalSize(fileSize);
//        statusInfo.setFileDownloadedSize(FAKE_DOWNLOADED_SIZE);
//        statusInfo.setDownloadId(downloadFileInfo.getId());
//        statusInfo.setDownloadUrl(downloadFileInfo.getUrl());
//        EventBus.getDefault().post(statusInfo);
//    }
//
//    private String getPackageNameFromMapOrDb(String url) {
//        String packageName;
//        if (urlAndPackageNameMap.containsKey(url))
//            packageName = urlAndPackageNameMap.get(url);
//        else {
//            packageName = DDProviderHelper.getInstance().getDownloadTask(KFZSApp.getInstance(), url).getMPackageName();
//            urlAndPackageNameMap.put(url,packageName);
//        }
//        return packageName;
//    }
//
//    // 已准备好（即，已经连接到了资源）
//    @Override
//    public void onFileDownloadStatusPrepared(DownloadFileInfo downloadFileInfo) {
//        Log.i(TAG, "onFileDownloadStatusPrepared");
//    }
//
//    //正在下载，downloadSpeed为当前下载速度，单位KB/s，remainingTime为预估的剩余时间，单位秒
//    @Override
//    public void onFileDownloadStatusDownloading(DownloadFileInfo downloadFileInfo,
//                                                float downloadSpeed, long remainingTime) {
//        Log.i(TAG, "onFileDownloadStatusDownloading");
//        double downloadSize = downloadFileInfo.getDownloadedSizeLong() / 1024f / 1024;
//        if (downloadSize < FAKE_DOWNLOADED_SIZE) {
//            return;
//        }
//        double fileSize = downloadFileInfo.getFileSizeLong() / 1024f / 1024;
//        Double percent = downloadSize / fileSize * 100;
//        if(statusInfo == null){
//            return;
//        }
//        statusInfo.setStatus(DownloadTaskService.STATUS_ING);
//        statusInfo.setDownloadPgrs(percent.intValue());
//        statusInfo.setFileTotalSize(fileSize);
//        statusInfo.setFileDownloadedSize(downloadSize);
//        statusInfo.setDownloadId(downloadFileInfo.getId());
//        statusInfo.setDownloadUrl(downloadFileInfo.getUrl());
//        statusInfo.setDownloadSpeed(downloadSpeed);
//        EventBus.getDefault().post(statusInfo);
//    }
//
//    // 下载已被暂停
//    @Override
//    public void onFileDownloadStatusPaused(DownloadFileInfo downloadFileInfo) {
//        Log.i(TAG, "onFileDownloadStatusPaused");
//        if (null == statusInfo) {
//            statusInfo = new DownloadStatus();
//        }
//        double downloadSize = downloadFileInfo.getDownloadedSizeLong() / 1024f / 1024;
//        if (downloadSize < FAKE_DOWNLOADED_SIZE) {
//            return;
//        }
//        double fileSize = downloadFileInfo.getFileSizeLong() / 1024f / 1024;
//        Double percent = downloadSize / fileSize * 100;
//
//        if(statusInfo == null){
//            return;
//        }
//        statusInfo.setStatus(DownloadTaskService.STATUS_PAUSE);
//        statusInfo.setDownloadUrl(downloadFileInfo.getUrl());
//        statusInfo.setDownloadPgrs(percent.intValue());
//        statusInfo.setFileTotalSize(fileSize);
//        statusInfo.setFileDownloadedSize(downloadSize);
//        statusInfo.setDownloadId(downloadFileInfo.getId());
//        EventBus.getDefault().post(statusInfo);
//    }
//
//    // 下载完成（整个文件已经全部下载完成）
//    @Override
//    public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
//        Log.i(TAG, "onFileDownloadStatusCompleted");
//        if (null == statusInfo) {
//            statusInfo = new DownloadStatus();
//        }
//        statusInfo.setStatus(DownloadTaskService.STATUS_FINISH);
//        statusInfo.setApkPath(downloadFileInfo.getFilePath());
//        statusInfo.setDownloadUrl(downloadFileInfo.getUrl());
//        EventBus.getDefault().post(statusInfo);
//    }
//
//
//    // 下载失败了，详细查看失败原因failReason
//    @Override
//    public void onFileDownloadStatusFailed(String url, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason failReason) {
//        Log.i(TAG, "onFileDownloadStatusFailed");
//        if (null == statusInfo) {
//            statusInfo = new DownloadStatus();
//        }
//        statusInfo.setStatus(DownloadTaskService.STATUS_FAIL);
//        statusInfo.setDownloadUrl(url);
//        statusInfo.setMessage(failReason.getMessage());
//        EventBus.getDefault().post(statusInfo);
//    }
//
//
//    private double getRandomFakeDownloadSize() {
//        DecimalFormat df = new DecimalFormat("######0.0");
//        double a = (Math.random() * 1);
//        return Double.valueOf(df.format(a));
//    }
//
//
//}
