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 8f43940..c27ad9d 100644 Binary files a/myphoneinfo/src/main/res/mipmap-xhdpi/attention.png and b/myphoneinfo/src/main/res/mipmap-xhdpi/attention.png differ diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png b/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png index 769d588..41cb845 100644 Binary files a/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png and b/myphoneinfo/src/main/res/mipmap-xhdpi/camera.png differ diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png b/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png index 6b3a607..cfa7c6e 100644 Binary files a/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png and b/myphoneinfo/src/main/res/mipmap-xhdpi/check_false.png differ diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/check_true.png b/myphoneinfo/src/main/res/mipmap-xhdpi/check_true.png index dc070a7..bc82a57 100644 Binary files a/myphoneinfo/src/main/res/mipmap-xhdpi/check_true.png and b/myphoneinfo/src/main/res/mipmap-xhdpi/check_true.png differ 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