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