diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/custom/SetNumberOrWordUtils.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/custom/SetNumberOrWordUtils.kt
index a9015a4..5013fa6 100644
--- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/custom/SetNumberOrWordUtils.kt
+++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/custom/SetNumberOrWordUtils.kt
@@ -86,6 +86,14 @@ object SetNumberOrWordUtils {
return closestRatio
}
+ fun getHoursString(int: Int):String{
+ val div = int.div(3600)
+ return if(div>1){
+ "$div hours"
+ }else{
+ "$div hour"
+ }
+ }
}
\ No newline at end of file
diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt
index 45ae415..0003ec9 100644
--- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt
+++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt
@@ -1,5 +1,6 @@
package com.xyzshell.myphoneinfo.dashboard
+import android.Manifest
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
@@ -7,12 +8,15 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
+import androidx.annotation.RequiresPermission
import com.xyzshell.andinfo.AndInfo
import com.xyzshell.andinfo.libs.NetworkInfo
import com.xyzshell.myphoneinfo.R
import com.xyzshell.myphoneinfo.custom.PermissionChecker
+import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.getHoursString
import com.xyzshell.myphoneinfo.databinding.FragmentNetworkBinding
import com.xyzshell.myphoneinfo.dialog.ShowLoadFragment
+import kotlin.toString
class NetworkFragment : Fragment() {
@@ -36,12 +40,15 @@ private lateinit var binding:FragmentNetworkBinding
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ networkInfo= AndInfo.instance.network
+ refreshStatus()
+ setMobileInfo()
if(PermissionChecker.getMissingPermissions(context = requireContext()).isNotEmpty()){
PermissionChecker.requestSimple(
requireActivity(),
onGranted = {
// 权限已授予,执行操作
-
+ refreshStatus()
},
onDenied = {
// 权限被拒绝
@@ -49,23 +56,6 @@ private lateinit var binding:FragmentNetworkBinding
}
)
}
- networkInfo= AndInfo.instance.network
- val currentNetworkType = networkInfo.getCurrentNetworkType()
- when (currentNetworkType) {
- NetworkInfo.NetworkType.WIFI -> {
- status = 1
- setWifiDetail()
- }
- NetworkInfo.NetworkType.MOBILE -> {
- status = 2
- setMobileInfo()
- }
- else -> {
- status = 0
- setNoConnect()
- }
- }
-
//wifi
binding.networkLayout.wfText1.textTitle.text=getString(R.string.status)
// binding.networkLayout.wfText2.textTitle.text=getString(R.string.network)
@@ -87,6 +77,14 @@ private lateinit var binding:FragmentNetworkBinding
binding.networkLayout.dhText7.textTitle.text=getString(R.string.ip_address)
binding.networkLayout.dhText8.textTitle.text=getString(R.string.ipv6)
+ //Hardware
+ binding.networkLayout.hardCheck1.content.text=getString(R.string.standard_all)
+ binding.networkLayout.hardCheck2.content.text=getString(R.string.wifi_direct_support)
+ binding.networkLayout.hardCheck3.content.text=getString(R.string.wifi_aware_support)
+ binding.networkLayout.hardCheck4.content.text=getString(R.string.wifi_passpoint_support)
+ binding.networkLayout.hardCheck5.content.text=getString(R.string.ghz_band_support)
+ binding.networkLayout.hardCheck6.content.text=getString(R.string.ghz6_band_support)
+
//mobel
binding.mdText1.textTitle.text=getString(R.string.dual_sim_dual_standby)
binding.mdText2.textTitle.text=getString(R.string.phone_type)
@@ -99,10 +97,6 @@ private lateinit var binding:FragmentNetworkBinding
binding.defText2.textTitle.text=getString(R.string.voice)
binding.defText3.textTitle.text=getString(R.string.short_message)
- binding.simText1.textTitle.text=getString(R.string.status)
- binding.simText2.textTitle.text=getString(R.string.nation)
- binding.simText3.textTitle.text=getString(R.string.roaming)
- binding.simText4.textTitle.text=getString(R.string.network_type)
binding.networkLayout.pubShow.setOnClickListener{
val tag = "showLoadFragment"
@@ -113,6 +107,23 @@ private lateinit var binding:FragmentNetworkBinding
}
}
+ private fun refreshStatus() {
+ val currentNetworkType = networkInfo.getCurrentNetworkType()
+ when (currentNetworkType) {
+ NetworkInfo.NetworkType.WIFI -> {
+ status = 1
+ setWifiDetail()
+ }
+ NetworkInfo.NetworkType.MOBILE -> {
+ status = 2
+ setMobileInfo()
+ }
+ else -> {
+ status = 0
+ setNoConnect()
+ }
+ }
+ }
private fun setNoConnect() {
binding.noConnect.visibility=View.VISIBLE
binding.connectData.visibility=View.GONE
@@ -132,22 +143,58 @@ private lateinit var binding:FragmentNetworkBinding
binding.networkLayout.wifiList.visibility=View.VISIBLE
binding.networkLayout.llPubShow.visibility=View.VISIBLE
networkInfo.getMobileDetails()?.let { mobileDetails ->
+ //mobel
+// binding.mdText1.textTitle.text=getString(R.string.dual_sim_dual_standby)
+// binding.mdText2.textTitle.text=getString(R.string.phone_type)
+// binding.mdText3.textTitle.text=getString(R.string.esim)
+//
+// binding.conTexts.textTitle.text=getString(R.string.status)
+//
+// binding.defText1.textTitle.text=getString(R.string.data)
+//
+// binding.defText2.textTitle.text=getString(R.string.voice)
+// binding.defText3.textTitle.text=getString(R.string.short_message)
+//
+// binding.simText1.textTitle.text=getString(R.string.status)
+// binding.simText2.textTitle.text=getString(R.string.nation)
+// binding.simText3.textTitle.text=getString(R.string.roaming)
+// binding.simText4.textTitle.text=getString(R.string.network_type)
+ binding.mdText1.textContent.text=mobileDetails.dualSim.toString()
+ binding.mdText2.textContent.text=mobileDetails.phoneType.toString()
+ binding.mdText3.textContent.text=mobileDetails.esimSupported.toString()
+ binding.conTexts.textContent.text=mobileDetails.dataEnabled.toString()
+ binding.defText1.textContent.text=mobileDetails.dataSim.toString()
+ binding.defText2.textContent.text=mobileDetails.voiceSim.toString()
+ binding.defText3.textContent.text=mobileDetails.smsSim.toString()
+ if(mobileDetails.simInfos.isNotEmpty()){
+ binding.simInfo1.simText1.textTitle.text=getString(R.string.status)
+ binding.simInfo1.simText2.textTitle.text=getString(R.string.nation)
+ binding.simInfo1.simText3.textTitle.text=getString(R.string.roaming)
+ binding.simInfo1.simText4.textTitle.text=getString(R.string.network_type)
+ binding.simInfo1.simText1.textContent.text=if(status==2) true.toString() else false.toString()
+ binding.simInfo1.simText2.textContent.text=mobileDetails.simInfos[0].countryIso.toString()
+ binding.simInfo1.simText3.textContent.text=mobileDetails.simInfos[0].roaming.toString()
+ if(mobileDetails.simInfos.size>1){
+ binding.simInfo2.root.visibility=View.VISIBLE
+ binding.simInfo2.simText1.textTitle.text=getString(R.string.status)
+ binding.simInfo2.simText2.textTitle.text=getString(R.string.nation)
+ binding.simInfo2.simText3.textTitle.text=getString(R.string.roaming)
+ binding.simInfo2.simText4.textTitle.text=getString(R.string.network_type)
+ binding.simInfo2.simText1.textContent.text=if(status==2) true.toString() else false.toString()
+ binding.simInfo2.simText2.textContent.text=mobileDetails.simInfos[1].countryIso.toString()
+ binding.simInfo2.simText3.textContent.text=mobileDetails.simInfos[1].roaming.toString()
+ }
+ }else{
+ binding.simInfo1.root.visibility=View.GONE
+ binding.simInfo2.root.visibility=View.GONE
+ }
}
}
/**
* 设置wifi信息
* */
-// binding.networkLayout.wfText2.textTitle.text=getString(R.string.network)
-// binding.networkLayout.wfText3.textTitle.text=getString(R.string.bssid)
-// binding.networkLayout.wfText4.textTitle.text=getString(R.string.function)
-// binding.networkLayout.wfText5.textTitle.text=getString(R.string.connection_speed)
-// binding.networkLayout.wfText6.textTitle.text=getString(R.string.signal_strength)
-// binding.networkLayout.wfText7.textTitle.text=getString(R.string.frequency)
-// binding.networkLayout.wfText8.textTitle.text=getString(R.string.frequency_band)
-// binding.networkLayout.wfText9.textTitle.text=getString(R.string.channel)
-// binding.networkLayout.wfText10.textTitle.text=getString(R.string.standard)
private fun setWifiDetail() {
binding.noConnect.visibility=View.GONE
binding.conText1.text=getString(R.string.wifi)
@@ -156,9 +203,12 @@ private lateinit var binding:FragmentNetworkBinding
binding.networkLayout.llPubShow.visibility=View.VISIBLE
networkInfo.getWifiDetails()?.let { wifiDetails ->
Log.d("TTTTTTTT", (wifiDetails.signalLevelPercent?: "null").toString())
- binding.strengthView.setStrength(wifiDetails.signalLevelPercent?: 0)
- binding.conText2.text="${wifiDetails.ssid}·${wifiDetails.linkSpeedMbps}"
- binding.conTExt3.text="${wifiDetails.signalLevelPercent} ${wifiDetails.rssi}"
+ wifiDetails.signalLevelPercent?.let { percent->
+ binding.strengthView.setStrength(calculateSignalLevel(percent = percent))
+ }
+
+ binding.conText2.text="${wifiDetails.ssid}·${wifiDetails.linkSpeedMbps} Mbps"
+ binding.conTExt3.text="${wifiDetails.signalLevelPercent}% ${wifiDetails.rssi} dBm"
if(wifiDetails.connected){
binding.networkLayout.wfText1.textContent.text=getString(R.string.connectivity_status)
}else{
@@ -167,15 +217,42 @@ private lateinit var binding:FragmentNetworkBinding
binding.networkLayout.wfText3.textContent.text=wifiDetails.bssid
binding.networkLayout.wfText4.textContent.text=wifiDetails.capabilities
- binding.networkLayout.wfText5.textContent.text=wifiDetails.linkSpeedMbps.toString()
- binding.networkLayout.wfText6.textContent.text=wifiDetails.signalLevelPercent.toString()
- binding.networkLayout.wfText7.textContent.text=wifiDetails.frequency.toString()
+ binding.networkLayout.wfText5.textContent.text="${wifiDetails.linkSpeedMbps} Mbps"
+ binding.networkLayout.wfText6.textContent.text="${wifiDetails.rssi} dBm"
+ binding.networkLayout.wfText7.textContent.text="${wifiDetails.frequency} MHz"
binding.networkLayout.wfText8.textContent.text=wifiDetails.channel.toString()
binding.networkLayout.wfText10.textContent.text=wifiDetails.standard.toString()
+ binding.networkLayout.dhText1.textContent.text=wifiDetails.dhcpServer
+ binding.networkLayout.dhText2.textContent.text=getHoursString(wifiDetails.leaseDuration?: 0)
+ binding.networkLayout.dhText3.textContent.text=wifiDetails.gateway
+ binding.networkLayout.dhText4.textContent.text=wifiDetails.subnetMask
+ binding.networkLayout.dhText5.textContent.text=wifiDetails.dns1
+ binding.networkLayout.dhText6.textContent.text=wifiDetails.dns2
+ binding.networkLayout.dhText7.textContent.text=wifiDetails.ip
+ val toString = wifiDetails.ipv6.toString()
+ val ipv6 = toString.replace("[", "").replace("]", "")
+ binding.networkLayout.dhText8.textContent.text=ipv6
+
+ binding.networkLayout.hardCheck1.image.isSelected= wifiDetails.supportedStandards?.size==5
+ binding.networkLayout.hardCheck2.image.isSelected= wifiDetails.wifiDirect == true
+ binding.networkLayout.hardCheck3.image.isSelected= wifiDetails.wifiAware == true
+ binding.networkLayout.hardCheck4.image.isSelected= wifiDetails.wifiPasspoint == true
+ binding.networkLayout.hardCheck5.image.isSelected= wifiDetails.support5G == true
+ binding.networkLayout.hardCheck6.image.isSelected= wifiDetails.support6G == true
+
}
}
+ private fun calculateSignalLevel( percent: Int) : Int {
+ return when {
+ percent >= 80 -> 5 // 优秀
+ percent >= 60 -> 4 // 良好
+ percent >= 40 -> 3 // 一般
+ percent >= 20 -> 2 // 差
+ else -> 1 // 非常差/无信号
+ }
+ }
companion object {
@JvmStatic
diff --git a/myphoneinfo/src/main/res/layout/fragment_network.xml b/myphoneinfo/src/main/res/layout/fragment_network.xml
index d413f4b..eb0e868 100644
--- a/myphoneinfo/src/main/res/layout/fragment_network.xml
+++ b/myphoneinfo/src/main/res/layout/fragment_network.xml
@@ -77,7 +77,7 @@
style="@style/TextBig"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="Wi-Fi"
+ android:text=""
android:textStyle="bold"
tools:ignore="RelativeOverlap" />
@@ -86,7 +86,7 @@
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="LUX·433 Mbps"
+ android:text=""
android:textStyle="bold"
tools:ignore="RelativeOverlap" />
@@ -95,7 +95,7 @@
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="80% -60dBm"
+ android:text=""
android:textStyle="bold"
tools:ignore="RelativeOverlap" />
@@ -189,26 +189,17 @@
-
+ android:id="@+id/simInfo1"
+ layout="@layout/item_set_sim"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
-
-
-
+ android:id="@+id/simInfo2"
+ layout="@layout/item_set_sim"
+ android:layout_width="match_parent"
+ android:visibility="gone"
+ android:layout_height="wrap_content"/>
diff --git a/myphoneinfo/src/main/res/layout/item_set_sim.xml b/myphoneinfo/src/main/res/layout/item_set_sim.xml
new file mode 100644
index 0000000..4c7b927
--- /dev/null
+++ b/myphoneinfo/src/main/res/layout/item_set_sim.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/myphoneinfo/src/main/res/values/strings.xml b/myphoneinfo/src/main/res/values/strings.xml
index 012a405..89c34c6 100644
--- a/myphoneinfo/src/main/res/values/strings.xml
+++ b/myphoneinfo/src/main/res/values/strings.xml
@@ -119,7 +119,7 @@
Show
OK
Mobile Data
- Dual SIM dual standby
+ Dual SIM
eSIM
SIM 1
SIM 2
@@ -322,5 +322,10 @@
Connected
Not connected
GPS
-
+ 802.11 b/a/g/n/ac/ax/be
+ Wi-Fi Direct support
+ Wi-Fi Aware support
+ Wi-Fi Passpoint support
+ 5GHz band support
+ 6GHz band support
\ No newline at end of file