You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
5.4 KiB
208 lines
5.4 KiB
/*
|
|
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package com.arialyy.aria.util;
|
|
|
|
import android.util.Log;
|
|
import com.arialyy.aria.core.DownloadManager;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.Map;
|
|
import java.util.Properties;
|
|
import java.util.Set;
|
|
import java.util.WeakHashMap;
|
|
|
|
/**
|
|
* Created by AriaL on 2016/12/8.
|
|
* 信息配置
|
|
*/
|
|
public class Configuration {
|
|
private static final String TAG = "Configuration";
|
|
private static final String CONFIG_FILE = "/Aria/ADConfig.properties";
|
|
/**
|
|
* 当前调度器最大下载数,默认最大下载数为 “2”
|
|
*/
|
|
private static final String DOWNLOAD_NUM = "DOWNLOAD_NUM";
|
|
/**
|
|
* 失败重试次数,默认最多重试 10 次
|
|
*/
|
|
private static final String RE_TRY_NUM = "RE_TRY_NUM";
|
|
/**
|
|
* 是否打开下载广播,默认 false
|
|
*/
|
|
private static final String OPEN_BROADCAST = "OPEN_BROADCAST";
|
|
/**
|
|
* 失败重试间隔时间,默认 4000 ms
|
|
*/
|
|
private static final String RE_TRY_INTERVAL = "RE_TRY_INTERVAL";
|
|
/**
|
|
* 超时时间,默认 10000 ms
|
|
*/
|
|
private static final String DOWNLOAD_TIME_OUT = "DOWNLOAD_TIME_OUT";
|
|
public static boolean isOpenBreadCast = false;
|
|
|
|
private static Configuration INSTANCE = null;
|
|
private File mConfigFile = null;
|
|
private static final Object LOCK = new Object();
|
|
|
|
public static Configuration getInstance() {
|
|
if (INSTANCE == null) {
|
|
synchronized (LOCK) {
|
|
INSTANCE = new Configuration();
|
|
}
|
|
}
|
|
return INSTANCE;
|
|
}
|
|
|
|
private Configuration() {
|
|
mConfigFile = new File(DownloadManager.APP.getFilesDir().getPath() + CONFIG_FILE);
|
|
try {
|
|
if (!mConfigFile.exists()) {
|
|
mConfigFile.getParentFile().mkdirs();
|
|
mConfigFile.createNewFile();
|
|
init();
|
|
}else {
|
|
isOpenBreadCast = isOpenBroadcast();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void init() {
|
|
Map<String, String> config = new WeakHashMap<>();
|
|
config.put(DOWNLOAD_NUM, 2 + "");
|
|
config.put(RE_TRY_NUM, 10 + "");
|
|
config.put(OPEN_BROADCAST, false + "");
|
|
config.put(RE_TRY_INTERVAL, 4000 + "");
|
|
config.put(DOWNLOAD_TIME_OUT, 10000 + "");
|
|
saveConfig(config);
|
|
}
|
|
|
|
private void saveConfig(Map<String, String> config) {
|
|
if (config == null || config.size() == 0) {
|
|
return;
|
|
}
|
|
Properties properties = CommonUtil.loadConfig(mConfigFile);
|
|
Set<String> keys = config.keySet();
|
|
for (String key : keys) {
|
|
properties.setProperty(key, config.get(key));
|
|
}
|
|
CommonUtil.saveConfig(mConfigFile, properties);
|
|
}
|
|
|
|
private void save(String key, String value) {
|
|
Map<String, String> map = new WeakHashMap<>();
|
|
map.put(key, value);
|
|
saveConfig(map);
|
|
}
|
|
|
|
/**
|
|
* 获取下载超时时间
|
|
*
|
|
* @return 默认4000ms
|
|
*/
|
|
public int getTimeOut() {
|
|
return Integer.parseInt(CommonUtil.loadConfig(mConfigFile).getProperty(DOWNLOAD_TIME_OUT));
|
|
}
|
|
|
|
/**
|
|
* 设置重试间隔
|
|
*/
|
|
public void setTimeOut(int timeOut) {
|
|
if (timeOut < 10000) {
|
|
Log.w(TAG, "下载超时时间不能小于 10000 ms");
|
|
return;
|
|
}
|
|
save(DOWNLOAD_TIME_OUT, timeOut + "");
|
|
}
|
|
|
|
/**
|
|
* 获取失败重试间隔时间
|
|
*
|
|
* @return 默认4000ms
|
|
*/
|
|
public int getReTryInterval() {
|
|
return Integer.parseInt(CommonUtil.loadConfig(mConfigFile).getProperty(RE_TRY_INTERVAL));
|
|
}
|
|
|
|
/**
|
|
* 设置重试间隔
|
|
*/
|
|
public void setReTryInterval(int reTryInterval) {
|
|
if (reTryInterval < 4000) {
|
|
Log.w(TAG, "重试间隔不能小于4000ms");
|
|
return;
|
|
}
|
|
save(RE_TRY_INTERVAL, reTryInterval + "");
|
|
}
|
|
|
|
/**
|
|
* 获取最大下载数
|
|
*
|
|
* @return 默认返回2
|
|
*/
|
|
public int getDownloadNum() {
|
|
return Integer.parseInt(CommonUtil.loadConfig(mConfigFile).getProperty(DOWNLOAD_NUM));
|
|
}
|
|
|
|
/**
|
|
* 设置最大下载数
|
|
*/
|
|
public void setDownloadNum(int downloadNum) {
|
|
if (downloadNum < 1) {
|
|
Log.w(TAG, "最大下载数不能小于1");
|
|
return;
|
|
}
|
|
save(DOWNLOAD_NUM, downloadNum + "");
|
|
}
|
|
|
|
/**
|
|
* 获取最大重试数
|
|
*
|
|
* @return 默认返回 10
|
|
*/
|
|
public int getReTryNum() {
|
|
return Integer.parseInt(CommonUtil.loadConfig(mConfigFile).getProperty(RE_TRY_NUM));
|
|
}
|
|
|
|
/**
|
|
* 设置重试数
|
|
*/
|
|
public void setReTryNum(int reTryNum) {
|
|
if (reTryNum < 1) {
|
|
Log.w(TAG, "最大下载数不能小于1");
|
|
return;
|
|
}
|
|
save(RE_TRY_NUM, reTryNum + "");
|
|
}
|
|
|
|
/**
|
|
* 是否打开下载广播
|
|
*
|
|
* @return 默认false
|
|
*/
|
|
public boolean isOpenBroadcast() {
|
|
return Boolean.parseBoolean(CommonUtil.loadConfig(mConfigFile).getProperty(RE_TRY_NUM));
|
|
}
|
|
|
|
/**
|
|
* 设置是否打开下载广播
|
|
*/
|
|
public void setOpenBroadcast(boolean openBroadcast) {
|
|
isOpenBreadCast = openBroadcast;
|
|
save(OPEN_BROADCAST, openBroadcast + "");
|
|
}
|
|
}
|
|
|