mirror of
https://github.com/LittleTurtle2333/SimplicityTools.git
synced 2026-07-12 19:31:17 +08:00
新增双排网速
This commit is contained in:
@@ -13,6 +13,7 @@ import android.widget.Switch
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import cn.fkj233.ui.activity.MIUIActivity
|
import cn.fkj233.ui.activity.MIUIActivity
|
||||||
import cn.fkj233.ui.activity.OwnSP
|
import cn.fkj233.ui.activity.OwnSP
|
||||||
|
import cn.fkj233.ui.activity.data.MIUIPopupData
|
||||||
import cn.fkj233.ui.activity.view.*
|
import cn.fkj233.ui.activity.view.*
|
||||||
import cn.fkj233.ui.dialog.MIUIDialog
|
import cn.fkj233.ui.dialog.MIUIDialog
|
||||||
import com.lt2333.simplicitytools.BuildConfig
|
import com.lt2333.simplicitytools.BuildConfig
|
||||||
@@ -497,15 +498,6 @@ class SettingsActivity : MIUIActivity() {
|
|||||||
menuButton.visibility = View.VISIBLE
|
menuButton.visibility = View.VISIBLE
|
||||||
return ArrayList<BaseView>().apply {
|
return ArrayList<BaseView>().apply {
|
||||||
add(TitleTextV(resId = R.string.statusbar))
|
add(TitleTextV(resId = R.string.statusbar))
|
||||||
add(
|
|
||||||
TextSummaryWithSwitchV(
|
|
||||||
TextSummaryV(
|
|
||||||
textId = R.string.status_bar_network_speed_refresh_speed,
|
|
||||||
tipsId = R.string.status_bar_network_speed_refresh_speed_summary
|
|
||||||
),
|
|
||||||
SwitchV("status_bar_network_speed_refresh_speed")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
add(
|
add(
|
||||||
TextSummaryWithSwitchV(
|
TextSummaryWithSwitchV(
|
||||||
TextSummaryV(
|
TextSummaryV(
|
||||||
@@ -515,15 +507,6 @@ class SettingsActivity : MIUIActivity() {
|
|||||||
SwitchV("hide_battery_percentage_icon")
|
SwitchV("hide_battery_percentage_icon")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
add(
|
|
||||||
TextSummaryWithSwitchV(
|
|
||||||
TextSummaryV(
|
|
||||||
textId = R.string.hide_status_bar_network_speed_second,
|
|
||||||
tipsId = R.string.hide_status_bar_network_speed_second_summary
|
|
||||||
),
|
|
||||||
SwitchV("hide_status_bar_network_speed_second")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
add(
|
add(
|
||||||
TextSummaryWithSwitchV(
|
TextSummaryWithSwitchV(
|
||||||
TextSummaryV(
|
TextSummaryV(
|
||||||
@@ -734,6 +717,114 @@ class SettingsActivity : MIUIActivity() {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
add(LineV())
|
||||||
|
add(TitleTextV(resId = R.string.status_bar_network_speed))
|
||||||
|
add(
|
||||||
|
TextSummaryWithSwitchV(
|
||||||
|
TextSummaryV(
|
||||||
|
textId = R.string.status_bar_network_speed_refresh_speed,
|
||||||
|
tipsId = R.string.status_bar_network_speed_refresh_speed_summary
|
||||||
|
),
|
||||||
|
SwitchV("status_bar_network_speed_refresh_speed")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
TextSummaryWithSwitchV(
|
||||||
|
TextSummaryV(
|
||||||
|
textId = R.string.hide_status_bar_network_speed_second,
|
||||||
|
tipsId = R.string.hide_status_bar_network_speed_second_summary
|
||||||
|
),
|
||||||
|
SwitchV("hide_status_bar_network_speed_second")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
TextWithSwitchV(
|
||||||
|
TextV(resId = R.string.hide_network_speed_splitter),
|
||||||
|
SwitchV("hide_network_speed_splitter")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val status_bar_dual_row_network_speed_binding = getDataBinding(
|
||||||
|
SPUtils.getBoolean(
|
||||||
|
activity,
|
||||||
|
"status_bar_dual_row_network_speed",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
) { view, flags, data ->
|
||||||
|
when (flags) {
|
||||||
|
1 -> (view as Switch).isEnabled = data as Boolean
|
||||||
|
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add(
|
||||||
|
TextSummaryWithSwitchV(
|
||||||
|
TextSummaryV(
|
||||||
|
textId = R.string.status_bar_dual_row_network_speed,
|
||||||
|
tipsId = R.string.status_bar_dual_row_network_speed_summary
|
||||||
|
),
|
||||||
|
SwitchV(
|
||||||
|
"status_bar_dual_row_network_speed",
|
||||||
|
dataBindingSend = status_bar_dual_row_network_speed_binding.bindingSend
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
TextWithSpinnerV(
|
||||||
|
TextV(resId = R.string.status_bar_network_speed_dual_row_icon),
|
||||||
|
SpinnerV(
|
||||||
|
arrayListOf<MIUIPopupData>().apply {
|
||||||
|
add(MIUIPopupData(getString(R.string.none)) {
|
||||||
|
OwnSP.ownSP.edit().run {
|
||||||
|
putString(
|
||||||
|
"status_bar_network_speed_dual_row_icon",
|
||||||
|
getString(R.string.none)
|
||||||
|
)
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
add(MIUIPopupData("▲▼") {
|
||||||
|
OwnSP.ownSP.edit().run {
|
||||||
|
putString("status_bar_network_speed_dual_row_icon", "▲▼")
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
add(MIUIPopupData("△▽") {
|
||||||
|
OwnSP.ownSP.edit().run {
|
||||||
|
putString("status_bar_network_speed_dual_row_icon", "△▽")
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
add(MIUIPopupData("↑↓") {
|
||||||
|
OwnSP.ownSP.edit().run {
|
||||||
|
putString("status_bar_network_speed_dual_row_icon", "↑↓")
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, "${
|
||||||
|
OwnSP.ownSP.getString(
|
||||||
|
"status_bar_network_speed_dual_row_icon",
|
||||||
|
getString(R.string.none)
|
||||||
|
)
|
||||||
|
}"
|
||||||
|
),
|
||||||
|
dataBindingRecv = status_bar_dual_row_network_speed_binding.binding.getRecv(2)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
TextV(
|
||||||
|
resId = R.string.status_bar_network_speed_dual_row_size,
|
||||||
|
dataBindingRecv = status_bar_dual_row_network_speed_binding.binding.getRecv(2)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
SeekBarWithTextV(
|
||||||
|
"status_bar_network_speed_dual_row_size",
|
||||||
|
0,
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
dataBindingRecv = status_bar_dual_row_network_speed_binding.binding.getRecv(2)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
add(LineV())
|
add(LineV())
|
||||||
@@ -1252,13 +1343,6 @@ class SettingsActivity : MIUIActivity() {
|
|||||||
SwitchV("hide_zen_icon")
|
SwitchV("hide_zen_icon")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
add(
|
|
||||||
TextWithSwitchV(
|
|
||||||
TextV(resId = R.string.hide_network_speed_splitter),
|
|
||||||
SwitchV("hide_network_speed_splitter")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ class SystemUI : IXposedHookLoadPackage {
|
|||||||
StatusBarDoubleTapToSleep().handleLoadPackage(lpparam)
|
StatusBarDoubleTapToSleep().handleLoadPackage(lpparam)
|
||||||
//旧版快速设置自定义
|
//旧版快速设置自定义
|
||||||
OldQSCustom().handleLoadPackage(lpparam)
|
OldQSCustom().handleLoadPackage(lpparam)
|
||||||
|
//双排网速
|
||||||
|
DoubleLineNetworkSpeed().handleLoadPackage(lpparam)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
package com.lt2333.simplicitytools.hook.app.systemui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.TrafficStats
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.util.TypedValue
|
||||||
|
import android.view.Gravity
|
||||||
|
import android.widget.TextView
|
||||||
|
import com.lt2333.simplicitytools.util.*
|
||||||
|
import de.robv.android.xposed.IXposedHookLoadPackage
|
||||||
|
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||||
|
import java.text.DecimalFormat
|
||||||
|
|
||||||
|
class DoubleLineNetworkSpeed : IXposedHookLoadPackage {
|
||||||
|
|
||||||
|
private var mLastTotalUp: Long = 0
|
||||||
|
private var mLastTotalDown: Long = 0
|
||||||
|
|
||||||
|
private var lastTimeStampTotalUp: Long = 0
|
||||||
|
private var lastTimeStampTotalDown: Long = 0
|
||||||
|
|
||||||
|
private var upIcon = ""
|
||||||
|
private var downIcon = ""
|
||||||
|
|
||||||
|
private val getDualSize = XSPUtils.getInt("status_bar_network_speed_dual_row_size", 0)
|
||||||
|
|
||||||
|
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
|
||||||
|
|
||||||
|
if (XSPUtils.getString("status_bar_network_speed_dual_row_icon", "None") != "None") {
|
||||||
|
upIcon = XSPUtils.getString("status_bar_network_speed_dual_row_icon", "None")
|
||||||
|
?.firstOrNull()?.plus(" ") ?: String()
|
||||||
|
downIcon = XSPUtils.getString("status_bar_network_speed_dual_row_icon", "None")
|
||||||
|
?.lastOrNull()?.plus(" ") ?: String()
|
||||||
|
}
|
||||||
|
|
||||||
|
hasEnable("status_bar_dual_row_network_speed") {
|
||||||
|
"com.android.systemui.statusbar.views.NetworkSpeedView".findClass(lpparam.classLoader)
|
||||||
|
.hookAfterConstructor(Context::class.java, AttributeSet::class.java) {
|
||||||
|
val mView = it.thisObject as TextView
|
||||||
|
mView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 7f)
|
||||||
|
if (getDualSize!=0){
|
||||||
|
mView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getDualSize.toFloat())
|
||||||
|
}
|
||||||
|
mView.isSingleLine = false
|
||||||
|
mView.setLineSpacing(0F, 0.8F)
|
||||||
|
mView.gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
|
||||||
|
}
|
||||||
|
|
||||||
|
"com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(
|
||||||
|
lpparam.classLoader,
|
||||||
|
"formatSpeed",
|
||||||
|
Context::class.java,
|
||||||
|
Long::class.java
|
||||||
|
) {
|
||||||
|
it.result = "${upIcon}${getTotalUpSpeed()}\n${downIcon}${getTotalDownloadSpeed()}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取总的上行速度
|
||||||
|
fun getTotalUpSpeed(): String {
|
||||||
|
var totalUpSpeed = 0F
|
||||||
|
|
||||||
|
val currentTotalTxBytes = TrafficStats.getTotalTxBytes()
|
||||||
|
val nowTimeStampTotalUp = System.currentTimeMillis()
|
||||||
|
|
||||||
|
//计算上传速度
|
||||||
|
val bytes =
|
||||||
|
(currentTotalTxBytes - mLastTotalUp) * 1000 / (nowTimeStampTotalUp - lastTimeStampTotalUp).toFloat()
|
||||||
|
var unit = ""
|
||||||
|
|
||||||
|
if (bytes >= 1048576) {
|
||||||
|
totalUpSpeed =
|
||||||
|
DecimalFormat("0.0").format(bytes / 1048576).toFloat()
|
||||||
|
unit = "MB/s"
|
||||||
|
} else {
|
||||||
|
totalUpSpeed =
|
||||||
|
DecimalFormat("0.0").format(bytes / 1024).toFloat()
|
||||||
|
unit = "KB/s"
|
||||||
|
}
|
||||||
|
|
||||||
|
//保存当前的流量总和和上次的时间戳
|
||||||
|
mLastTotalUp = currentTotalTxBytes
|
||||||
|
lastTimeStampTotalUp = nowTimeStampTotalUp
|
||||||
|
|
||||||
|
if (totalUpSpeed >= 100) {
|
||||||
|
return "" + totalUpSpeed.toInt() + unit
|
||||||
|
} else {
|
||||||
|
return "" + totalUpSpeed + unit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取总的下行速度
|
||||||
|
fun getTotalDownloadSpeed(): String {
|
||||||
|
var totalDownSpeed = 0F
|
||||||
|
val currentTotalRxBytes = TrafficStats.getTotalRxBytes()
|
||||||
|
val nowTimeStampTotalDown = System.currentTimeMillis()
|
||||||
|
|
||||||
|
//计算下行速度
|
||||||
|
val bytes =
|
||||||
|
(currentTotalRxBytes - mLastTotalDown) * 1000 / (nowTimeStampTotalDown - lastTimeStampTotalDown).toFloat()
|
||||||
|
|
||||||
|
var unit = ""
|
||||||
|
|
||||||
|
if (bytes >= 1048576) {
|
||||||
|
totalDownSpeed =
|
||||||
|
DecimalFormat("0.0").format(bytes / 1048576).toFloat()
|
||||||
|
unit = "MB/s"
|
||||||
|
} else {
|
||||||
|
totalDownSpeed =
|
||||||
|
DecimalFormat("0.0").format(bytes / 1024).toFloat()
|
||||||
|
unit = "KB/s"
|
||||||
|
}
|
||||||
|
//保存当前的流量总和和上次的时间戳
|
||||||
|
mLastTotalDown = currentTotalRxBytes
|
||||||
|
lastTimeStampTotalDown = nowTimeStampTotalDown
|
||||||
|
|
||||||
|
if (totalDownSpeed >= 100) {
|
||||||
|
return "" + totalDownSpeed.toInt() + unit
|
||||||
|
} else {
|
||||||
|
return "" + totalDownSpeed + unit
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,6 +25,13 @@ object XSPUtils {
|
|||||||
}
|
}
|
||||||
return prefs.getFloat(key, defValue)
|
return prefs.getFloat(key, defValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getString(key: String, defValue: String): String? {
|
||||||
|
if (prefs.hasFileChanged()) {
|
||||||
|
prefs.reload()
|
||||||
|
}
|
||||||
|
return prefs.getString(key, defValue)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun hasEnable(key: String, default: Boolean = false, noinline extraCondition: (() -> Boolean)? = null, crossinline block: () -> Unit) {
|
inline fun hasEnable(key: String, default: Boolean = false, noinline extraCondition: (() -> Boolean)? = null, crossinline block: () -> Unit) {
|
||||||
|
|||||||
@@ -171,4 +171,12 @@
|
|||||||
<string name="qs_custom_rows">Rows</string>
|
<string name="qs_custom_rows">Rows</string>
|
||||||
<string name="qs_custom_columns">Columns</string>
|
<string name="qs_custom_columns">Columns</string>
|
||||||
<string name="qs_custom_rows_horizontal">Rows (horizontal)</string>
|
<string name="qs_custom_rows_horizontal">Rows (horizontal)</string>
|
||||||
|
<string name="status_bar_dual_row_network_speed">Dual row network speed</string>
|
||||||
|
<string name="status_bar_dual_row_network_speed_summary">Up and down network speed display</string>
|
||||||
|
<string name="status_bar_network_speed">Status bar network speed</string>
|
||||||
|
<string name="status_bar_network_speed_size">Netwrok speed size (0: do not change)</string>
|
||||||
|
<string name="status_bar_network_speed_dual_row_size">Dual row size (0: do not change)</string>
|
||||||
|
<string name="status_bar_network_speed_size_switch">Custom size switch</string>
|
||||||
|
<string name="status_bar_network_speed_dual_row_icon">Dual row icon</string>
|
||||||
|
<string name="none">None</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user