From 212d635f8572d7eb20d6df8138420e5e163a04a2 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Thu, 12 Jan 2017 11:28:13 +0800 Subject: [PATCH 1/4] .. --- .../java/com/arialyy/simple/single_task/SingleTaskActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java index 04639b8b..10da33dd 100644 --- a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java +++ b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java @@ -89,7 +89,7 @@ public class SingleTaskActivity extends BaseActivity { case DOWNLOAD_PRE: mSize.setText(CommonUtil.formatFileSize((Long) msg.obj)); setBtState(false); - mStart.setText("暂停"); + //mStart.setText("暂停"); break; case DOWNLOAD_FAILE: Toast.makeText(SingleTaskActivity.this, "下载失败", Toast.LENGTH_SHORT).show(); From 7cea89786561b48607436e2fa3bde1e09e2a2959 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Mon, 16 Jan 2017 19:18:31 +0800 Subject: [PATCH 2/4] .. --- .idea/misc.xml | 2 +- .../arialyy/aria/core/queue/DownloadTaskQueue.java | 11 ++++------- .../aria/core/scheduler/DownloadSchedulers.java | 6 +++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb68289..5d199810 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java index d4a8f86a..de033a65 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/DownloadTaskQueue.java @@ -33,9 +33,9 @@ import com.arialyy.aria.util.Configuration; * 下载任务队列 */ public class DownloadTaskQueue implements ITaskQueue { - private static final String TAG = "DownloadTaskQueue"; - private CachePool mCachePool = CachePool.getInstance(); - private ExecutePool mExecutePool = ExecutePool.getInstance(); + private static final String TAG = "DownloadTaskQueue"; + private CachePool mCachePool = CachePool.getInstance(); + private ExecutePool mExecutePool = ExecutePool.getInstance(); private Context mContext; //private IDownloadSchedulers mSchedulers; @@ -171,13 +171,10 @@ public class DownloadTaskQueue implements ITaskQueue { Task task = mExecutePool.getTask(entity.getDownloadUrl()); if (task != null) { Log.d(TAG, "从执行池删除任务,删除" + (mExecutePool.removeTask(task) ? "成功" : "失败")); - } else { - task = mCachePool.getTask(entity.getDownloadUrl()); } + task = mCachePool.getTask(entity.getDownloadUrl()); if (task != null) { Log.d(TAG, "从缓存池删除任务,删除" + (mCachePool.removeTask(task) ? "成功" : "失败")); - } else { - Log.w(TAG, "没有找到下载链接为【" + entity.getDownloadUrl() + "】的任务"); } } diff --git a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java index 22a7d283..25e9385c 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java +++ b/Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java @@ -121,15 +121,16 @@ public class DownloadSchedulers implements IDownloadSchedulers { case STOP: case CANCEL: mQueue.removeTask(entity); - mQueue.removeTask(entity); - if (mQueue.size() != Configuration.getInstance().getDownloadNum()) { + if (mQueue.size() < Configuration.getInstance().getDownloadNum()) { startNextTask(entity); } break; case COMPLETE: + mQueue.removeTask(entity); startNextTask(entity); break; case FAIL: + mQueue.removeTask(entity); handleFailTask(entity); break; } @@ -223,7 +224,6 @@ public class DownloadSchedulers implements IDownloadSchedulers { * @param entity 通过Handler传递的下载实体 */ @Override public void startNextTask(DownloadEntity entity) { - mQueue.removeTask(entity); Task newTask = mQueue.getNextTask(); if (newTask == null) { Log.w(TAG, "没有下一任务"); From 01ae7e2e5fd92dae7f48944f2789449a609d27b9 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Wed, 18 Jan 2017 09:43:41 +0800 Subject: [PATCH 3/4] .. --- .idea/misc.xml | 2 +- .../com/arialyy/aria/util/SSLContextUtil.java | 17 ++++++++++++++++- .../simple/single_task/SingleTaskActivity.java | 7 ------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb68289..5d199810 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java b/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java index b17da02e..af40e0de 100644 --- a/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/util/SSLContextUtil.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.arialyy.aria.util; import android.text.TextUtils; @@ -38,7 +53,7 @@ public class SSLContextUtil { * @param caPath 保存在assets目录下的CA证书完整路径 */ public static SSLContext getSSLContext(String caAlias, String caPath) { - if (TextUtils.isEmpty(caAlias) || TextUtils.isEmpty(caPath)){ + if (TextUtils.isEmpty(caAlias) || TextUtils.isEmpty(caPath)) { return null; } // Load CAs from an InputStream diff --git a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java index 10da33dd..82d62924 100644 --- a/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java +++ b/app/src/main/java/com/arialyy/simple/single_task/SingleTaskActivity.java @@ -119,11 +119,6 @@ public class SingleTaskActivity extends BaseActivity { mStart.setText("重新开始?"); mCancel.setEnabled(false); setBtState(true); - - //String path = Environment.getExternalStorageDirectory().getPath() + "/test.jpg"; - //Bitmap bm = BitmapFactory.decodeFile(path); - //mImg.setImageBitmap(bm); - break; } } @@ -201,8 +196,6 @@ public class SingleTaskActivity extends BaseActivity { .load(DOWNLOAD_URL) .setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk") .setDownloadName("test.apk") - //.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.jpg") - //.setDownloadName("test.jpg") .start(); } From 9bba3cd899d400aadfee511a0216183b34257944 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Wed, 18 Jan 2017 11:27:09 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0notification=E4=BE=8B?= =?UTF-8?q?=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/arialyy/simple/MainActivity.java | 5 + .../notification/SimpleNotification.java | 98 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 9 ++ 3 files changed, 112 insertions(+) create mode 100644 app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java diff --git a/app/src/main/java/com/arialyy/simple/MainActivity.java b/app/src/main/java/com/arialyy/simple/MainActivity.java index 33a10ee8..0df80bbc 100644 --- a/app/src/main/java/com/arialyy/simple/MainActivity.java +++ b/app/src/main/java/com/arialyy/simple/MainActivity.java @@ -33,6 +33,7 @@ import com.arialyy.simple.databinding.ActivityMainBinding; import com.arialyy.simple.dialog_task.DownloadDialog; import com.arialyy.simple.fragment_task.FragmentActivity; import com.arialyy.simple.multi_task.MultiTaskActivity; +import com.arialyy.simple.notification.SimpleNotification; import com.arialyy.simple.pop_task.DownloadPopupWindow; import com.arialyy.simple.single_task.SingleTaskActivity; @@ -104,6 +105,10 @@ public class MainActivity extends BaseActivity { case R.id.fragment_task: startActivity(new Intent(this, FragmentActivity.class)); break; + case R.id.notification: + SimpleNotification notification = new SimpleNotification(this); + notification.start(); + break; } } } \ No newline at end of file diff --git a/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java b/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java new file mode 100644 index 00000000..3d11fd69 --- /dev/null +++ b/app/src/main/java/com/arialyy/simple/notification/SimpleNotification.java @@ -0,0 +1,98 @@ +package com.arialyy.simple.notification; + +import android.app.NotificationManager; +import android.content.Context; +import android.os.Environment; +import android.support.v4.app.NotificationCompat; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.task.Task; +import com.arialyy.frame.util.show.L; +import com.arialyy.frame.util.show.T; +import com.arialyy.simple.R; + +/** + * Created by Aria.Lao on 2017/1/18. + */ + +public class SimpleNotification { + private static final String DOWNLOAD_URL = + "http://static.gaoshouyou.com/d/6e/e5/ff6ecaaf45e532e6d07747af82357472.apk"; + + private NotificationManager mManager; + private Context mContext; + private NotificationCompat.Builder mBuilder; + private static final int mNotifiyId = 0; + + public SimpleNotification(Context context) { + mContext = context; + init(); + } + + private void init() { + mManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); + mBuilder = new NotificationCompat.Builder(mContext); + mBuilder.setContentTitle("Aria Download Test") + .setContentText("进度条") + .setProgress(100, 0, false) + .setSmallIcon(R.mipmap.ic_launcher); + mManager.notify(mNotifiyId, mBuilder.build()); + Aria.whit(mContext).addSchedulerListener(new DownloadCallback(mBuilder, mManager)); + } + + public void start() { + Aria.whit(mContext) + .load(DOWNLOAD_URL) + .setDownloadName("notification_test.apk") + .setDownloadPath( + Environment.getExternalStorageDirectory() + "/Download/notification_test.apk") + .start(); + } + + public void stop() { + Aria.whit(mContext).load(DOWNLOAD_URL).stop(); + } + + private static class DownloadCallback extends Aria.SimpleSchedulerListener { + NotificationCompat.Builder mBuilder; + NotificationManager mManager; + + private DownloadCallback(NotificationCompat.Builder builder, NotificationManager manager) { + mBuilder = builder; + mManager = manager; + } + + @Override public void onTaskStart(Task task) { + super.onTaskStart(task); + } + + @Override public void onTaskPre(Task task) { + super.onTaskPre(task); + } + + @Override public void onTaskStop(Task task) { + super.onTaskStop(task); + } + + @Override public void onTaskRunning(Task task) { + super.onTaskRunning(task); + long len = task.getFileSize(); + int p = (int) (task.getCurrentProgress() * 100 / len); + if (mBuilder != null) { + mBuilder.setProgress(100, p, false); + mManager.notify(mNotifiyId, mBuilder.build()); + } + } + + @Override public void onTaskComplete(Task task) { + super.onTaskComplete(task); + if (mBuilder != null) { + mBuilder.setProgress(100, 100, false); + mManager.notify(mNotifiyId, mBuilder.build()); + } + } + + @Override public void onTaskCancel(Task task) { + super.onTaskCancel(task); + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 464bb3a5..08ccd012 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -56,5 +56,14 @@ style="?buttonBarButtonStyle" /> +