mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 23:07:38 +00:00
Remove old download progress update system
This commit is contained in:
parent
0e9b71e7a9
commit
debaec32af
@ -12,7 +12,7 @@ import com.topjohnwu.magisk.extensions.get
|
|||||||
import com.topjohnwu.magisk.extensions.writeTo
|
import com.topjohnwu.magisk.extensions.writeTo
|
||||||
import com.topjohnwu.magisk.model.entity.internal.DownloadSubject
|
import com.topjohnwu.magisk.model.entity.internal.DownloadSubject
|
||||||
import com.topjohnwu.magisk.model.entity.internal.DownloadSubject.*
|
import com.topjohnwu.magisk.model.entity.internal.DownloadSubject.*
|
||||||
import com.topjohnwu.magisk.utils.ProgInputStream
|
import com.topjohnwu.magisk.utils.ProgressInputStream
|
||||||
import com.topjohnwu.magisk.view.Notifications
|
import com.topjohnwu.magisk.view.Notifications
|
||||||
import com.topjohnwu.superuser.ShellUtils
|
import com.topjohnwu.superuser.ShellUtils
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
@ -100,7 +100,7 @@ abstract class RemoteFileService : NotificationService() {
|
|||||||
val maxRaw = contentLength()
|
val maxRaw = contentLength()
|
||||||
val max = maxRaw / 1_000_000f
|
val max = maxRaw / 1_000_000f
|
||||||
|
|
||||||
return ProgInputStream(byteStream()) {
|
return ProgressInputStream(byteStream()) {
|
||||||
val progress = it / 1_000_000f
|
val progress = it / 1_000_000f
|
||||||
update(id) { notification ->
|
update(id) { notification ->
|
||||||
notification
|
notification
|
||||||
|
@ -4,7 +4,7 @@ import com.topjohnwu.superuser.internal.UiThreadHandler
|
|||||||
import java.io.FilterInputStream
|
import java.io.FilterInputStream
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
class ProgInputStream(
|
class ProgressInputStream(
|
||||||
base: InputStream,
|
base: InputStream,
|
||||||
val progressEmitter: (Long) -> Unit = {}
|
val progressEmitter: (Long) -> Unit = {}
|
||||||
) : FilterInputStream(base) {
|
) : FilterInputStream(base) {
|
@ -1,73 +0,0 @@
|
|||||||
package com.topjohnwu.magisk.view
|
|
||||||
|
|
||||||
import android.app.Notification
|
|
||||||
import android.app.PendingIntent
|
|
||||||
import android.content.Intent
|
|
||||||
import android.widget.Toast
|
|
||||||
|
|
||||||
import androidx.core.app.NotificationCompat
|
|
||||||
|
|
||||||
import com.topjohnwu.magisk.App
|
|
||||||
import com.topjohnwu.magisk.R
|
|
||||||
import com.topjohnwu.magisk.utils.Utils
|
|
||||||
import com.topjohnwu.net.DownloadProgressListener
|
|
||||||
|
|
||||||
class ProgressNotification(title: String) : DownloadProgressListener {
|
|
||||||
|
|
||||||
val notificationBuilder: NotificationCompat.Builder = Notifications.progress(title)
|
|
||||||
lateinit var notification: Notification
|
|
||||||
private set
|
|
||||||
private var prevTime: Long = 0
|
|
||||||
|
|
||||||
init {
|
|
||||||
prevTime = System.currentTimeMillis()
|
|
||||||
update()
|
|
||||||
Utils.toast(App.self.getString(R.string.downloading_toast, title), Toast.LENGTH_SHORT)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onProgress(bytesDownloaded: Long, totalBytes: Long) {
|
|
||||||
val cur = System.currentTimeMillis()
|
|
||||||
if (cur - prevTime >= 1000) {
|
|
||||||
prevTime = cur
|
|
||||||
val progress = (bytesDownloaded * 100 / totalBytes).toInt()
|
|
||||||
notificationBuilder.setProgress(100, progress, false)
|
|
||||||
notificationBuilder.setContentText("$progress%")
|
|
||||||
update()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun update() {
|
|
||||||
notification = notificationBuilder.build()
|
|
||||||
Notifications.mgr.notify(hashCode(), notification)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun lastUpdate() {
|
|
||||||
Notifications.mgr.cancel(hashCode())
|
|
||||||
notification = notificationBuilder.build().apply {
|
|
||||||
Notifications.mgr.notify(hashCode(), this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun dlDone(intent: PendingIntent = PendingIntent.getActivity(App.self, hashCode(),
|
|
||||||
Intent(), PendingIntent.FLAG_UPDATE_CURRENT)) {
|
|
||||||
notificationBuilder.setProgress(0, 0, false)
|
|
||||||
.setContentText(App.self.getString(R.string.download_complete))
|
|
||||||
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
|
||||||
.setContentIntent(intent)
|
|
||||||
.setOngoing(false)
|
|
||||||
.setAutoCancel(true)
|
|
||||||
lastUpdate()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun dlFail() {
|
|
||||||
notificationBuilder.setProgress(0, 0, false)
|
|
||||||
.setContentText(App.self.getString(R.string.download_file_error))
|
|
||||||
.setSmallIcon(android.R.drawable.stat_notify_error)
|
|
||||||
.setOngoing(false)
|
|
||||||
lastUpdate()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun dismiss() {
|
|
||||||
Notifications.mgr.cancel(hashCode())
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
package com.topjohnwu.net;
|
|
||||||
|
|
||||||
public interface DownloadProgressListener {
|
|
||||||
void onProgress(long bytesDownloaded, long totalBytes);
|
|
||||||
}
|
|
@ -13,7 +13,6 @@ import java.net.URL;
|
|||||||
|
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public class Networking {
|
public class Networking {
|
||||||
|
|
||||||
private static final int READ_TIMEOUT = 15000;
|
private static final int READ_TIMEOUT = 15000;
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
package com.topjohnwu.net;
|
|
||||||
|
|
||||||
import java.io.FilterInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
public class ProgressInputStream extends FilterInputStream {
|
|
||||||
|
|
||||||
private long totalBytes;
|
|
||||||
private long bytesDownloaded;
|
|
||||||
private DownloadProgressListener progress;
|
|
||||||
|
|
||||||
public ProgressInputStream(InputStream in, long total, DownloadProgressListener listener) {
|
|
||||||
super(in);
|
|
||||||
totalBytes = total;
|
|
||||||
progress = listener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read() throws IOException {
|
|
||||||
int b = super.read();
|
|
||||||
if (totalBytes > 0 && b >= 0) {
|
|
||||||
bytesDownloaded++;
|
|
||||||
Networking.mainHandler.post(() -> progress.onProgress(bytesDownloaded, totalBytes));
|
|
||||||
}
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read(byte[] b) throws IOException {
|
|
||||||
return read(b, 0, b.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read(byte[] b, int off, int len) throws IOException {
|
|
||||||
int sz = super.read(b, off, len);
|
|
||||||
if (totalBytes > 0 && sz > 0) {
|
|
||||||
bytesDownloaded += sz;
|
|
||||||
Networking.mainHandler.post(() -> progress.onProgress(bytesDownloaded, totalBytes));
|
|
||||||
}
|
|
||||||
return sz;
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,7 +23,6 @@ import java.util.concurrent.Executor;
|
|||||||
public class Request implements Closeable {
|
public class Request implements Closeable {
|
||||||
private HttpURLConnection conn;
|
private HttpURLConnection conn;
|
||||||
private Executor executor = null;
|
private Executor executor = null;
|
||||||
private DownloadProgressListener progress = null;
|
|
||||||
private int code = -1;
|
private int code = -1;
|
||||||
|
|
||||||
ErrorHandler err = null;
|
ErrorHandler err = null;
|
||||||
@ -66,11 +65,6 @@ public class Request implements Closeable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Request setDownloadProgressListener(DownloadProgressListener listener) {
|
|
||||||
progress = listener;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Request setErrorHandler(ErrorHandler handler) {
|
public Request setErrorHandler(ErrorHandler handler) {
|
||||||
err = handler;
|
err = handler;
|
||||||
return this;
|
return this;
|
||||||
@ -169,24 +163,13 @@ public class Request implements Closeable {
|
|||||||
|
|
||||||
private BufferedInputStream getInputStream() throws IOException {
|
private BufferedInputStream getInputStream() throws IOException {
|
||||||
connect0();
|
connect0();
|
||||||
InputStream in = conn.getInputStream();
|
InputStream in = new FilterInputStream(conn.getInputStream()) {
|
||||||
if (progress != null) {
|
|
||||||
in = new ProgressInputStream(in, conn.getContentLength(), progress) {
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
super.close();
|
super.close();
|
||||||
conn.disconnect();
|
conn.disconnect();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
|
||||||
in = new FilterInputStream(in) {
|
|
||||||
@Override
|
|
||||||
public void close() throws IOException {
|
|
||||||
super.close();
|
|
||||||
conn.disconnect();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return new BufferedInputStream(in);
|
return new BufferedInputStream(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user