diff --git a/thunder/src/main/AndroidManifest.xml b/thunder/src/main/AndroidManifest.xml
index 658513ac3..ec994ad5f 100644
--- a/thunder/src/main/AndroidManifest.xml
+++ b/thunder/src/main/AndroidManifest.xml
@@ -1 +1,6 @@
-
+
+
+
+
+
+
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java b/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
index 990f05538..3fda0634a 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
@@ -1,7 +1,7 @@
package com.xunlei.downloadlib;
import android.content.Context;
-import android.os.Build;
+import android.text.TextUtils;
import com.github.catvod.Init;
import com.github.catvod.utils.Prefers;
@@ -10,7 +10,6 @@ import com.xunlei.downloadlib.parameter.BtIndexSet;
import com.xunlei.downloadlib.parameter.BtSubTaskDetail;
import com.xunlei.downloadlib.parameter.BtTaskParam;
import com.xunlei.downloadlib.parameter.EmuleTaskParam;
-import com.xunlei.downloadlib.parameter.GetDownloadLibVersion;
import com.xunlei.downloadlib.parameter.GetFileName;
import com.xunlei.downloadlib.parameter.GetTaskId;
import com.xunlei.downloadlib.parameter.InitParam;
@@ -25,6 +24,7 @@ public class XLDownloadManager {
private XLLoader loader;
private Context context;
+ private static boolean mAllowExecution = true;
public XLDownloadManager() {
this.context = Init.context();
@@ -33,13 +33,16 @@ public class XLDownloadManager {
}
public void init() {
- InitParam param = new InitParam(context.getFilesDir().getPath());
- loader.init(param.getSoKey(), "com.android.providers.downloads", param.mAppVersion, "", getPeerId(), getGuid(), param.mStatSavePath, param.mStatCfgSavePath, 0, param.mPermissionLevel, param.mQueryConfOnInit);
- getDownloadLibVersion(new GetDownloadLibVersion());
- setOSVersion(Build.VERSION.INCREMENTAL + "_alpha");
- setLocalProperty("PhoneModel", Build.MODEL);
- setStatReportSwitch(false);
- setSpeedLimit(-1, -1);
+ InitParam initParam = new InitParam(context.getFilesDir().getPath());
+ System.loadLibrary("xl_thunder_sdk");
+ String peerid = getPeerId();
+ String guid = getGuid();
+ if (!TextUtils.isEmpty(initParam.mGuid)) {
+ guid = initParam.mGuid;
+ }
+ loader.init(context, initParam.mAppVersion, "", peerid, guid, initParam.mStatSavePath, initParam.mStatCfgSavePath, initParam.mLogSavePath, mAllowExecution ? XLUtil.getNetworkTypeComplete(context) : 0, initParam.mPermissionLevel);
+ loader.setUserId("Yt4vsji-qngamdRo");
+ setSpeedLimit(-1L, -1L);
}
public void release() {
@@ -63,7 +66,7 @@ public class XLDownloadManager {
}
public void startTask(long taskId) {
- loader.startTask(taskId);
+ loader.startTask(taskId, false);
}
public void stopTask(long taskId) {
@@ -86,24 +89,8 @@ public class XLDownloadManager {
loader.setDownloadTaskOrigin(taskId, str);
}
- private void setLocalProperty(String key, String value) {
- loader.setLocalProperty(key, value);
- }
-
- public void setOSVersion(String str) {
- loader.setMiUiVersion(str);
- }
-
- public void getDownloadLibVersion(GetDownloadLibVersion version) {
- loader.getDownloadLibVersion(version);
- }
-
- public void setTaskGsState(long j, int i, int i2) {
- loader.setTaskGsState(j, i, i2);
- }
-
- public void setStatReportSwitch(boolean value) {
- loader.setStatReportSwitch(value);
+ public void setTaskLxState(long j, int i, int i2) {
+ loader.setTaskLxState(j, i, i2);
}
public int createP2spTask(P2spTaskParam param, GetTaskId taskId) {
@@ -149,4 +136,9 @@ public class XLDownloadManager {
public void setSpeedLimit(long min, long max) {
loader.setSpeedLimit(min, max);
}
+
+ public void setAccelerateToken(long j, int i, long j2, int i2, String str) {
+ loader.setAccelerateToken(j, i, j2, i2, str);
+ }
+
}
\ No newline at end of file
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java b/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
old mode 100644
new mode 100755
index 49183d2a9..4a1af34a1
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
@@ -1,5 +1,7 @@
package com.xunlei.downloadlib;
+import android.content.Context;
+
import com.xunlei.downloadlib.parameter.BtIndexSet;
import com.xunlei.downloadlib.parameter.BtSubTaskDetail;
import com.xunlei.downloadlib.parameter.GetDownloadLibVersion;
@@ -10,10 +12,9 @@ import com.xunlei.downloadlib.parameter.TorrentInfo;
import com.xunlei.downloadlib.parameter.XLTaskInfo;
import com.xunlei.downloadlib.parameter.XLTaskLocalUrl;
-class XLLoader {
+public class XLLoader {
public XLLoader() {
- System.loadLibrary("xl_stat");
System.loadLibrary("xl_thunder_sdk");
}
@@ -39,12 +40,14 @@ class XLLoader {
public native int getTorrentInfo(String str, TorrentInfo torrentInfo);
- public native int init(String str, String str2, String str3, String str4, String str5, String str6, String str7, String str8, int i, int i2, int i3);
+ public native int init(Context context, String str, String str2, String str3, String str4, String str5, String str6, String str7, int i, int i2);
public native int parserThunderUrl(String str, ThunderUrlInfo thunderUrlInfo);
public native int releaseTask(long j);
+ public native int setAccelerateToken(long j, int i, long j2, int i2, String str);
+
public native int setDownloadTaskOrigin(long j, String str);
public native int setLocalProperty(String str, String str2);
@@ -59,7 +62,11 @@ class XLLoader {
public native int setTaskGsState(long j, int i, int i2);
- public native int startTask(long j);
+ public native int setTaskLxState(long j, int i, int i2);
+
+ public native int setUserId(String str);
+
+ public native int startTask(long j, boolean z);
public native int stopTask(long j);
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java b/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
index 5f38190eb..2742e2d9c 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
@@ -41,8 +41,8 @@ public class XLTaskHelper {
}
private synchronized GetTaskId startTask(GetTaskId taskId, int index) {
+ getManager().setTaskLxState(taskId.getTaskId(), index, 1);
getManager().startTask(taskId.getTaskId());
- getManager().setTaskGsState(taskId.getTaskId(), index, 2);
return taskId;
}
@@ -64,7 +64,7 @@ public class XLTaskHelper {
public synchronized GetTaskId addThunderTask(String url, File savePath) {
String fileName = getManager().getFileNameFromUrl(url);
GetTaskId taskId = new GetTaskId(savePath, fileName, url);
- if (url.startsWith("ftp://")) {
+ if (url.startsWith("ftp://") || url.startsWith("http://") || url.startsWith("https://")) {
P2spTaskParam param = new P2spTaskParam();
param.setFilePath(savePath.getAbsolutePath());
param.setSeqId(getSeq().incrementAndGet());
@@ -77,8 +77,6 @@ public class XLTaskHelper {
param.setPass("");
int code = getManager().createP2spTask(param, taskId);
if (code != XLConstant.XLErrorCode.NO_ERROR) return taskId;
- getManager().setDownloadTaskOrigin(taskId.getTaskId(), "out_app/out_app_paste");
- getManager().setOriginUserAgent(taskId.getTaskId(), "AndroidDownloadManager/5.41.2.4980 (Linux; U; Android 4.4.4; Build/KTU84Q)");
} else if (url.startsWith("ed2k://")) {
EmuleTaskParam param = new EmuleTaskParam();
param.setFilePath(savePath.getAbsolutePath());
@@ -89,6 +87,8 @@ public class XLTaskHelper {
int code = getManager().createEmuleTask(param, taskId);
if (code != XLConstant.XLErrorCode.NO_ERROR) return taskId;
}
+ getManager().setDownloadTaskOrigin(taskId.getTaskId(), "out_app/out_app_paste");
+ getManager().setOriginUserAgent(taskId.getTaskId(), "AndroidDownloadManager/4.4.4 (Linux; U; Android 4.4.4; Build/KTU84Q)");
return startTask(taskId, 0);
}
@@ -115,7 +115,8 @@ public class XLTaskHelper {
for (int i = 0; i < list.size(); i++) btIndexSet.mIndexSet[i] = list.get(i);
getManager().deselectBtSubTask(taskId.getTaskId(), btIndexSet);
}
- return startTask(taskId, index);
+ startTask(taskId, index);
+ return taskId;
}
public synchronized TorrentInfo getTorrentInfo(File file) {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java b/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
old mode 100644
new mode 100755
index 848663c96..b7ae796d7
--- a/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
@@ -1,5 +1,8 @@
package com.xunlei.downloadlib.android;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.util.Base64;
import java.util.Random;
@@ -44,4 +47,52 @@ public class XLUtil {
bArr[length + 3] = b;
return new String(Base64.encode(bArr, 0)).trim();
}
+
+ public static int getNetworkTypeComplete(Context context) {
+ if (context == null) {
+ return 0;
+ }
+ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ int i = 0;
+ if (connectivityManager != null) {
+ NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
+ i = 0;
+ if (activeNetworkInfo != null) {
+ int type = activeNetworkInfo.getType();
+ if (type == 1) {
+ i = 9;
+ } else if (type == 0) {
+ switch (activeNetworkInfo.getSubtype()) {
+ case 1:
+ case 2:
+ case 4:
+ case 7:
+ case 11:
+ i = 2;
+ break;
+ case 3:
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ case 10:
+ case 12:
+ case 14:
+ case 15:
+ i = 3;
+ break;
+ case 13:
+ i = 4;
+ break;
+ default:
+ i = 0;
+ break;
+ }
+ } else {
+ i = 5;
+ }
+ }
+ }
+ return i;
+ }
}
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
index 4bfc9a57d..49c21028b 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
@@ -1,33 +1,21 @@
package com.xunlei.downloadlib.parameter;
-import android.util.Base64;
-
-import com.xunlei.downloadlib.android.XLUtil;
-
-import java.nio.charset.StandardCharsets;
public class InitParam {
-
- public String mAppKey;
public String mAppVersion;
+ public String mGuid;
+ public String mLogSavePath;
public int mPermissionLevel;
- public int mQueryConfOnInit;
- public String mStatSavePath;
public String mStatCfgSavePath;
+ public String mStatSavePath;
public InitParam(String path) {
- this.mAppKey = "xzNjAwMQ^^yb==0^852^083dbcff^cee25055f125a2fde";
- this.mAppVersion = "21.01.07.800002";
- this.mPermissionLevel = 1;
- this.mQueryConfOnInit = 0;
+ this.mAppVersion = "1.18.2";
+ this.mPermissionLevel = 3;
this.mStatSavePath = path;
this.mStatCfgSavePath = path;
+ this.mLogSavePath = path;
+ this.mGuid = "000000000000000000";
}
- public String getSoKey() {
- String[] split = mAppKey.split("==");
- String replace = split[0].replace('^', '=');
- String str = new String(Base64.decode(replace.substring(2, replace.length() - 2), 0), StandardCharsets.UTF_8);
- return XLUtil.generateAppKey("com.android.providers.downloads", Short.parseShort(str.split(";")[0]), (byte) 1);
- }
}
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
index 73dccb7c4..41140b546 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
@@ -10,13 +10,11 @@ import java.util.Comparator;
import java.util.List;
public class TorrentFileInfo {
-
- public boolean isSelected;
+ public int mFileIndex;
public String mFileName;
- public String mSubPath;
public long mFileSize;
- public int mFileIndex;
public int mRealIndex;
+ public String mSubPath;
public File mFile;
public String getFileName() {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
index 1aa3aa450..a64845552 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
@@ -8,11 +8,11 @@ import java.util.List;
public class TorrentInfo {
- public TorrentFileInfo[] mSubFileInfo;
- public String mMultiFileBaseFolder;
- public boolean mIsMultiFiles;
- public String mInfoHash;
public int mFileCount;
+ public String mInfoHash;
+ public boolean mIsMultiFiles;
+ public String mMultiFileBaseFolder;
+ public TorrentFileInfo[] mSubFileInfo;
public File mFile;
public TorrentInfo(File file) {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
index 63e2a60da..13185050e 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
@@ -1,14 +1,33 @@
package com.xunlei.downloadlib.parameter;
-public class XLTaskInfo {
+import android.os.Parcel;
+import android.os.Parcelable;
+public class XLTaskInfo implements Parcelable {
+ public static final Creator CREATOR = new Creator() {
+ @Override // android.os.Parcelable.Creator
+ public final XLTaskInfo createFromParcel(Parcel parcel) {
+ return new XLTaskInfo(parcel);
+ }
+
+ @Override // android.os.Parcelable.Creator
+ public final XLTaskInfo[] newArray(int i) {
+ return new XLTaskInfo[i];
+ }
+ };
+ public int mAddedHighSourceState;
public int mAdditionalResCount;
+ public long mAdditionalResDCDNBytes;
+ public long mAdditionalResDCDNSpeed;
public long mAdditionalResPeerBytes;
public long mAdditionalResPeerSpeed;
public int mAdditionalResType;
public long mAdditionalResVipRecvBytes;
public long mAdditionalResVipSpeed;
+ public long mCheckedSize;
public String mCid;
+ public int mDcdnState;
+ public long mDownloadFileCount;
public long mDownloadSize;
public long mDownloadSpeed;
public int mErrorCode;
@@ -16,6 +35,8 @@ public class XLTaskInfo {
public long mFileSize;
public String mGcid;
public int mInfoLen;
+ public int mLanPeerResState;
+ public int mOriginErrcode;
public long mOriginRecvBytes;
public long mOriginSpeed;
public long mP2PRecvBytes;
@@ -23,10 +44,82 @@ public class XLTaskInfo {
public long mP2SRecvBytes;
public long mP2SSpeed;
public int mQueryIndexStatus;
- public long mScdnRecvBytes;
- public long mScdnSpeed;
public long mTaskId;
public int mTaskStatus;
+ public long mTotalFileCount;
+
+ public XLTaskInfo() {
+ }
+
+ public XLTaskInfo(Parcel parcel) {
+ this.mTaskId = parcel.readLong();
+ this.mFileName = parcel.readString();
+ this.mInfoLen = parcel.readInt();
+ this.mTaskStatus = parcel.readInt();
+ this.mErrorCode = parcel.readInt();
+ this.mFileSize = parcel.readLong();
+ this.mDownloadSize = parcel.readLong();
+ this.mDownloadSpeed = parcel.readLong();
+ this.mTotalFileCount = parcel.readLong();
+ this.mDownloadFileCount = parcel.readLong();
+ this.mQueryIndexStatus = parcel.readInt();
+ this.mCid = parcel.readString();
+ this.mGcid = parcel.readString();
+ this.mOriginSpeed = parcel.readLong();
+ this.mOriginRecvBytes = parcel.readLong();
+ this.mP2SSpeed = parcel.readLong();
+ this.mP2SRecvBytes = parcel.readLong();
+ this.mP2PSpeed = parcel.readLong();
+ this.mP2PRecvBytes = parcel.readLong();
+ this.mAdditionalResCount = parcel.readInt();
+ this.mAdditionalResType = parcel.readInt();
+ this.mAdditionalResVipSpeed = parcel.readLong();
+ this.mAdditionalResVipRecvBytes = parcel.readLong();
+ this.mAdditionalResPeerSpeed = parcel.readLong();
+ this.mAdditionalResPeerBytes = parcel.readLong();
+ this.mDcdnState = parcel.readInt();
+ this.mCheckedSize = parcel.readLong();
+ this.mLanPeerResState = parcel.readInt();
+ this.mOriginErrcode = parcel.readInt();
+ }
+
+ @Override // android.os.Parcelable
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override // android.os.Parcelable
+ public void writeToParcel(Parcel parcel, int i) {
+ parcel.writeLong(this.mTaskId);
+ parcel.writeString(this.mFileName);
+ parcel.writeInt(this.mInfoLen);
+ parcel.writeInt(this.mTaskStatus);
+ parcel.writeInt(this.mErrorCode);
+ parcel.writeLong(this.mFileSize);
+ parcel.writeLong(this.mDownloadSize);
+ parcel.writeLong(this.mDownloadSpeed);
+ parcel.writeLong(this.mTotalFileCount);
+ parcel.writeLong(this.mDownloadFileCount);
+ parcel.writeInt(this.mQueryIndexStatus);
+ parcel.writeString(this.mCid);
+ parcel.writeString(this.mGcid);
+ parcel.writeLong(this.mOriginSpeed);
+ parcel.writeLong(this.mOriginRecvBytes);
+ parcel.writeLong(this.mP2SSpeed);
+ parcel.writeLong(this.mP2SRecvBytes);
+ parcel.writeLong(this.mP2PSpeed);
+ parcel.writeLong(this.mP2PRecvBytes);
+ parcel.writeInt(this.mAdditionalResCount);
+ parcel.writeInt(this.mAdditionalResType);
+ parcel.writeLong(this.mAdditionalResVipSpeed);
+ parcel.writeLong(this.mAdditionalResVipRecvBytes);
+ parcel.writeLong(this.mAdditionalResPeerSpeed);
+ parcel.writeLong(this.mAdditionalResPeerBytes);
+ parcel.writeInt(this.mDcdnState);
+ parcel.writeLong(this.mCheckedSize);
+ parcel.writeInt(this.mLanPeerResState);
+ parcel.writeInt(this.mOriginErrcode);
+ }
public int getTaskStatus() {
return mTaskStatus;
diff --git a/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so b/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so
deleted file mode 100644
index 2d8e3d43b..000000000
Binary files a/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so and /dev/null differ
diff --git a/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so b/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so
old mode 100644
new mode 100755
index 14230530f..92b14fa8f
Binary files a/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so and b/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so differ
diff --git a/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so b/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so
deleted file mode 100644
index f3eaddf28..000000000
Binary files a/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so and /dev/null differ
diff --git a/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so b/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so
old mode 100644
new mode 100755
index 25dac4387..9cb8235b5
Binary files a/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so and b/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so differ