diff --git a/app/build.gradle b/app/build.gradle index c3337ef..d3db07e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.github.kr328.clash" minSdkVersion 24 targetSdkVersion 29 - versionCode 10019 - versionName "1.0.19-alpha" + versionCode 10020 + versionName "1.0.20-alpha" } buildTypes { release { diff --git a/app/src/main/java/com/github/kr328/clash/MainActivity.kt b/app/src/main/java/com/github/kr328/clash/MainActivity.kt index 5e480fd..42c8bac 100644 --- a/app/src/main/java/com/github/kr328/clash/MainActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/MainActivity.kt @@ -90,7 +90,7 @@ class MainActivity : BaseActivity() { activity_main_clash_status_icon.setImageResource(R.drawable.ic_clash_started) activity_main_clash_status_title.text = getString(R.string.clash_status_started) activity_main_clash_status_summary.text = - getString(R.string.clash_status_forwarded_traffic, "0 Bytes") + getString(R.string.clash_status_forwarded_traffic, ByteFormatter.byteToString(0)) activity_main_clash_proxies.visibility = View.VISIBLE activity_main_clash_logs.visibility = View.VISIBLE } diff --git a/core/src/main/golang/bridge/statistics.go b/core/src/main/golang/bridge/statistics.go index 402a3ec..f38ce27 100644 --- a/core/src/main/golang/bridge/statistics.go +++ b/core/src/main/golang/bridge/statistics.go @@ -31,6 +31,13 @@ func PollTraffic(traffic Traffic) *EventPoll { stopChannel := make(chan int, 1) ticker := time.NewTicker(time.Second) + tick := func() { + up, down := tunnel.DefaultManager.Now() + traffic.OnEvent(down, up) + } + + tick() + go func() { defer close(stopChannel) defer log.Infoln("Traffic Poll Stopped") @@ -40,8 +47,7 @@ func PollTraffic(traffic Traffic) *EventPoll { case <-stopChannel: return case <-ticker.C: - up, down := tunnel.DefaultManager.Now() - traffic.OnEvent(down, up) + tick() } } }() @@ -57,6 +63,13 @@ func PollBandwidth(bandwidth Bandwidth) *EventPoll { stopChannel := make(chan int, 1) ticker := time.NewTicker(time.Second) + tick := func() { + s := tunnel.DefaultManager.Snapshot() + bandwidth.OnEvent(s.DownloadTotal + s.UploadTotal) + } + + tick() + go func() { defer close(stopChannel) defer log.Infoln("Bandwidth Poll Stopped") @@ -66,8 +79,7 @@ func PollBandwidth(bandwidth Bandwidth) *EventPoll { case <-stopChannel: return case <-ticker.C: - s := tunnel.DefaultManager.Snapshot() - bandwidth.OnEvent(s.DownloadTotal + s.UploadTotal) + tick() } } }() diff --git a/core/src/main/golang/clash b/core/src/main/golang/clash index 78b0f8c..b6166ab 160000 --- a/core/src/main/golang/clash +++ b/core/src/main/golang/clash @@ -1 +1 @@ -Subproject commit 78b0f8c71846dd8cc800648a82eff8d40a6b3868 +Subproject commit b6166ab57d1e944003a00e541f54e40939935db3 diff --git a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt b/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt index ec4879f..bcb09ee 100644 --- a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt +++ b/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt @@ -4,11 +4,11 @@ object ByteFormatter { fun byteToString(bytes: Long): String { return when { bytes > 1024 * 1024 * 1024 -> - String.format("%.2f GB", (bytes.toDouble() / 1024 / 1024 / 1024)) + String.format("%.2f GiB", (bytes.toDouble() / 1024 / 1024 / 1024)) bytes > 1024 * 1024 -> - String.format("%.2f MB", (bytes.toDouble() / 1024 / 1024)) + String.format("%.2f MiB", (bytes.toDouble() / 1024 / 1024)) bytes > 1024 -> - String.format("%.2f KB", (bytes.toDouble() / 1024)) + String.format("%.2f KiB", (bytes.toDouble() / 1024)) else -> "$bytes Bytes" } diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt index 8618f7d..3817f58 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt @@ -25,6 +25,7 @@ class ClashNotification(private val context: Service) { .setOngoing(true) .setColor(context.getColor(R.color.colorAccentService)) //.setColorized(true) + .setOnlyAlertOnce(true) .setShowWhen(false) .setContentIntent( PendingIntent.getActivity(