From 5f38f1910386d3bce27cc96292fac991a1205f1c Mon Sep 17 00:00:00 2001 From: yuqian Date: Tue, 23 Dec 2025 15:51:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9camera,=E6=8E=A5=E5=85=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../myphoneinfo/adapter/AppListAdapter.kt | 10 +- .../myphoneinfo/dashboard/AppsFragment.kt | 6 + .../myphoneinfo/dashboard/CameraFragment.kt | 105 +- .../myphoneinfo/dashboard/NetworkFragment.kt | 54 +- .../myphoneinfo/dialog/DialogCameraMore.kt | 8 +- .../src/main/res/drawable/check_selector.xml | 5 + .../main/res/layout/common_check_style.xml | 2 +- .../src/main/res/layout/fragment_apps.xml | 1 - .../src/main/res/layout/fragment_camera.xml | 445 +------ .../src/main/res/layout/fragment_network.xml | 1056 +---------------- .../src/main/res/layout/item_app_list.xml | 17 +- .../src/main/res/layout/item_camera_type.xml | 116 ++ .../src/main/res/layout/network_layout.xml | 186 +++ .../src/main/res/mipmap-xhdpi/attention.png | Bin 1434 -> 1351 bytes .../src/main/res/mipmap-xhdpi/camera.png | Bin 3662 -> 1575 bytes .../src/main/res/mipmap-xhdpi/check_false.png | Bin 1015 -> 1038 bytes .../src/main/res/mipmap-xhdpi/check_true.png | Bin 1237 -> 1095 bytes myphoneinfo/src/main/res/values/strings.xml | 5 +- 18 files changed, 514 insertions(+), 1502 deletions(-) create mode 100644 myphoneinfo/src/main/res/drawable/check_selector.xml create mode 100644 myphoneinfo/src/main/res/layout/item_camera_type.xml create mode 100644 myphoneinfo/src/main/res/layout/network_layout.xml diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/adapter/AppListAdapter.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/adapter/AppListAdapter.kt index 6e1b386..4d58685 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/adapter/AppListAdapter.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/adapter/AppListAdapter.kt @@ -28,11 +28,11 @@ class AppListAdapter: RecyclerView.Adapter() { holder.binding.view.setOnClickListener { listener.onShowAppSelectDialog() } - if(position==itemCount-1){ - holder.binding.view2.visibility=View.VISIBLE - }else{ - holder.binding.view2.visibility=View.GONE - } +// if(position==itemCount-1){ +// holder.binding.view2.visibility=View.VISIBLE +// }else{ +// holder.binding.view2.visibility=View.GONE +// } } fun setOnclickListener(listener: OnShowDialogListener) { this.listener = listener diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt index 36e1642..fcb3717 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt @@ -36,6 +36,12 @@ class AppsFragment : Fragment(),AppListAdapter.OnShowDialogListener { binding.llTitle.setOnClickListener { bottomDialog= BottomDialogFragment(type = "apps", sel = sel, invoke = {item-> sel = item + binding.tvTitle.text=when(item){ + 0 -> "User(23)" + 1 -> "System(23)" + 2 -> "All(23)" + else -> "User" + } }) Log.d("sel", sel.toString()) bottomDialog.show(requireActivity().supportFragmentManager, "BottomDialogFragment") diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/CameraFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/CameraFragment.kt index 5d2b8cb..fa97463 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/CameraFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/CameraFragment.kt @@ -5,14 +5,17 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.compose.material3.Text +import androidx.fragment.app.FragmentContainer +import com.google.android.material.textview.MaterialTextView +import com.xyzshell.andinfo.AndInfo import com.xyzshell.myphoneinfo.R import com.xyzshell.myphoneinfo.databinding.FragmentCameraBinding +import com.xyzshell.myphoneinfo.databinding.ItemCameraTypeBinding import com.xyzshell.myphoneinfo.dialog.DialogCameraMore class CameraFragment : Fragment() { private lateinit var binding:FragmentCameraBinding; - private var dialogCamera0: DialogCameraMore? = null - private var dialogCamera1: DialogCameraMore? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -28,24 +31,98 @@ class CameraFragment : Fragment() { // Inflate the layout for this fragment binding = FragmentCameraBinding.inflate(inflater, container, false) initText() - binding.rearMore.setOnClickListener { - dialogCamera0= dialogCamera0?:DialogCameraMore(0) - dialogCamera0?.show(childFragmentManager, "DialogCameraMore0") - } - binding.frontMore.setOnClickListener { - dialogCamera1= dialogCamera1?:DialogCameraMore(1) - dialogCamera1?.show(childFragmentManager, "DialogCameraMore1") - } + +// binding.frontMore.setOnClickListener { +// dialogCamera1= dialogCamera1?:DialogCameraMore(1) +// dialogCamera1?.show(childFragmentManager, "DialogCameraMore1") +// } return binding.root } private fun initText() { - binding.rearCheck1.content.text=getString(R.string.optical_image_stabilization) - binding.rearCheck2.content.text=getString(R.string.flash) - binding.frontCheck1.content.text=getString(R.string.optical_image_stabilization) - binding.frontCheck2.content.text=getString(R.string.flash) + val cameraInfo = AndInfo.instance.camera + val cameraIds = cameraInfo.cameraIds + if(!cameraIds.isEmpty()){ + cameraIds.forEachIndexed { index, cameraId -> + val characteristics = cameraInfo.getCameraCharacteristics(cameraId) + characteristics?.let { + + val cameraCardView = LayoutInflater.from(context).inflate( + R.layout.item_camera_type, + binding.llCamera, + false + ) + val itemBinding = ItemCameraTypeBinding.bind(cameraCardView) + + // 2. 设置标题(区分前后摄像头) + val facing = cameraInfo.getCameraFacing(it).toString() + val cameraName = when (facing) { + "FRONT" -> getString(R.string.front_camera_1) + "${index + 1}" + "BACK" -> getString(R.string.rear_camera_1)+"${index + 1}" + + else -> "camera ${index + 1}" + } + itemBinding.titleCon.text = cameraName + + // 3. 设置相机规格参数 + + cameraInfo.getPixelArraySize(it)?.let { size -> + itemBinding.conText1.text = "${size} MP" + } + + cameraInfo.getAvailableApertures(it)?.let { apertures -> + if (apertures.isNotEmpty()) { + itemBinding.conText2.text = "f/${apertures[0]}" // 取第一个光圈值 + } + } + + // 4. 设置详细信息(使用 include 的文本) + + itemBinding.camText1.textTitle.text=getString(R.string.resolution) + itemBinding.camText2.textTitle.text=getString(R.string.sensor_size) + itemBinding.camText3.textTitle.text=getString(R.string.pixel_size) + itemBinding.camText4.textTitle.text=getString(R.string._35mm_equivalent_focal_length) + itemBinding.camText5.textTitle.text=getString(R.string.shutter_speed) + itemBinding.camText6.textTitle.text=getString(R.string.iso_sensitivity_range) + itemBinding.rearCheck2.content.text=getString(R.string.flash) + itemBinding.rearCheck1.content.text=getString(R.string.optical_image_stabilization) +// checkBox2?.text = "光学防抖" +// checkBox2?.isChecked = capabilities?.contains("OPTICAL_IMAGE_STABILIZATION") ?: false + + //像素阵列大小 + cameraInfo.getPixelArraySize(it)?.let { size -> + itemBinding.camText1.textContent.text = size + + } + // 传感器物理尺寸 + cameraInfo.getSensorPhysicalSize(it)?.let { size -> + itemBinding.camText2.textContent.text=size + } + + // 闪光灯 + cameraInfo.hasFlashUnit(it)?.let { hasFlash -> + itemBinding.rearCheck2.image.isSelected=hasFlash + } + + + + // 6. 设置"更多"按钮点击事件 + itemBinding.rearMore.setOnClickListener { + var dialogCamera0: DialogCameraMore? = null + dialogCamera0= null ?:DialogCameraMore(cameraName) + dialogCamera0.show(childFragmentManager, "DialogCameraMore") + } + + // 7. 添加到父容器 + binding.llCamera.addView(cameraCardView) + + } + } + } + binding.videoCheck1.content.text=getString(R.string.hight_speed_video) binding.videoCheck2.content.text=getString(R.string.video_stabilization) + } companion object { 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 475d6f9..00d38b5 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/NetworkFragment.kt @@ -30,20 +30,60 @@ private lateinit var binding:FragmentNetworkBinding override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + //connection + binding.networkLayout.wfText1.textTitle.text=getString(R.string.status) + 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) + + //dhcp + binding.networkLayout.dhText1.textTitle.text=getString(R.string.dhcp_server) + binding.networkLayout.dhText2.textTitle.text=getString(R.string.dhcp_lease_time) + binding.networkLayout.dhText3.textTitle.text=getString(R.string.gateway) + binding.networkLayout.dhText4.textTitle.text=getString(R.string.subnet_mask) + binding.networkLayout.dhText5.textTitle.text=getString(R.string.dns1) + binding.networkLayout.dhText6.textTitle.text=getString(R.string.dns2) + binding.networkLayout.dhText7.textTitle.text=getString(R.string.ip_address) + binding.networkLayout.dhText8.textTitle.text=getString(R.string.ipv6) + + //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) + + if(status==0){ binding.noConnect.visibility=View.VISIBLE binding.connectData.visibility=View.GONE - binding.wifiDev1.text="Disconnected" - binding.wifiList.visibility=View.GONE - binding.llPubShow.visibility=View.GONE + binding.networkLayout.wfText1.textContent.text="Disconnected" + binding.networkLayout.wifiList.visibility=View.GONE + binding.networkLayout.llPubShow.visibility=View.GONE }else{ binding.noConnect.visibility=View.GONE binding.connectData.visibility=View.VISIBLE - binding.wifiDev1.text="Connected" - binding.wifiList.visibility=View.VISIBLE - binding.llPubShow.visibility=View.VISIBLE + binding.networkLayout.wfText1.textContent.text="Connected" + binding.networkLayout.wifiList.visibility=View.VISIBLE + binding.networkLayout.llPubShow.visibility=View.VISIBLE } - binding.pubShow.setOnClickListener{ + binding.networkLayout.pubShow.setOnClickListener{ val tag = "showLoadFragment" if (requireActivity().supportFragmentManager.findFragmentByTag(tag) == null) { val showLoadFragment = ShowLoadFragment() diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/DialogCameraMore.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/DialogCameraMore.kt index f065039..860b86e 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/DialogCameraMore.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/DialogCameraMore.kt @@ -10,12 +10,8 @@ import com.xyzshell.myphoneinfo.base.BaseDialogFragment import com.xyzshell.myphoneinfo.databinding.DialogCameraMoreBinding import com.xyzshell.myphoneinfo.databinding.DialogCpuInfoBinding -class DialogCameraMore(private val type:Int) :BaseDialogFragment(DialogCameraMoreBinding::inflate){ - override fun getTitle(): String = if(type==0){ - resources.getString(R.string.rear_camera_1)} - else{ - resources.getString(R.string.front_camera_1) - } +class DialogCameraMore(private val name:String) :BaseDialogFragment(DialogCameraMoreBinding::inflate){ + override fun getTitle(): String = name override fun getIconRes(): Int? =9 diff --git a/myphoneinfo/src/main/res/drawable/check_selector.xml b/myphoneinfo/src/main/res/drawable/check_selector.xml new file mode 100644 index 0000000..24e907f --- /dev/null +++ b/myphoneinfo/src/main/res/drawable/check_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/layout/common_check_style.xml b/myphoneinfo/src/main/res/layout/common_check_style.xml index 5cb48c5..b3b4e03 100644 --- a/myphoneinfo/src/main/res/layout/common_check_style.xml +++ b/myphoneinfo/src/main/res/layout/common_check_style.xml @@ -11,7 +11,7 @@ android:layout_width="20dp" android:layout_height="20dp" android:layout_gravity="center_vertical" - android:src="@mipmap/check_false" /> + android:src="@drawable/check_selector" /> + android:orientation="vertical"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + layout="@layout/network_layout"/> - - - - - - - - - - - - - - - - - - + + + - - - - - - + - - - - - - - - - - - - - - - - - - + + + - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/myphoneinfo/src/main/res/layout/item_app_list.xml b/myphoneinfo/src/main/res/layout/item_app_list.xml index bafc8f7..2b2fda4 100644 --- a/myphoneinfo/src/main/res/layout/item_app_list.xml +++ b/myphoneinfo/src/main/res/layout/item_app_list.xml @@ -22,24 +22,25 @@ android:orientation="vertical"> - + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/layout/item_camera_type.xml b/myphoneinfo/src/main/res/layout/item_camera_type.xml new file mode 100644 index 0000000..8328e9c --- /dev/null +++ b/myphoneinfo/src/main/res/layout/item_camera_type.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/layout/network_layout.xml b/myphoneinfo/src/main/res/layout/network_layout.xml new file mode 100644 index 0000000..bab75cb --- /dev/null +++ b/myphoneinfo/src/main/res/layout/network_layout.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/attention.png b/myphoneinfo/src/main/res/mipmap-xhdpi/attention.png index 8f43940cbe799da2f108289417bad38388ef209d..c27ad9d689d3155c60cfb271df537214a58b5430 100644 GIT binary patch delta 1317 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 Hu0mjfz0H=~ diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png b/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png index 769d58860c7112d19f8ba9d03de0973abaa17126..41cb84596b75eec2913a0800a3b556c142738405 100644 GIT binary patch delta 1543 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 R)~Nsh002ovPDHLkV1mV!@g)EN diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png b/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png index 6b3a6076c24618dd2e1372eae73267e2a28c7241..cfa7c6e01dd4d92231c7a2bb1d3e1f4e3313d27d 100644 GIT binary patch delta 1001 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 delta 1203 zcmV;k1WfzK2-OK8iBL{Q4GJ0x0000DNk~Le0000k0000k2nGNE09UyyH<2MUe*|ht zL_t(|0nJ%WavDbzey^D!B_#`P5PSmRT_QPEaDtE%2yYXJL{%)}l}4+SWmkbBJ6lU9 zKskX~2q#N&g5VQ`O|00=^vipL2hH#^fBb$`63}$deBJZ<>+d}f7DTaW2>OWBC!)VHe}J8#t$TmgpY~w^Af$kh{a}1?sF2D`s|cw;9e~VL zxBAmHq(CC#?&@ZDk5J>We?=DpKMhiF_4bF8vn0b}6MuC1yr_X*BSIcl0iFP$vf@60 zNaC`}L-X@fzVb1w1=uo&|DJW~)*!T3*q2{5f5~UeOq<^pV4dLAcWkE=f3|_=5*O0S z$h=uuXhb1`{7m8-C+#7Gyqau~nBEG~0_Gs0Dx4<2nj$V6aVtpQqc9SOAOfMX|Lb`L z6}*Nm1QM2RYfn1f=irJXoWhoZ_zdxf%$WH8tMhFOksz4cM`LGvmfWwnh6-#s5b?-c zb(gps+Z)qs>LWR&ZuJB~e^Wi8ckY9^Q;|0=aa4E+n*ft`Y|WeQX-7VGe{8ha`rd>M zVZz_KuX5O=x2B7LdZvB%Fu5^b1d_hEt^GXZG{1iJ;s~^E#k+_uD4yY7bWh1vumcMMiOyz`e-G< z4EgY0RPRNY-sMjSwPKlk;KI# zj3o0Ox3!aFQHJn=e6t-VOd^Z zHs>HlKla2sZGS_jULTl4v&7^3fu3_T`kTvVWi)U(2?}RMN>(RcZ!C%e_*;a$=5X-H zi$-^Ajmjix(P)j>URo`Nt6~x=@8XZ3W6@lHi-d!a7uj5je@4e)!KFM*ll5?6sQyQ_ z5lLqBgqB~AA;2;gn@!f!;XjZRiYndj8#9%~E!7#jQuT`T9ckbUod-(dG}UpgvBhC9 zC25{UuZpzT4+&3K$2Gw3kQ_PG(DrNmvNSpZSMtw2&PU;5|IM>WzUx_a%J+e;C~hMzTgMWsnBq)KItNZ>6N&TfulwjgS1Soo!7WCffw&=69E4;Bl(VUze| zjb~K?A`1H(Bp*UrFgKC#%+qF+hI(P71)&*`3}l&nf4I&KD;rV#d{m(*c1cBCBwzJ( zWuYTAM3&>p{B#}?*McO=XK!=3vjyH?asgnpzhVvT&f6id_pB(4c>KC|Cn zCn4-%;p&^HkJKL>o&aKIPYO(dypmUx3pWGaO+7BLy#rFctn>aR4Ou__2fLCw6&|hF R`2YX_2>?k&PDHLkV1m6bIKTh^ diff --git a/myphoneinfo/src/main/res/values/strings.xml b/myphoneinfo/src/main/res/values/strings.xml index cc778df..4fa79d7 100644 --- a/myphoneinfo/src/main/res/values/strings.xml +++ b/myphoneinfo/src/main/res/values/strings.xml @@ -31,6 +31,7 @@ Network Wi-Fi IP address + IPV6 Link speed Signal strength Mobile @@ -263,8 +264,8 @@ Cluster Min frequency More - Front camera 1 - Rear camera 1 + Front camera + Rear camera Video capture Profles High speed video