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