From 1144183da48af082f3c162eb989e02bda93b2252 Mon Sep 17 00:00:00 2001
From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com>
Date: Sat, 18 Jul 2020 13:09:53 -0400
Subject: [PATCH] Update notification icon based on traffic
Notification icon would be a good indication for current traffic
- going through proxy
- connect directly
- not going through v2rayNG
---
.../com/v2ray/ang/service/V2RayVpnService.kt | 15 ++++++++++++---
.../app/src/main/res/drawable/ic_stat_direct.png | Bin 0 -> 1915 bytes
.../app/src/main/res/drawable/ic_stat_proxy.png | Bin 0 -> 3199 bytes
.../app/src/main/res/values-zh-rCN/strings.xml | 2 +-
.../app/src/main/res/values-zh-rTW/strings.xml | 2 +-
V2rayNG/app/src/main/res/values/strings.xml | 3 ++-
6 files changed, 16 insertions(+), 6 deletions(-)
create mode 100644 V2rayNG/app/src/main/res/drawable/ic_stat_direct.png
create mode 100644 V2rayNG/app/src/main/res/drawable/ic_stat_proxy.png
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
index 1a1dcebe..7c614210 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
@@ -40,6 +40,7 @@ class V2RayVpnService : VpnService() {
const val NOTIFICATION_ID = 1
const val NOTIFICATION_PENDING_INTENT_CONTENT = 0
const val NOTIFICATION_PENDING_INTENT_STOP_V2RAY = 1
+ const val NOTIFICATION_ICON_THRESHOLD = 3000
fun startV2Ray(context: Context) {
val intent = Intent(context.applicationContext, V2RayVpnService::class.java)
@@ -359,8 +360,15 @@ class V2RayVpnService : VpnService() {
mSubscription = null
}
- private fun updateNotification(contentText: String) {
+ private fun updateNotification(contentText: String, proxyTraffic: Long, directTraffic: Long) {
if (mBuilder != null) {
+ if (proxyTraffic < NOTIFICATION_ICON_THRESHOLD && directTraffic < NOTIFICATION_ICON_THRESHOLD) {
+ mBuilder?.setSmallIcon(R.drawable.ic_v)
+ } else if (proxyTraffic > directTraffic) {
+ mBuilder?.setSmallIcon(R.drawable.ic_stat_proxy)
+ } else {
+ mBuilder?.setSmallIcon(R.drawable.ic_stat_direct)
+ }
mBuilder?.setStyle(NotificationCompat.BigTextStyle().bigText(contentText))
getNotificationManager().notify(NOTIFICATION_ID, mBuilder?.build())
}
@@ -393,7 +401,8 @@ class V2RayVpnService : VpnService() {
updateNotification("proxy\t• ${(proxyUplink / sinceLastQueryInSeconds).toLong().toSpeedString()}↑ " +
"${(proxyDownlink / sinceLastQueryInSeconds).toLong().toSpeedString()}↓\n" +
"direct\t• ${(directUplink / sinceLastQueryInSeconds).toLong().toSpeedString()}↑ " +
- "${(directDownlink / sinceLastQueryInSeconds).toLong().toSpeedString()}↓")
+ "${(directDownlink / sinceLastQueryInSeconds).toLong().toSpeedString()}↓",
+ proxyDownlink + proxyUplink, directDownlink + directUplink)
}
last_zero_speed = zero_speed
lastQueryTime = queryTime
@@ -408,7 +417,7 @@ class V2RayVpnService : VpnService() {
mSubscription = null
val cf_name = defaultDPreference.getPrefString(AppConfig.PREF_CURR_CONFIG_NAME, "")
- updateNotification(cf_name)
+ updateNotification(cf_name, 0, 0)
}
}
diff --git a/V2rayNG/app/src/main/res/drawable/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable/ic_stat_direct.png
new file mode 100644
index 0000000000000000000000000000000000000000..406a0c76906cc821cc56ddfa2f6176b32eb5736a
GIT binary patch
literal 1915
zcmYjSd05if8vgwtpiJ|orVgeOA;nzTL{LZzw*pr*aw|(xP*TAKgUs?r<(QLYI+~`r
zC6+o_jd-oAQ<81gxMhnM)5PjJ*`khSi>6(i+cVFc=Q-y)-*>*}eb4*;aZWbRe~Xa;
z+5i9mBQD1?NFO5?=TfA8eO@eg1_01U%ny}?`uVb=qzNQJv~;(Sq)15Ap96r)CPktk
zDo!ZF>=wp|C9c?s);26g9PNq?q5Dz%5
#
zBsq;FO^zW`nM@{`;y`wAAnH4aDf=Wcfr2PWS-S}Fe+*AyN>s8qQ6`p3FpHRi-O^N<
zD;7&$Bq4ue(aR(MrB9#y<&aRKw?<$DjLm55M9u%n
z3dO@aljA(E~{)k7G#AHJ5L()5}+?;Itk6EyswijHaaO=K52M40Qh_!
zdg>wHSkMb_@nilvYWvHtCX~jNWyW?^D9#>Z7a-?$z$!_=D9~T5Jpl|f1fk(2F^=b9
z{V0Q9fDoP*&1u`_EnrXQj81EG>^0`k&si=Qs)q5IPVAtV!JoPjO84}`rP>{~oQz9m
z0{}Nd*$<__GDDF&3Ti6z3)|6{Iuymi*_C&+@M?DtpLfrDjs9+{C9Kb%*lU8p`Odd@
z*|YSmSM_#0Or(`mu`;YLR!*g2=3Ca6fCu!IA^4aSNusHHU}OD$c@j74BzP4ZHYPlbh0QUa&)P=pe?`ivKClBuVF`B);Br#jHPV-%
zu0#}G;AeB_bS*UreXSL=t&bSqsN?vq-;cA{wpYr^w`j-lID=@VRa){1hk)23@fHp3F=
zg!^}4gQDT%sBwK^N!rMVb7d95m9rtzHBNqgWUgim^!5Ml>8AWUkN3Uox985C%b~k3T6qwwikel
zetQbCzzm&a!*JRYVqbDW=GBO@T{wDt6KIu$DC~j9ZsN>>#Q`F49-4>~4|e2Dn(uJ?
zZ#8??_=QbOE`E-qFz998o-qdHy=kshf4r*5n`Ceg!|qPa3~cFp&Dzqo0e3vXkDR?Z
z9aaKab-jIzyft;h?UDQ+9cUeEu;o$9vIGdCicUFW2!vrUxaD-x{#5dZ6@Y(HYkVUe)n*!q&LH=A+mBf>7TZwJM(hY-=5lnvNlk9$4;3J
S#ak@?nOrY_&x`JnhyDjG=r0EV
literal 0
HcmV?d00001
diff --git a/V2rayNG/app/src/main/res/drawable/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable/ic_stat_proxy.png
new file mode 100644
index 0000000000000000000000000000000000000000..daef597015daf9af35b0e84ef02d80d4a7fe9fba
GIT binary patch
literal 3199
zcmZ`+c{JPE`%VxVdnvk55wR9Ys3j3gm5z_4YNuLC1hF@wiDd|Ct)fAPingQFR%^9`
zTEb9MBJE_R)y0z1%1}gWtNp9r-<
zG0{J*1Jg&LjgTk|5`9`1g~p;VSQHxe?}D3)!f>R(Agqh^xqrzHIx~0(nH-HpA}JJ#
z9>qW}iWH1QV=x#bN*}4OuX`||8xt2v_NVGb#;E>)_&*G5LJXcnj3yJKB4Ix;{R5(6
z$!2gk@&^g>UzP)T$p7g(X#VFAA@aZ$(t&;$(1-a
z&BpuPrxAv_w90c_^DCF0|E&z3VZ_vCmJuOdqPg(IlhOLok;Ay*)XEfQ8Z#@m))O>@
zDD|N$+nPoSF!A?h%-i^t954m)ia!8rlo8K#bC8aBhIlx
zSNSIY+oN)ruRm2(KnmLAmZhV;&U<%BD3%AEQPb7-00C!dL$qDea0Rq}$4yL|=zL4S
z_Pv~e2LHCJyt2TM32*X6wuO;)ESYUboFa4#zzJW+bYoQFdlWgWKrfvAwBx%&qFwxzR
zKAh!kfhG_V?Dt7rWsZ~EonIKxiA_K#tIkCNBd#Q4`*=%^HP9{iEn6D(rPu>enfG_14o;i!I9+$;GyqtB6=K=NsfAAl5SM5s^
z5>XTy&mSFcVs=#-o3#;pXbFfl?Jj>=grSqQS7-|Qz!NAurEH`Xa|bpg{OCufCXmyUYcVYL=Mn)%mNdN_4T(0h){AZ>Mk&RS{S
z4Z68_dvfH3$=5o}XQ9ds3p&JXe$tKbQ+4~lQVPkLmGuNw#xx%p$4PSI>P&_et^SqO
z+NDX1aoR!8&_L>x_Tf$l0ua
z-bZ4&Ee_tI)dzwb1skCqVM;X(`4Kbex4klub`g`8m@)ao
z!9q`Iz5~Zu6DY~2!aezM=Hlv`ky{49-g;U?v*Dk5Owg6YD(Jxrb1pY#X1)5sM*p+7
zg17shGVh_Kx=7ATV5Ki9o+;hkpKB}4xkT=#{!Q7c=1hJ(x~lB@NoGFaxhd8x`Q*}f
zKl)xVoH<29n)2*!y5uY)^Nb+_#QQUn!wo4P2}PqfKA@-WlUg{Gi3?DHE&)XzV?{wv
zG>P99A=tQok$V@MD1QP|g{kD5agDV&X>lIZKRat7RIv{yi&h)rf2VXyHJ9?XtQI1s
zWJ@wSa>c7+Ac(#unwl0zwqReQ%!Ow2HZJVOi0!tpkvwubhB?|6by+D#=}}uxw3+yc
zMXHTmDuw1V;^1Q~g;kb$rlS^o`bcEXcT0M&s$;*YgOb99oOais4gRT>nU2QggvXVh
zG9|}$O6sWUnJ%+ggp+J{`txA#sWWnN2&O);=N;}cX-@YQt9|qf;-)rk750upINtW+
zP1#?fC@W696kh=Fp{(Jq$VGR>EPXD*eQB1w)PjzHj`9NI+xGkv*d;
zPw%m6^(>8aIg&Bqf`baH#8#Q-;i
zPOb=-@VAe>M9Y`m8kS$`Zg;sHk{5aFw8~lEK(U3Zm!%$ruYW*riS*UZaKpuGrDAr9
z;Bz9;5`1m&MYZy~Xk@Egi^brh_Ig$A>P%KXnc$#@d;=W!toU{d1Er#!(&gH^GJh4&
zBe5rn1viAJKg>MHNQhucq3iz+;C>)qnFXAzQy;Z
zn*2U;1K(9O_{xU^ZgsX()G2!M)!%O{+;7LGbx))!B2@+S;cT}7F+W;S(TeO-4y$fTgt$0hcI-5z~
z_G^H?g3aY0E++d}zxQq3wCdQ-RM4dQF~eim`|G{I1rku@oSI6!6=yWd`33NmQK{nm
zxxofp;BB8Q@1oVvdTiCC^yVR8NGp+N-_bty`_!V4W=0I*gl7M;6fictz8jRj*4iD~
zGF-CmckH2Sb6B+IQ$j3R;gg|qNnQu=+=?O%Vr7QtuUiZZ`)1!@3UJlKcUAI|Ip@d<
z;GB?wz0H4W-!7Qw`ZCwSFDo1<#Y^gzhkr)#J6lSm&o(FTy+XoALs`35(d)^o_XdoT
zs#`;^d4hM2=B~-%n`K>u{S7{Puw<9;te7ahxy!Ct?tYl=VE)|)VRF>
literal 0
HcmV?d00001
diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
index 535748f3..3b0079fb 100644
--- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
@@ -83,7 +83,7 @@
开启可能会加速,关闭可能会减少断流
启用速度显示
- 在通知中显示当前速度
+ 在通知中显示当前速度\n小图标显示流量的路由情况
启用流量探测
流量探测
diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
index fde2fb1e..452be54d 100644
--- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
@@ -84,7 +84,7 @@
啟用或許會加快網路速度,切換或許會閃爍
啟用速度顯示
- 在通知中顯示當前速度
+ 在通知中顯示當前速度\n小圖標顯示流量的路由情況
啟用流量探測
流量探測
diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml
index 6865872a..76a6e653 100644
--- a/V2rayNG/app/src/main/res/values/strings.xml
+++ b/V2rayNG/app/src/main/res/values/strings.xml
@@ -84,7 +84,8 @@
Enable maybe speed up network and switch network maybe flash
Enable speed display
- Display current speed in the notification
+ Display current speed in the notification.\nNotification icon would change based on
+ usage.
Enable Sniffing
Sniffing