refactor(download): 重构下载模块代码格式和逻辑实现

- 格式化 ChildHandleDialog 类代码缩进和空行
- 优化 ChildHandleDialog 中的 onClick 方法使用 if-else 替代 switch
- 格式化 M3U8LiveDLoadActivity 类代码缩进和空行
- 优化 M3U8LiveDLoadActivity 中的菜单点击事件处理逻辑
- 格式化 M3U8VodDLoadActivity 类代码缩进和空行
- 添加必要的 import 语句和空行分隔
- 统一代码风格和提高可读性
This commit is contained in:
2026-07-25 19:02:09 +08:00
parent 8b74586403
commit 31cee5b0f5
28 changed files with 2109 additions and 1941 deletions

View File

@@ -1,8 +1,12 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
android {
namespace "com.lyy.frame"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -14,22 +18,35 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug{
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
dataBinding true
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
@@ -38,10 +55,12 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
testImplementation 'junit:junit:4.12'
api "androidx.appcompat:appcompat:${rootProject.ext.XAppcompatVersion}"
api 'com.google.code.gson:gson:2.8.2'
api 'io.reactivex:rxandroid:1.2.0'
api 'io.reactivex:rxjava:1.1.5'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.arialyy.aria"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -10,19 +12,29 @@ android {
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
}
buildTypes {
debug{
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
@@ -33,7 +45,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'core'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -4,16 +4,16 @@ tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'annotations'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -3,8 +3,8 @@ apply plugin: 'java'
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
@@ -16,7 +16,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'compiler'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.example.ariaftpcomponent"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -14,19 +16,25 @@ android {
consumerProguardFiles 'consumer-rules.pro'
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug{
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
@@ -36,7 +44,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'ftp'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.arialyy.aria.http"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -13,18 +15,25 @@ android {
consumerProguardFiles 'consumer-rules.pro'
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug{
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
@@ -35,7 +44,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'http'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,2 +1 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arialyy.aria.http" />
<manifest package="com.arialyy.aria.http" />

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.arialyy.aria.m3u8"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -14,18 +16,25 @@ android {
consumerProguardFiles 'consumer-rules.pro'
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug{
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
@@ -37,7 +46,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'm3u8'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,2 +1 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arialyy.aria.m3u8" />
<manifest package="com.arialyy.aria.m3u8" />

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.arialyy.aria.publiccomponent"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -14,20 +16,26 @@ android {
consumerProguardFiles 'consumer-rules.pro'
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug{
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
@@ -36,7 +44,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'public'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
android {
namespace "com.arialyy.aria.sftp"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
@@ -14,18 +16,25 @@ android {
consumerProguardFiles 'consumer-rules.pro'
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
debug{
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
@@ -38,7 +47,7 @@ dependencies {
}
//apply from: 'bintray-release.gradle'
ext{
ext {
PUBLISH_ARTIFACT_ID = 'sftp'
}
apply from: '../gradle/mavenCentral-release.gradle'

View File

@@ -1,2 +1 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arialyy.aria.sftp" />
<manifest package="com.arialyy.aria.sftp" />

View File

@@ -5,13 +5,17 @@ plugins {
}
android {
namespace "com.arialyy.simple"
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.arialyy.simple"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
@@ -20,6 +24,25 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
dataBinding true
buildConfig true
}
signingConfigs {
release {
storeFile file("lyy.keystore")
@@ -35,6 +58,7 @@ android {
debuggable true
minifyEnabled false //混淆
}
release {
zipAlignEnabled true
minifyEnabled true
@@ -43,18 +67,11 @@ android {
}
}
dataBinding {
enabled = true
}
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor'
merge 'META-INF/services/com.arialyy.aria.core.inf.IUtil'
}
lintOptions {
abortOnError false
}
}
dependencies {
@@ -65,16 +82,18 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:${rootProject.ext.kotlin_version}"
api 'com.github.PhilJay:MPAndroidChart:v3.0.3'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.pddstudio:highlightjs-android:1.5.0'
implementation 'org.greenrobot:eventbus:3.1.1'
implementation project(':AppFrame')
implementation project(':AppFrame')
// aria
kapt project(':AriaCompiler')
implementation project(':Aria')

View File

@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:sharedUserId="com.arialyy"
package="com.arialyy.simple">
package="com.arialyy.simple"
android:sharedUserId="com.arialyy">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name="com.arialyy.simple.base.BaseApplication"
@@ -19,6 +25,7 @@
<!--android:name=".MainActivity"-->
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -27,7 +34,7 @@
</intent-filter>
</activity>
<activity android:name=".core.download.fragment.MultiFragmentActivity"/>
<activity android:name=".core.download.fragment.MultiFragmentActivity" />
<activity android:name=".core.upload.SFtpUploadActivity" />
<activity android:name=".core.download.SFtpDownloadActivity" />
<activity android:name=".core.download.DownloadActivity" />
@@ -61,12 +68,10 @@
android:resource="@xml/aria_fileprovider_paths" />
</provider>
<service android:name=".core.download.service.DownloadService" />
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<service
android:name=".core.download.service.DownloadService"
android:exported="false" />
<uses-permission android:name="android.permission.INTERNET" />
</application>
</manifest>

View File

@@ -3,12 +3,14 @@ package com.arialyy.simple;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.download.DTaskWrapper;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.orm.DbEntity;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityDbTestBinding;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -25,15 +27,13 @@ public class DbTestActivity extends BaseActivity<ActivityDbTestBinding> {
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.insert:
int id = view.getId();
if (id == R.id.insert) {
insertManyRecord(10000);
break;
case R.id.search:
break;
case R.id.search_all:
} else if (id == R.id.search) {
} else if (id == R.id.search_all) {
searchAll();
break;
}
}

View File

@@ -21,6 +21,7 @@ import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
@@ -49,7 +50,8 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener {
init();
}
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.dialog_download;
}
@@ -74,15 +76,15 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
int id = view.getId();
if (id == R.id.start) {
if (mTaskId == -1) {
mTaskId = Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/女神危机.apk")
.create();
mStart.setText(getContext().getString(R.string.stop));
break;
return;
}
if (Aria.download(this).load(mTaskId).isRunning()) {
Aria.download(this).load(mTaskId).stop();
@@ -91,37 +93,39 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener {
Aria.download(this).load(mTaskId).resume();
mStart.setText(getContext().getString(R.string.stop));
}
break;
case R.id.cancel:
} else if (id == R.id.cancel) {
Aria.download(this).load(mTaskId).cancel();
mTaskId = -1;
mStart.setText(getContext().getString(R.string.start));
break;
}
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
@Download.onTaskPre
public void onTaskPre(DownloadTask task) {
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
@Download.onTaskStop
public void onTaskStop(DownloadTask task) {
mSpeed.setText(task.getConvertSpeed());
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
@Download.onTaskCancel
public void onTaskCancel(DownloadTask task) {
mPb.setProgress(0);
mSpeed.setText(task.getConvertSpeed());
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
@Download.onTaskRunning
public void onTaskRunning(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mPb.setProgress(task.getPercent());
mSpeed.setText(task.getConvertSpeed());
}
}
@Override protected void dataCallback(int result, Object obj) {
@Override
protected void dataCallback(int result, Object obj) {
}

View File

@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Toast;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
@@ -19,7 +20,8 @@ import com.arialyy.simple.util.AppUtil;
/**
* Created by lyy on 2017/8/8.
*/
@SuppressLint("ValidFragment") public class DownloadDialogFragment
@SuppressLint("ValidFragment")
public class DownloadDialogFragment
extends BaseDialog<DialogFragmentDownloadBinding> implements View.OnClickListener {
private DownloadEntity mEntity;
@@ -31,7 +33,8 @@ import com.arialyy.simple.util.AppUtil;
super(obj);
}
@Override protected void init(Bundle savedInstanceState) {
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.download(this).register();
mEntity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
@@ -49,23 +52,28 @@ import com.arialyy.simple.util.AppUtil;
mRootView.findViewById(R.id.cancel).setOnClickListener(this);
}
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.dialog_fragment_download;
}
@Override public void onDestroy() {
@Override
public void onDestroy() {
super.onDestroy();
Aria.download(this).unRegister();
}
@Download.onPre(DOWNLOAD_URL) protected void onPre(DownloadTask task) {
@Download.onPre(DOWNLOAD_URL)
protected void onPre(DownloadTask task) {
}
@Download.onTaskStart(DOWNLOAD_URL) void taskStart(DownloadTask task) {
@Download.onTaskStart(DOWNLOAD_URL)
void taskStart(DownloadTask task) {
getBinding().setFileSize(task.getConvertFileSize());
}
@Download.onTaskRunning(DOWNLOAD_URL) protected void running(DownloadTask task) {
@Download.onTaskRunning(DOWNLOAD_URL)
protected void running(DownloadTask task) {
long len = task.getFileSize();
if (len == 0) {
getBinding().setProgress(0);
@@ -75,39 +83,44 @@ import com.arialyy.simple.util.AppUtil;
getBinding().setSpeed(task.getConvertSpeed());
}
@Download.onTaskResume(DOWNLOAD_URL) void taskResume(DownloadTask task) {
@Download.onTaskResume(DOWNLOAD_URL)
void taskResume(DownloadTask task) {
}
@Download.onTaskStop(DOWNLOAD_URL) void taskStop(DownloadTask task) {
@Download.onTaskStop(DOWNLOAD_URL)
void taskStop(DownloadTask task) {
getBinding().setSpeed("");
}
@Download.onTaskCancel(DOWNLOAD_URL) void taskCancel(DownloadTask task) {
@Download.onTaskCancel(DOWNLOAD_URL)
void taskCancel(DownloadTask task) {
getBinding().setProgress(0);
Toast.makeText(getContext(), "取消下载", Toast.LENGTH_SHORT).show();
getBinding().setSpeed("");
}
@Download.onTaskFail(DOWNLOAD_URL) void taskFail(DownloadTask task) {
@Download.onTaskFail(DOWNLOAD_URL)
void taskFail(DownloadTask task) {
Toast.makeText(getContext(), "下载失败", Toast.LENGTH_SHORT).show();
}
@Download.onTaskComplete(DOWNLOAD_URL) void taskComplete(DownloadTask task) {
@Download.onTaskComplete(DOWNLOAD_URL)
void taskComplete(DownloadTask task) {
getBinding().setProgress(100);
Toast.makeText(getContext(), "下载完成", Toast.LENGTH_SHORT).show();
getBinding().setSpeed("");
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
int id = view.getId();
if (id == R.id.start) {
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/放置江湖.apk")
.create();
getBinding().setStateStr(getString(R.string.stop));
break;
return;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
@@ -116,13 +129,10 @@ import com.arialyy.simple.util.AppUtil;
Aria.download(this).load(mEntity.getId()).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
} else if (id == R.id.cancel) {
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
break;
}
}
}

View File

@@ -23,6 +23,7 @@ import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
@@ -84,15 +85,15 @@ public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickL
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
int id = view.getId();
if (id == R.id.start) {
if (mTaskId != -1) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/消消乐.apk")
.create();
mStart.setText(getContext().getString(R.string.stop));
break;
return;
}
if (Aria.download(this).load(mTaskId).isRunning()) {
Aria.download(this).load(mTaskId).stop();
@@ -101,14 +102,10 @@ public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickL
Aria.download(this).load(mTaskId).resume();
mStart.setText(getContext().getString(R.string.stop));
}
break;
case R.id.cancel:
} else if (id == R.id.cancel) {
Aria.download(this).load(mTaskId).cancel();
mStart.setText(getContext().getResources().getString(R.string.start));
mTaskId = -1;
break;
}
}

View File

@@ -21,8 +21,10 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.AbsEntity;
@@ -36,6 +38,7 @@ import com.arialyy.simple.core.download.mutil.DownloadAdapter;
import com.arialyy.simple.databinding.ActivityHighestPriorityBinding;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -62,11 +65,13 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
private List<AbsEntity> mData = new ArrayList<>();
private Set<String> mRecord = new HashSet<>();
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.activity_highest_priority;
}
@Override protected void init(Bundle savedInstanceState) {
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
mPb = findViewById(R.id.progressBar);
mStart = findViewById(R.id.start);
@@ -110,14 +115,16 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mList.setAdapter(mAdapter);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_highest_priority, menu);
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_task:
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.add_task) {
List<DownloadEntity> temp = getModule(DownloadModule.class).getHighestTestList();
for (DownloadEntity entity : temp) {
String url = entity.getUrl();
@@ -128,8 +135,7 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mRecord.add(url);
}
mAdapter.notifyDataSetChanged();
break;
case R.id.help:
} else if (itemId == R.id.help) {
String title = "最高优先级任务介绍";
String msg = " 将任务设置为最高优先级任务,最高优先级任务有以下特点:\n"
+ " 1、在下载队列中有且只有一个最高优先级任务\n"
@@ -139,14 +145,13 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
+ " 5、如果下载队列中已经满了则会停止队尾的任务当高优先级任务完成后该队尾任务将自动执行\n"
+ " 6、把任务设置为最高优先级任务后将自动执行任务不需要重新调用start()启动任务";
showMsgDialog(title, msg);
break;
}
return true;
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
int id = view.getId();
if (id == R.id.start) {
if (AppUtil.chekEntityValid(mEntity)) {
String text = ((TextView) view).getText().toString();
if (text.equals("重新开始?") || text.equals("开始")) {
@@ -155,18 +160,15 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
}
}
((TextView) view).setText(getString(R.string.stop));
break;
case R.id.stop:
} else if (id == R.id.stop) {
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).stop();
}
((TextView) view).setText(getString(R.string.resume));
break;
case R.id.cancel:
} else if (id == R.id.cancel) {
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
break;
}
}
@@ -178,32 +180,37 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mStop.setEnabled(!state);
}
@Download.onPre public void onPre(DownloadTask task) {
@Download.onPre
public void onPre(DownloadTask task) {
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
@Download.onTaskPre
public void onTaskPre(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mSize.setText(task.getConvertFileSize());
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStart public void onTaskStart(DownloadTask task) {
@Download.onTaskStart
public void onTaskStart(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskResume public void onTaskResume(DownloadTask task) {
@Download.onTaskResume
public void onTaskResume(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
@Download.onTaskStop
public void onTaskStop(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("恢复");
@@ -212,7 +219,8 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
@Download.onTaskCancel
public void onTaskCancel(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("开始");
@@ -221,7 +229,8 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskFail public void onTaskFail(DownloadTask task) {
@Download.onTaskFail
public void onTaskFail(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
} else {
@@ -229,7 +238,8 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
}
}
@Download.onTaskComplete public void onTaskComplete(DownloadTask task) {
@Download.onTaskComplete
public void onTaskComplete(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("重新开始");
@@ -239,7 +249,8 @@ public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorit
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
@Download.onTaskRunning
public void onTaskRunning(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mPb.setProgress(task.getPercent());
mSpeed.setText(task.getConvertSpeed());

View File

@@ -26,28 +26,27 @@ import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.HttpOption;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTaskListener;
import com.arialyy.aria.core.download.target.HttpNormalTarget;
import com.arialyy.aria.core.listener.ISchedulers;
import com.arialyy.aria.core.processor.IHttpFileLenAdapter;
import com.arialyy.aria.core.scheduler.NormalTaskListenerInterface;
import com.arialyy.aria.core.task.DownloadTask;
import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.aria.util.FileUtil;
import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivitySingleBinding;
import com.arialyy.simple.widget.ProgressLayout;
import java.io.File;
import java.util.List;
import java.util.Map;
@@ -93,7 +92,8 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
mModule = ViewModelProviders.of(this).get(HttpDownloadModule.class);
mModule.getHttpDownloadInfo(this).observe(this, new Observer<DownloadEntity>() {
@Override public void onChanged(@Nullable DownloadEntity entity) {
@Override
public void onChanged(@Nullable DownloadEntity entity) {
if (entity == null) {
return;
}
@@ -104,23 +104,27 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
}
});
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
@Override public void create(View v, AbsEntity entity) {
@Override
public void create(View v, AbsEntity entity) {
startD();
}
@Override public void stop(View v, AbsEntity entity) {
@Override
public void stop(View v, AbsEntity entity) {
Aria.download(this)
.load(mTaskId)
.stop();
}
@Override public void resume(View v, AbsEntity entity) {
@Override
public void resume(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId)
//.updateUrl(mUrl)
.resume();
}
@Override public void cancel(View v, AbsEntity entity) {
@Override
public void cancel(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId).cancel(false);
// //1. 删除本地文件目录
// File localDirFile = new File(mFilePath);
@@ -155,29 +159,23 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
public boolean onMenuItemClick(MenuItem item) {
int speed = -1;
String msg = "";
switch (item.getItemId()) {
case R.id.help:
int itemId = item.getItemId();
if (itemId == R.id.help) {
msg = "一些小知识点:\n"
+ "1、你可以在注解中增加链接用于指定被注解的方法只能被特定的下载任务回调以防止progress乱跳\n"
+ "2、当遇到网络慢的情况时你可以先使用onPre()更新UI界面待连接成功时再在onTaskPre()获取完整的task数据然后给UI界面设置正确的数据\n"
+ "3、你可以在界面初始化时通过Aria.download(this).load(URL).getPercent()等方法快速获取相关任务的一些数据";
showMsgDialog("tip", msg);
break;
case R.id.speed_0:
} else if (itemId == R.id.speed_0) {
speed = 0;
break;
case R.id.speed_128:
} else if (itemId == R.id.speed_128) {
speed = 128;
break;
case R.id.speed_256:
} else if (itemId == R.id.speed_256) {
speed = 256;
break;
case R.id.speed_512:
} else if (itemId == R.id.speed_512) {
speed = 512;
break;
case R.id.speed_1m:
} else if (itemId == R.id.speed_1m) {
speed = 1024;
break;
}
if (speed > -1) {
msg = item.getTitle().toString();
@@ -299,12 +297,14 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
//Aria.download(this).unRegister();
}
@Override public boolean dispatchTouchEvent(MotionEvent ev) {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
static class FileLenAdapter implements IHttpFileLenAdapter {
@Override public long handleFileLen(Map<String, List<String>> headers) {
@Override
public long handleFileLen(Map<String, List<String>> headers) {
List<String> sLength = headers.get("Content-Length");
if (sLength == null || sLength.isEmpty()) {

View File

@@ -24,6 +24,7 @@ import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
@@ -33,12 +34,14 @@ import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseDialog;
import com.arialyy.simple.databinding.DialogSubTaskHandlerBinding;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import java.util.List;
/**
* Created by lyy on 2017/9/5.
*/
@SuppressLint("ValidFragment") public class ChildHandleDialog
@SuppressLint("ValidFragment")
public class ChildHandleDialog
extends BaseDialog<DialogSubTaskHandlerBinding> implements View.OnClickListener {
TextView mSub;
TextView mGroup;
@@ -57,13 +60,15 @@ import java.util.List;
mChildName = childEntity.getFileName();
}
@Override protected void init(Bundle savedInstanceState) {
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.download(getContext()).register();
initWidget();
}
@Override public void onDestroy() {
@Override
public void onDestroy() {
super.onDestroy();
Aria.download(getContext()).unRegister();
}
@@ -88,25 +93,29 @@ import java.util.List;
window.setWindowAnimations(R.style.dialogStyle);
}
@DownloadGroup.onSubTaskRunning void onSubTaskRunning(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskRunning
void onSubTaskRunning(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
mPb.setProgress(subEntity.getPercent());
}
@DownloadGroup.onSubTaskPre void onSubTaskPre(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskPre
void onSubTaskPre(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
L.d(TAG, subEntity.getPercent() + "");
}
@DownloadGroup.onSubTaskStop void onSubTaskStop(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskStop
void onSubTaskStop(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
mSub.setText("子任务:" + mChildName + ",状态:任务停止");
}
@DownloadGroup.onSubTaskStart void onSubTaskStart(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskStart
void onSubTaskStart(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
mSub.setText("子任务:" + mChildName + ",状态:下载中");
@@ -118,45 +127,47 @@ import java.util.List;
// mSub.setText("子任务:" + mChildName + ",状态:取消下载");
//}
@DownloadGroup.onSubTaskComplete void onSubTaskComplete(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskComplete
void onSubTaskComplete(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
mSub.setText("子任务:" + mChildName + ",状态:任务完成");
mPb.setProgress(100);
}
@DownloadGroup.onSubTaskFail void onSubTaskFail(DownloadGroupTask groupTask,
@DownloadGroup.onSubTaskFail
void onSubTaskFail(DownloadGroupTask groupTask,
DownloadEntity subEntity) {
if (!subEntity.getUrl().equals(mChildEntity.getUrl())) return;
L.d(TAG, subEntity.getPercent() + "");
}
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.dialog_sub_task_handler;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
int id = view.getId();
if (id == R.id.start) {
Aria.download(getContext())
.loadGroup(mUrls)
.getSubTaskManager()
.startSubTask(mChildEntity.getUrl());
break;
case R.id.stop:
} else if (id == R.id.stop) {
Aria.download(getContext())
.loadGroup(mUrls)
.getSubTaskManager()
.stopSubTask(mChildEntity.getUrl());
break;
//case R.id.cancel:
// Aria.download(this).load(mUrls).getSubTaskManager().cancelSubTask(mChildEntity.getUrl());
// break;
}
}
@Override protected void dataCallback(int result, Object obj) {
@Override
protected void dataCallback(int result, Object obj) {
}
}

View File

@@ -22,9 +22,11 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.arialyy.annotations.Download;
import com.arialyy.annotations.M3U8;
import com.arialyy.aria.core.Aria;
@@ -43,6 +45,7 @@ import com.arialyy.simple.common.ModifyPathDialog;
import com.arialyy.simple.common.ModifyUrlDialog;
import com.arialyy.simple.databinding.ActivityM3u8LiveBinding;
import com.arialyy.simple.widget.ProgressLayout;
import java.io.File;
public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding> {
@@ -60,7 +63,8 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
mModule = ViewModelProviders.of(this).get(M3U8LiveModule.class);
mModule.getHttpDownloadInfo(this).observe(this, new Observer<DownloadEntity>() {
@Override public void onChanged(@Nullable DownloadEntity entity) {
@Override
public void onChanged(@Nullable DownloadEntity entity) {
if (entity == null) {
return;
}
@@ -71,19 +75,23 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
}
});
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
@Override public void create(View v, AbsEntity entity) {
@Override
public void create(View v, AbsEntity entity) {
startD();
}
@Override public void stop(View v, AbsEntity entity) {
@Override
public void stop(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId).stop();
}
@Override public void resume(View v, AbsEntity entity) {
@Override
public void resume(View v, AbsEntity entity) {
ALog.d(TAG, "m3u8 live 不支持恢复");
}
@Override public void cancel(View v, AbsEntity entity) {
@Override
public void cancel(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId).cancel(true);
mTaskId = -1;
}
@@ -100,29 +108,23 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
public boolean onMenuItemClick(MenuItem item) {
int speed = -1;
String msg = "";
switch (item.getItemId()) {
case R.id.help:
int itemId = item.getItemId();
if (itemId == R.id.help) {
msg = "一些小知识点:\n"
+ "1、你可以在注解中增加链接用于指定被注解的方法只能被特定的下载任务回调以防止progress乱跳\n"
+ "2、当遇到网络慢的情况时你可以先使用onPre()更新UI界面待连接成功时再在onTaskPre()获取完整的task数据然后给UI界面设置正确的数据\n"
+ "3、你可以在界面初始化时通过Aria.download(this).load(URL).getPercent()等方法快速获取相关任务的一些数据";
showMsgDialog("tip", msg);
break;
case R.id.speed_0:
} else if (itemId == R.id.speed_0) {
speed = 0;
break;
case R.id.speed_128:
} else if (itemId == R.id.speed_128) {
speed = 128;
break;
case R.id.speed_256:
} else if (itemId == R.id.speed_256) {
speed = 256;
break;
case R.id.speed_512:
} else if (itemId == R.id.speed_512) {
speed = 512;
break;
case R.id.speed_1m:
} else if (itemId == R.id.speed_1m) {
speed = 1024;
break;
}
if (speed > -1) {
msg = item.getTitle().toString();
@@ -248,7 +250,8 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
return option;
}
@Override protected void dataCallback(int result, Object data) {
@Override
protected void dataCallback(int result, Object data) {
super.dataCallback(result, data);
if (result == ModifyUrlDialog.MODIFY_URL_DIALOG_RESULT) {
mModule.uploadUrl(this, String.valueOf(data));
@@ -258,7 +261,8 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
}
static class LiveTsUrlConverter implements ILiveTsUrlConverter {
@Override public String convert(String m3u8Url, String tsUrl) {
@Override
public String convert(String m3u8Url, String tsUrl) {
int index = m3u8Url.lastIndexOf("/");
String parentUrl = m3u8Url.substring(0, index + 1);
return parentUrl + tsUrl;
@@ -267,7 +271,8 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
static class BandWidthUrlConverter implements IBandWidthUrlConverter {
@Override public String convert(String m3u8Url, String bandWidthUrl) {
@Override
public String convert(String m3u8Url, String bandWidthUrl) {
int peerIndex = m3u8Url.lastIndexOf("/");
return m3u8Url.substring(0, peerIndex + 1) + bandWidthUrl;
}

View File

@@ -24,14 +24,15 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.SeekBar;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.arialyy.annotations.Download;
import com.arialyy.annotations.M3U8;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.HttpOption;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.M3U8Entity;
import com.arialyy.aria.core.download.m3u8.M3U8VodOption;
@@ -50,13 +51,14 @@ import com.arialyy.simple.common.ModifyUrlDialog;
import com.arialyy.simple.databinding.ActivityM3u8VodBinding;
import com.arialyy.simple.to.PeerIndex;
import com.arialyy.simple.widget.ProgressLayout;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.util.List;
public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
private String mUrl;
@@ -73,7 +75,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
mModule = ViewModelProviders.of(this).get(M3U8VodModule.class);
mModule.getHttpDownloadInfo(this).observe(this, new Observer<DownloadEntity>() {
@Override public void onChanged(@Nullable DownloadEntity entity) {
@Override
public void onChanged(@Nullable DownloadEntity entity) {
if (entity == null) {
return;
}
@@ -91,35 +94,42 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
}
});
getBinding().seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override public void onStartTrackingTouch(SeekBar seekBar) {
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override public void onStopTrackingTouch(SeekBar seekBar) {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Aria.download(this).load(mTaskId).m3u8VodOption().jumPeerIndex(seekBar.getProgress());
}
});
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
@Override public void create(View v, AbsEntity entity) {
@Override
public void create(View v, AbsEntity entity) {
startD();
}
@Override public void stop(View v, AbsEntity entity) {
@Override
public void stop(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId).stop();
}
@Override public void resume(View v, AbsEntity entity) {
@Override
public void resume(View v, AbsEntity entity) {
Aria.download(this)
.load(mTaskId)
.m3u8VodOption(getM3U8Option())
.resume();
}
@Override public void cancel(View v, AbsEntity entity) {
@Override
public void cancel(View v, AbsEntity entity) {
Aria.download(this).load(mTaskId).cancel(true);
mTaskId = -1;
}
@@ -138,12 +148,14 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
dialog.show(getSupportFragmentManager(), "ModifyPathDialog");
}
@Override protected void onStart() {
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override protected void onStop() {
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@@ -163,29 +175,23 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
public boolean onMenuItemClick(MenuItem item) {
int speed = -1;
String msg = "";
switch (item.getItemId()) {
case R.id.help:
int itemId = item.getItemId();
if (itemId == R.id.help) {
msg = "一些小知识点:\n"
+ "1、你可以在注解中增加链接用于指定被注解的方法只能被特定的下载任务回调以防止progress乱跳\n"
+ "2、当遇到网络慢的情况时你可以先使用onPre()更新UI界面待连接成功时再在onTaskPre()获取完整的task数据然后给UI界面设置正确的数据\n"
+ "3、你可以在界面初始化时通过Aria.download(this).load(URL).getPercent()等方法快速获取相关任务的一些数据";
showMsgDialog("tip", msg);
break;
case R.id.speed_0:
} else if (itemId == R.id.speed_0) {
speed = 0;
break;
case R.id.speed_128:
} else if (itemId == R.id.speed_128) {
speed = 128;
break;
case R.id.speed_256:
} else if (itemId == R.id.speed_256) {
speed = 256;
break;
case R.id.speed_512:
} else if (itemId == R.id.speed_512) {
speed = 512;
break;
case R.id.speed_1m:
} else if (itemId == R.id.speed_1m) {
speed = 1024;
break;
}
if (speed > -1) {
msg = item.getTitle().toString();
@@ -319,7 +325,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
return option;
}
@Override protected void dataCallback(int result, Object data) {
@Override
protected void dataCallback(int result, Object data) {
super.dataCallback(result, data);
if (result == ModifyUrlDialog.MODIFY_URL_DIALOG_RESULT) {
mModule.uploadUrl(this, String.valueOf(data));
@@ -329,7 +336,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
}
static class VodTsUrlConverter implements IVodTsUrlConverter {
@Override public List<String> convert(String m3u8Url, List<String> tsUrls) {
@Override
public List<String> convert(String m3u8Url, List<String> tsUrls) {
Uri uri = Uri.parse(m3u8Url);
//String parentUrl = "http://devimages.apple.com/iphone/samples/bipbop/gear1/";
//String parentUrl = "http://youku.cdn7-okzy.com/20200123/16815_fbe419ed/1000k/hls/";
@@ -358,7 +366,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
static class BandWidthUrlConverter implements IBandWidthUrlConverter {
@Override public String convert(String m3u8Url, String bandWidthUrl) {
@Override
public String convert(String m3u8Url, String bandWidthUrl) {
int index = m3u8Url.lastIndexOf("/");
return m3u8Url.substring(0, index + 1) + bandWidthUrl;
}
@@ -366,7 +375,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
static class KeyUrlConverter implements IKeyUrlConverter {
@Override public String convert(String m3u8Url, String tsListUrl, String keyUrl) {
@Override
public String convert(String m3u8Url, String tsListUrl, String keyUrl) {
ALog.d("TAG", "convertUrl....");
return null;
}

View File

@@ -20,9 +20,11 @@ import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.arialyy.annotations.Download;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
@@ -35,6 +37,7 @@ import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.core.download.DownloadModule;
import com.arialyy.simple.databinding.ActivityMultiBinding;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -48,11 +51,13 @@ public class MultiTaskListActivity extends BaseActivity<ActivityMultiBinding> {
private FileListAdapter mAdapter;
List<FileListEntity> mData = new ArrayList<>();
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.activity_multi;
}
@Override protected void init(Bundle savedInstanceState) {
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.download(this).register();
setTitle("多任务下载");
@@ -67,84 +72,94 @@ public class MultiTaskListActivity extends BaseActivity<ActivityMultiBinding> {
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.num:
int id = view.getId();
if (id == R.id.num) {
DownloadNumDialog dialog = new DownloadNumDialog(this);
dialog.show(getSupportFragmentManager(), "download_num");
break;
case R.id.stop_all:
//Aria.download(this).stopAllTask();
} else if (id == R.id.stop_all) {//Aria.download(this).stopAllTask();
List<AbsEntity> list = Aria.download(this).getTotalTaskList();
for (AbsEntity entity : list){
for (AbsEntity entity : list) {
Aria.download(this).load(entity.getId()).cancel(true);
}
//Aria.download(this).removeAllTask(false);
break;
case R.id.turn:
} else if (id == R.id.turn) {
startActivity(new Intent(this, MultiDownloadActivity.class));
break;
}
}
@Download.onWait void taskWait(DownloadTask task) {
@Download.onWait
void taskWait(DownloadTask task) {
Log.d(TAG, "wait ==> " + task.getDownloadEntity().getFileName());
}
@Download.onTaskStart void taskStart(DownloadTask task) {
@Download.onTaskStart
void taskStart(DownloadTask task) {
mAdapter.updateBtState(task.getKey(), false);
}
@Download.onTaskResume void taskResume(DownloadTask task) {
@Download.onTaskResume
void taskResume(DownloadTask task) {
mAdapter.updateBtState(task.getKey(), false);
}
@Download.onTaskStop void taskStop(DownloadTask task) {
@Download.onTaskStop
void taskStop(DownloadTask task) {
mAdapter.updateBtState(task.getKey(), true);
}
@Download.onTaskCancel void taskCancel(DownloadTask task) {
@Download.onTaskCancel
void taskCancel(DownloadTask task) {
mAdapter.updateBtState(task.getKey(), true);
}
@Download.onTaskFail void taskFail(DownloadTask task) {
if (task == null || task.getEntity() == null){
@Download.onTaskFail
void taskFail(DownloadTask task) {
if (task == null || task.getEntity() == null) {
return;
}
mAdapter.updateBtState(task.getKey(), true);
}
@Download.onTaskComplete void taskComplete(DownloadTask task) {
@Download.onTaskComplete
void taskComplete(DownloadTask task) {
Log.d(TAG, FileUtil.getFileMD5(new File(task.getFilePath())));
}
//############################### 任务组 ##############################
@DownloadGroup.onTaskComplete void groupTaskComplete(DownloadGroupTask task) {
@DownloadGroup.onTaskComplete
void groupTaskComplete(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), true);
}
@DownloadGroup.onTaskStart void groupTaskStart(DownloadGroupTask task) {
@DownloadGroup.onTaskStart
void groupTaskStart(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), false);
}
@DownloadGroup.onTaskResume void groupTaskResume(DownloadGroupTask task) {
@DownloadGroup.onTaskResume
void groupTaskResume(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), false);
}
@DownloadGroup.onWait void groupTaskWait(DownloadGroupTask task) {
@DownloadGroup.onWait
void groupTaskWait(DownloadGroupTask task) {
ALog.d(TAG, String.format("group【%s】wait---", task.getTaskName()));
mAdapter.updateBtState(task.getKey(), true);
}
@DownloadGroup.onTaskStop void groupTaskStop(DownloadGroupTask task) {
@DownloadGroup.onTaskStop
void groupTaskStop(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), true);
Log.d(TAG, String.format("group【%s】stop", task.getTaskName()));
}
@DownloadGroup.onTaskCancel void groupTaskCancel(DownloadGroupTask task) {
@DownloadGroup.onTaskCancel
void groupTaskCancel(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), true);
}
@DownloadGroup.onTaskFail void groupTaskFail(DownloadGroupTask task) {
@DownloadGroup.onTaskFail
void groupTaskFail(DownloadGroupTask task) {
if (task == null) {
return;
}
@@ -152,11 +167,13 @@ public class MultiTaskListActivity extends BaseActivity<ActivityMultiBinding> {
Log.d(TAG, String.format("group【%s】fail", task.getTaskName()));
}
@DownloadGroup.onTaskComplete void taskComplete(DownloadGroupTask task) {
@DownloadGroup.onTaskComplete
void taskComplete(DownloadGroupTask task) {
mAdapter.updateBtState(task.getKey(), true);
}
@Override protected void dataCallback(int result, Object data) {
@Override
protected void dataCallback(int result, Object data) {
super.dataCallback(result, data);
if (result == DownloadNumDialog.RESULT_CODE) {
Aria.get(this).getDownloadConfig().setMaxTaskNum(Integer.parseInt(data + ""));

View File

@@ -2,8 +2,8 @@ package com.arialyy.simple.core.test;
import android.os.Bundle;
import android.view.View;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DTaskWrapper;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityTestBinding;
@@ -32,11 +32,13 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
//private String URL = "https://www.bilibili.com/bangumi/play/ep77693";
//private String URL = "http://cn-hbsjz-cmcc-v-03.acgvideo.com/upgcxcode/63/82/5108263/5108263-1-80.flv?expires=1530178500&platform=pc&ssig=vr7gLl0duyqWqSMnIpzaDA&oi=3746029570&nfa=BpfiWF+i4mNW8KzjZFHzBQ==&dynamic=1&hfa=2030547937&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=&trid=3476be01a9254115b15f8cc7198600fe&nfc=1";
@Override protected int setLayoutId() {
@Override
protected int setLayoutId() {
return R.layout.activity_test;
}
@Override protected void init(Bundle savedInstanceState) {
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.init(this);
mBar.setVisibility(View.GONE);
@@ -45,15 +47,12 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
//module.create(URL);
int id = view.getId();
if (id == R.id.start) {//module.create(URL);
module.startFtp(URL);
break;
case R.id.stop:
} else if (id == R.id.stop) {
module.stop(URL);
break;
case R.id.cancel:
} else if (id == R.id.cancel) {
module.cancel(URL);
//String newUrl = "ftp://192.168.29.140:21/download/11SDK_Demo-release.apk";
//Aria.download(this)
@@ -62,11 +61,11 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
// .login("lao", "123456")
// .setFilePath(Environment.getExternalStorageDirectory().getPath() + "/")
// .create();
break;
}
}
@Override protected void onDestroy() {
@Override
protected void onDestroy() {
super.onDestroy();
module.unRegister();
}

View File

@@ -22,7 +22,9 @@ import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.appcompat.widget.AppCompatImageButton;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.AbsGroupEntity;
import com.arialyy.aria.core.common.AbsNormalEntity;
@@ -30,6 +32,7 @@ import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.simple.R;
import java.math.BigDecimal;
/**
@@ -97,7 +100,8 @@ public class ProgressLayout extends RelativeLayout implements View.OnClickListen
this.listener = listener;
}
@Override public void onClick(View v) {
@Override
public void onClick(View v) {
if (listener == null) {
ALog.e(TAG, "没有设置OnProgressLayoutBtListener");
return;
@@ -107,14 +111,12 @@ public class ProgressLayout extends RelativeLayout implements View.OnClickListen
return;
}
switch (v.getId()) {
case R.id.del_bt:
int id = v.getId();
if (id == R.id.del_bt) {
listener.cancel(v, entity);
initState();
break;
case R.id.handle_bt:
} else if (id == R.id.handle_bt) {
handleTask(v);
break;
}
}
@@ -206,7 +208,7 @@ public class ProgressLayout extends RelativeLayout implements View.OnClickListen
}
this.handleBt.setText(btStr);
this.speedOrState.setText(stateStr);
if (entity.getState() != IEntity.STATE_CANCEL){
if (entity.getState() != IEntity.STATE_CANCEL) {
this.pb.setProgress(entity.getPercent());
}
}

View File

@@ -81,10 +81,10 @@ ext {
mavenCentralDeveloperConnection = 'scm:git:ssh://github.com/AriaLyy/Aria.git'
mavenCentralTreeURL = 'https://github.com/AriaLyy/KeepassA/tree/master'
compileSdkVersion = 28
compileSdkVersion = 36
supportLibVersion = "27.1.1"
buildToolsVersion = "29.0.2"
targetSdkVersion = 28
buildToolsVersion = "36.0.0"
targetSdkVersion = 36
lifecycleVersion = "1.1.1"
minSdkVersion = 15

View File

@@ -82,17 +82,20 @@ afterEvaluate { project ->
release(MavenPublication) {
// groupId 等信息
groupId PUBLISH_GROUP_ID
artifactId PUBLISH_ARTIFACT_ID
artifactId project.PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION
if (isAndroidProject) {
// 移除R文件移除BuildConfig文件
generateReleaseBuildConfig.enabled = false
generateDebugBuildConfig.enabled = false
generateReleaseResValues.enabled = false
generateDebugResValues.enabled = false
project.tasks.findByName('generateReleaseBuildConfig')?.enabled = false
project.tasks.findByName('generateDebugBuildConfig')?.enabled = false
project.tasks.findByName('generateReleaseResValues')?.enabled = false
project.tasks.findByName('generateDebugResValues')?.enabled = false
// 使用了这个组件就不需要自己aar、pom.withxml了
from components.release
def releaseComponent = project.components.findByName('release')
if (releaseComponent != null) {
from releaseComponent
}
def variants = project.android.libraryVariants.findAll {
it.buildType.name.equalsIgnoreCase('debug')
@@ -102,15 +105,15 @@ afterEvaluate { project ->
def getAndroidJar = "${getAndroidSdkDirectory}/platforms/${project.android.compileSdkVersion}/android.jar"
task androidJavadocs(type: Javadoc, dependsOn: assembleDebug) {
def androidJavadocs = project.task("androidJavadocs", type: Javadoc, dependsOn: 'assembleDebug') {
println("开始打包aar")
source = variants.collect { it.getJavaCompileProvider().get().source }
classpath = files(
classpath = project.files(
getAndroidJar,
project.file("build/intermediates/classes/debug")
)
doFirst {
classpath += files(variants.collect { it.javaCompile.classpath.files })
classpath += project.files(variants.collect { it.javaCompile.classpath.files })
}
options {
links("http://docs.oracle.com/javase/7/docs/api/")
@@ -125,30 +128,31 @@ afterEvaluate { project ->
exclude "**/BuildConfig.class"
}
def cleanJavadocTask = task("cleanJavadocTask", type: Delete) {
def cleanJavadocTask = project.task("cleanJavadocTask", type: Delete) {
delete androidJavadocs.destinationDir
} as Task
}
project.clean.dependsOn(cleanJavadocTask)
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
baseName "${JAR_PREFIX}${project.name}"
def androidJavadocsJar = project.task("androidJavadocsJar", type: Jar, dependsOn: androidJavadocs) {
archiveClassifier = 'javadoc'
archiveBaseName = "${JAR_PREFIX}${project.name}"
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
def androidSourcesJar = project.task("androidSourcesJar", type: Jar) {
archiveClassifier = 'sources'
from project.android.sourceSets.main.java.source
baseName "${JAR_PREFIX}${project.name}"
archiveBaseName = "${JAR_PREFIX}${project.name}"
exclude "**/R.class"
exclude "**/BuildConfig.class"
}
task androidLibraryJar(type: Jar, dependsOn: compileDebugJavaWithJavac
/* == variant.javaCompile */) {
def compileDebugJavaWithJavac = project.tasks.findByName('compileDebugJavaWithJavac')
def androidLibraryJar = project.task("androidLibraryJar", type: Jar, dependsOn: 'compileDebugJavaWithJavac') {
// java 编译后的 class文件, build/intermediates/classes/debug/
if (compileDebugJavaWithJavac != null) {
from compileDebugJavaWithJavac.destinationDir
}
// kotlin 编译后的 class文件
from 'build/tmp/kotlin-classes/debug/'
// 指定需要被打包成 jar 的文件夹
@@ -156,7 +160,7 @@ afterEvaluate { project ->
exclude '**/R.class'
exclude '**/R$*.class'
exclude "**/BuildConfig.class"
baseName "${JAR_PREFIX}${project.name}-cache"
archiveBaseName = "${JAR_PREFIX}${project.name}-cache"
}
artifact androidLibraryJar
@@ -164,16 +168,19 @@ afterEvaluate { project ->
artifact androidJavadocsJar
} else if (project.plugins.hasPlugin('java')) {
from components.java
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
def javaComponent = project.components.findByName('java')
if (javaComponent != null) {
from javaComponent
}
task javadocsJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
def sourcesJar = project.task("sourcesJar", type: Jar, dependsOn: 'classes') {
archiveClassifier = 'sources'
from project.sourceSets.main.allSource
}
def javadocsJar = project.task("javadocsJar", type: Jar, dependsOn: 'javadoc') {
archiveClassifier = 'javadoc'
from project.javadoc.destinationDir
}
artifact sourcesJar
@@ -181,7 +188,7 @@ afterEvaluate { project ->
}
pom {
name = PUBLISH_ARTIFACT_ID
name = project.PUBLISH_ARTIFACT_ID
description = rootProject.ext.desc
url = rootProject.ext.website
licenses {