This commit is contained in:
xsean 2025-12-29 11:39:23 +08:00
commit 264a45f4db
23 changed files with 736 additions and 501 deletions

View File

@ -913,6 +913,30 @@ class CpuInfo {
return sb.toString()
}
fun getCpuText():String{//自定义衍生方法
val sb = StringBuilder()
val clusterInfo = getClusterInfo()
if (clusterInfo.bigCoreCount > 0) {
sb.append("大核: ${clusterInfo.bigCoreCount} 个, 最高频率: ${formatFrequency(clusterInfo.bigCoreFreq)}\n")
}
if (clusterInfo.midCoreCount > 0) {
sb.append("中核: ${clusterInfo.midCoreCount} 个, 最高频率: ${formatFrequency(clusterInfo.midCoreFreq)}\n")
}
if (clusterInfo.littleCoreCount > 0) {
sb.append("小核: ${clusterInfo.littleCoreCount} 个, 最高频率: ${formatFrequency(clusterInfo.littleCoreFreq)}\n")
}
return sb.toString()
}
//去重频率
fun getFrequencyText():String {//自定义衍生方法
return getCoreFrequencies()
.map { freq ->
"${formatFrequency(freq.minFreq.toULong() * 1000UL)}-${formatFrequency(freq.maxFreq.toULong() * 1000UL)}"
}
.distinct() // 自动去重
.joinToString("\n") // 每行一个
}
/**
* 格式化频率显示
* @param freqHz 频率Hz

View File

@ -0,0 +1,91 @@
package com.xyzshell.myphoneinfo.custom
import kotlin.math.abs
object SetNumberOrWordUtils {
fun setDecimal1(double: Double): String{
return "%.1f".format(double)
}
fun setDecimal0(double: Double): String{
return double.toInt().toString()
}
fun toTitleCase(sentence: String): String {
if (sentence.isEmpty()) return ""
val words = sentence.trim().split("\\s+".toRegex()) // 按一个或多个空格分割
return if (words.isNotEmpty()) {
// 第一个单词首字母大写
val firstWord = words[0].lowercase().replaceFirstChar { it.uppercase() }
// 其余单词保持小写
val remainingWords = words.drop(1).joinToString(" ") { it.lowercase() }
if (remainingWords.isNotEmpty()) {
"$firstWord $remainingWords"
} else {
firstWord
}
} else {
""
}
}
/*
将数字加1并转换为字符串
*/
fun convertToStringNormal(string: String): String {
return (Integer.parseInt(string) + 1).toString()
}
/**
* 智能宽高比转换
* 输入width=1080, height=2800
* 输出20:9近似值
*/
fun convertToApproximateAspectRatio(width: Int, height: Int): String {
val isPortrait = height > width
// 总是按横屏计算(宽>高)
val displayWidth = if (isPortrait) height else width
val displayHeight = if (isPortrait) width else height
// 计算实际比例
val actualRatio = displayWidth.toDouble() / displayHeight
// 常见宽高比映射表(比例值 -> 宽高比字符串)
val commonRatios = mapOf(
1.333 to "4:3", // 4:3 = 1.333
1.5 to "3:2", // 3:2 = 1.5
1.6 to "16:10", // 16:10 = 1.6
1.667 to "5:3", // 5:3 = 1.667
1.778 to "16:9", // 16:9 = 1.778
2.0 to "18:9", // 18:9 = 2.0
2.111 to "19:9", // 19:9 = 2.111
2.222 to "20:9", // 20:9 = 2.222 ← 您要的
2.333 to "21:9", // 21:9 = 2.333
2.4 to "24:10", // 24:10 = 2.4
2.5 to "25:10", // 25:10 = 2.5
)
// 找到最接近的常见比例
var closestRatio = "16:9"
var minDifference = Double.MAX_VALUE
for ((ratioValue, ratioStr) in commonRatios) {
val difference = abs(actualRatio - ratioValue)
if (difference < minDifference) {
minDifference = difference
closestRatio = ratioStr
}
}
return closestRatio
}
}

View File

@ -2,10 +2,18 @@ package com.xyzshell.myphoneinfo.dashboard
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import com.xyzshell.andinfo.AndInfo
import com.xyzshell.andinfo.libs.cpu.models.Processor
import com.xyzshell.myphoneinfo.R
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.convertToStringNormal
import com.xyzshell.myphoneinfo.databinding.ActivityAnalysisBinding
import com.xyzshell.myphoneinfo.databinding.ItemAnalysisBinding
import com.xyzshell.myphoneinfo.databinding.ItemCpuAnalysisBinding
import com.xyzshell.myphoneinfo.dialog.DialogCpuInfo
import kotlin.collections.component1
import kotlin.collections.component2
class AnalysisActivity : AppCompatActivity() {
private lateinit var binding: ActivityAnalysisBinding
@ -30,23 +38,73 @@ class AnalysisActivity : AppCompatActivity() {
}
private fun initText() {
val cpu = AndInfo.instance.cpu
//processor
binding.proText1.textTitle.text=getString(R.string.hardware)
binding.proText1.textContent.text=cpu.getProcessorName()
binding.proText2.textTitle.text=getString(R.string.manufacturer)
binding.proText2.textContent.text=cpu.getVendor()
binding.proText3.textTitle.text=getString(R.string.marketing_name)
binding.proText3.textContent.text=cpu.getProcessorName()
binding.proText4.textTitle.text=getString(R.string.process)
binding.proText4.textContent.text=cpu.getProcess()
binding.proText5.textTitle.text=getString(R.string.cores)
binding.proText5.textContent.text=cpu.getCoreCount().toString()
binding.proText6.textTitle.text=getString(R.string.CPU)
binding.proText6.textContent.text=cpu.getAllArchitectures().joinToString()
binding.proText7.textTitle.text=getString(R.string.frequencies)
binding.proText7.textContent.text=cpu.getFrequencyText()
binding.proText8.textTitle.text=getString(R.string.architecture)
binding.proText8.textContent.text=cpu.getArchitecture()
binding.proText9.textTitle.text=getString(R.string.ABI)
binding.proText9.textContent.text=cpu.getAbi()
binding.proText10.textTitle.text=getString(R.string.supported_ABls)
binding.proText10.textContent.text=cpu.getSupportedAbis().joinToString()
binding.proText11.textTitle.text=getString(R.string.features)
//cluster1
binding.clu1Text1.textTitle.text=getString(R.string.type)
binding.clu1Text2.textTitle.text=getString(R.string.vendor)
binding.clu1Text3.textTitle.text=getString(R.string.cluster)
binding.clu1Text4.textTitle.text=getString(R.string.max_frequency)
binding.clu1Text5.textTitle.text=getString(R.string.min_frequency)
binding.proText11.textContent.text=cpu.getCpuFeatures().joinToString()
setCluster()
}
/**
* 设置集群信息*/
private fun setCluster() {
val groupedProcessors = mutableMapOf<UInt, MutableList<Processor>>()
//给簇分类
AndInfo.instance.cpu.processors.forEach { processor ->
val clusterId = processor.cluster.clusterId
val list = groupedProcessors.getOrPut(clusterId) { mutableListOf() }
list.add(processor)
}
groupedProcessors.forEach { (clusterId, processors) ->
println("集群 $clusterId: ${processors.size} 个处理器")
val itemView= LayoutInflater.from(this).inflate(R.layout.item_analysis,binding.llCluster,false)
val itemBinding = ItemAnalysisBinding.bind(itemView)
itemBinding.cluster1Title.text=getString(R.string.cluster)+convertToStringNormal(clusterId.toString())
val coresRangeList= mutableListOf<String>()
//获取簇范围
processors.forEach { processor ->
coresRangeList.add(processor.core.coreId.toString())
}
processors.forEach { processor ->
//设置每个cpu信息
val itemGroup= LayoutInflater.from(this).inflate(R.layout.item_cpu_analysis,itemBinding.clusterInfo,false)
val itemGroupBinding = ItemCpuAnalysisBinding.bind(itemGroup)
itemGroupBinding.cputitle.text="cpu ${processor.core.coreId}"
itemGroupBinding.clu1Text1.textTitle.text=getString(R.string.type)
itemGroupBinding.clu1Text1.textContent.text=processor.cluster.uarch.toString()
itemGroupBinding.clu1Text2.textTitle.text=getString(R.string.vendor)
itemGroupBinding.clu1Text2.textContent.text=processor.cluster.vendor.toString()
itemGroupBinding.clu1Text3.textTitle.text=getString(R.string.cluster)
itemGroupBinding.clu1Text3.textContent.text="$coresRangeList"
itemGroupBinding.clu1Text4.textTitle.text=getString(R.string.max_frequency)
itemGroupBinding.clu1Text4.textContent.text=processor.cluster.frequency.toString()+" MHz"
itemGroupBinding.clu1Text5.textTitle.text=getString(R.string.min_frequency)
itemBinding.clusterInfo.addView(itemGroup)
println(" CPU${processor.core.coreId}: ${processor.cluster.uarch}")
}
//添加到父容器
binding.llCluster.addView(itemView)
}
}
}

View File

@ -1,21 +1,22 @@
package com.xyzshell.myphoneinfo.dashboard
import android.hardware.camera2.CameraCharacteristics
import android.os.Bundle
import android.util.Log
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.custom.SetNumberOrWordUtils.setDecimal0
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.setDecimal1
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 lateinit var binding:FragmentCameraBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -60,22 +61,25 @@ class CameraFragment : Fragment() {
"FRONT" -> getString(R.string.front_camera_1) + "${index + 1}"
"BACK" -> getString(R.string.rear_camera_1)+"${index + 1}"
else -> "camera ${index + 1}"
else -> "External 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]}" // 取第一个光圈值
//取第一个相机的视频帧率
if(index==0){
cameraInfo.getMaxFrameRate(it).let { maxFrameRate->
binding.video.textTitle.text=getString(R.string.max_frequency)
binding.video.textContent.text=maxFrameRate.toString()+"HZ"
}
cameraInfo.supportsHighSpeedVideo(it).let { hasHighSpeedVideo ->
binding.videoCheck1.image.isSelected=hasHighSpeedVideo
}
cameraInfo.hasVideoStabilization(it).let { hasVideoStabilization ->
binding.videoCheck2.image.isSelected=hasVideoStabilization
}
}
// 4. 设置详细信息(使用 include 的文本)
itemBinding.camText1.textTitle.text=getString(R.string.resolution)
@ -86,9 +90,18 @@ class CameraFragment : Fragment() {
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.getMegaPixels(it)?.let { size ->
itemBinding.conText1.text = "${setDecimal1(size)} MP"
}
//光圈值
cameraInfo.getAvailableApertures(it)?.let { apertures ->
if (apertures.isNotEmpty()) {
itemBinding.conText2.text = "f/${apertures[0]}" // 取第一个光圈值
}
}
//像素阵列大小
cameraInfo.getPixelArraySize(it)?.let { size ->
itemBinding.camText1.textContent.text = size
@ -98,18 +111,38 @@ class CameraFragment : Fragment() {
cameraInfo.getSensorPhysicalSize(it)?.let { size ->
itemBinding.camText2.textContent.text=size
}
// 传感器物理尺寸
cameraInfo.getPixelSize(it)?.let { size ->
itemBinding.camText3.textContent.text="${setDecimal0(size)}μm"
}
// 35mm等效焦距
cameraInfo.getFocal35mmEquivalent(it)?.let { size ->
itemBinding.camText4.textContent.text="${size.toInt()}mm"
}
// 快门速度
cameraInfo.getShutterSpeedRange(it)?.let { size ->
itemBinding.camText5.textContent.text=size
}
// ISO感光范围
cameraInfo.getIsoRange(it)?.let { size ->
itemBinding.camText6.textContent.text=size.lower.toString() + " - " + size.upper.toString()
}
// 光学防抖
cameraInfo.hasOpticalStabilization(it).let { hasOpticalStabilization ->
itemBinding.rearCheck1.image.isSelected=hasOpticalStabilization
}
// 闪光灯
cameraInfo.hasFlashUnit(it)?.let { hasFlash ->
itemBinding.rearCheck2.image.isSelected=hasFlash
}
// 6. 设置"更多"按钮点击事件
itemBinding.rearMore.setOnClickListener {
var dialogCamera0: DialogCameraMore? = null
dialogCamera0= null ?:DialogCameraMore(cameraName)
dialogCamera0= null ?:DialogCameraMore(cameraName,cameraId)
dialogCamera0.show(childFragmentManager, "DialogCameraMore")
}
@ -123,6 +156,7 @@ class CameraFragment : Fragment() {
binding.videoCheck1.content.text=getString(R.string.hight_speed_video)
binding.videoCheck2.content.text=getString(R.string.video_stabilization)
}
companion object {

View File

@ -8,7 +8,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.xyzshell.andinfo.AndInfo
import com.xyzshell.andinfo.libs.CpuInfo
import com.xyzshell.myphoneinfo.R
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.convertToApproximateAspectRatio
import com.xyzshell.myphoneinfo.databinding.FragmentHardWareBinding
import com.xyzshell.myphoneinfo.dialog.DialogBlueTooth
import com.xyzshell.myphoneinfo.dialog.DialogDiskPart
@ -63,83 +65,125 @@ class HardWareFragment : Fragment() {
}
private fun initText() {
val cpu = AndInfo.instance.cpu//cpu信息
val device = AndInfo.instance.device//设备信息
val gpu=AndInfo.instance.gpu//gpu信息
//processor
//处理器
binding.text0.textTitle.text = getString(R.string.processor)
binding.text0.textContent.text= cpu.getProcessorName()
//制造商
binding.text1.textTitle.text = getString(R.string.vendor)
binding.text1.textContent.text=AndInfo.instance.device.manufacturer
binding.text1.textContent.text=cpu.getVendor()
//硬件
binding.text2.textTitle.text = getString(R.string.hardware)
binding.text2.textContent.text=AndInfo.instance.device.hardwareName
binding.text2.textContent.text=cpu.getProcessorName()
//核心数
binding.text3.textTitle.text = getString(R.string.cores)
binding.text3.textContent.text=AndInfo.instance.cpu.cores.size.toString()
binding.text3.textContent.text=cpu.cores.size.toString()
//cpu内核详情
binding.text4.textTitle.text = getString(R.string.CPU)
binding.text4.textContent.text=AndInfo.instance.cpu.text()
binding.text4.textContent.text=cpu.getAllArchitectures().joinToString()
//制程工艺
binding.text5.textTitle.text = getString(R.string.process)
binding.text5.textContent.text=cpu.getProcessInfo().process
//架构
binding.text6.textTitle.text = getString(R.string.architecture)
binding.text6.textContent.text=cpu.getArchitecture()
//ABI
binding.text7.textTitle.text = getString(R.string.ABI)
binding.text7.textContent.text=cpu.getAbi()
//supported_ABls
binding.text8.textTitle.text = getString(R.string.supported_ABls)
binding.text8.textContent.text=cpu.getSupportedAbis().joinToString()
//频率
binding.text9.textTitle.text = getString(R.string.frequencies)
binding.text9.textContent.text=cpu.getFrequencyText()
//gpu
binding.cpuText1.textTitle.text = getString(R.string.vendor)
binding.cpuText2.textTitle.text = getString(R.string.gpu)
val gpuInfo=AndInfo.instance.gpu.getGpuInformation()
gpuInfo.vkPhysicalDevices?.let { devices ->
binding.gpuText1.textTitle.text = getString(R.string.vendor)
binding.gpuText1.textContent.text=gpu.getVendorName()
binding.gpuText2.textTitle.text = getString(R.string.gpu)
gpu.getGpuInformation().vkPhysicalDevices?.let { devices ->
if (devices.isNotEmpty()) {
devices.forEachIndexed { index, vkPhysicalDevice ->
binding.cpuText1.textContent.text=vkPhysicalDevice.vendorId.toString()
binding.cpuText2.textContent.text=vkPhysicalDevice.deviceName
binding.gpuText2.textContent.text=vkPhysicalDevice.deviceName
}
}
}
binding.cpuText3.textTitle.text=getString(R.string.max_frequency)
binding.cpuText4.textTitle.text=getString(R.string.architecture)
binding.cpuText5.textTitle.text=getString(R.string.cores)
binding.cpuText6.textTitle.text=getString(R.string.total_l2)
binding.cpuText7.textTitle.text=getString(R.string.bus_width)
binding.cpuText8.textTitle.text=getString(R.string.vulkan_support)
binding.cpuText9.textTitle.text=getString(R.string.vulkan_API)
binding.gpuText3.textTitle.text=getString(R.string.max_frequency)
binding.gpuText4.textTitle.text=getString(R.string.architecture)
binding.gpuText5.textTitle.text=getString(R.string.cores)
binding.gpuText5.textContent.text=gpu.getOpenGLExtensionCount().toString()
binding.gpuText6.textTitle.text=getString(R.string.total_l2)
binding.gpuText7.textTitle.text=getString(R.string.bus_width)
binding.gpuText8.textTitle.text=getString(R.string.vulkan_support)
binding.gpuText8.textContent.text=gpu.isVulkanSupported().toString()
binding.gpuText9.textTitle.text=getString(R.string.vulkan_API)
binding.gpuText9.textContent.text=gpu.getVulkanApiVersion()
binding.open1.text=getString(R.string.opengl)
gpuInfo.eglInformation?.let { eglInfo ->
gpu.getGpuInformation().eglInformation?.let { eglInfo ->
eglInfo.eglExtensions?.let {
dialogExtension?.setContent(it.joinToString())
}
eglInfo.glInformation?.let{glInfo ->
binding.openItem1.text=glInfo.glVendor
binding.openItem2.text=glInfo.glRenderer
binding.openItem3.text=glInfo.glVersion
}
}
binding.openItem1.text=gpu.getVendorName()
binding.openItem2.text=gpu.getRendererName()
binding.openItem3.text=gpu.getOpenGLVersion()
//display
val defaultDisplayInfo = AndInfo.instance.display.getDefaultDisplayInfo()
val display=AndInfo.instance.display//显示信息
val defaultDisplayInfo = display.getDefaultDisplayInfo()
val width = defaultDisplayInfo?.widthPixels.toString()
val height = defaultDisplayInfo?.heightPixels.toString()
if(defaultDisplayInfo!=null){
binding.disText1.textContent.text=defaultDisplayInfo.widthPixels.toString()+"x"+defaultDisplayInfo.heightPixels.toString()
binding.disText1.textContent.text=width+"x"+height
}
binding.disText1.textTitle.text=getString(R.string.resolution)
binding.disText2.textTitle.text=getString(R.string.screen_density)//这个是px
binding.disText2.textContent.text=defaultDisplayInfo?.ppi.toString()
binding.disText3.textTitle.text=getString(R.string.screen_density_d)
val dpiStr=defaultDisplayInfo?.densityDpi.toString()+"(xxhdpi)\n"+defaultDisplayInfo?.xdpi?.roundToInt()+"dp"+defaultDisplayInfo?.ydpi?.roundToInt()+"dp"
val dpiStr=defaultDisplayInfo?.densityDpi.toString()+"(xxhdpi)\n"+defaultDisplayInfo?.xdpi?.roundToInt()+"dpx"+defaultDisplayInfo?.ydpi?.roundToInt()+"dp"
binding.disText3.textContent.text=dpiStr
binding.disText4.textTitle.text=getString(R.string.screen_size_e)
binding.disText5.textTitle.text=getString(R.string.aspect_ratio)
binding.disText5.textContent.text=convertToApproximateAspectRatio(width = width.toInt(), height = height.toInt()).toString()
binding.disText6.textTitle.text=getString(R.string.refresh_rate)
binding.disText6.textContent.text=defaultDisplayInfo?.refreshRate.toString()+"HZ"
binding.disText7.textTitle.text=getString(R.string.wide_color_gamut)
binding.disText7.textContent.text=defaultDisplayInfo?.isWideColorGamut.toString()
binding.disText8.textTitle.text=getString(R.string.hdr_support)
binding.disText8.textContent.text=defaultDisplayInfo?.isHdr.toString()
if(defaultDisplayInfo?.isHdr == true){
defaultDisplayInfo.hdrTypes.joinToString()
binding.disText8.textContent.text= defaultDisplayInfo.hdrTypes.joinToString()
}else{
binding.disText8.textContent.text= "No"
}
//memory
val storageInfo = AndInfo.instance.storage//存储信息
val used=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.internalStorageUsedSpace)
val free=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.internalStorageAvailableSpace)
val total=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.internalStorageTotalSpace)
val outused=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.externalStorageUsedSpace?: 0)
val outfree=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.externalStorageAvailableSpace?: 0)
val outtotal=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.externalStorageTotalSpace?: 0)
binding.memoryLayout.memText1.textTitle.text=getString(R.string.ram_size)
binding.memoryLayout.memText1.textContent.text=total
binding.memoryLayout.ram1.text=used+" used"
@ -149,9 +193,9 @@ class HardWareFragment : Fragment() {
//storage
binding.memoryLayout.memText3.textTitle.text=getString(R.string.zram)
binding.memoryLayout.memText3.textContent.text=Formatter.formatFileSize(AndInfo.instance.context, storageInfo.internalStorageTotalSpace)
binding.memoryLayout.ram3.text=used+" used"
binding.memoryLayout.ram4.text=free+" free"
binding.memoryLayout.seekbar2.progress=(used.substring(0,used.indexOf(" ")).toDouble() / total.substring(0,total.indexOf(" ")).toDouble() *100).toInt()
binding.memoryLayout.ram3.text=outused+" used"
binding.memoryLayout.ram4.text=outfree+" free"
binding.memoryLayout.seekbar2.progress=(outused.substring(0,outused.indexOf(" ")).toDouble() / outtotal.substring(0,outtotal.indexOf(" ")).toDouble() *100).toInt()
//fileSystem
binding.memoryLayout.storText1.textTitle.text=getString(R.string.filesystem)

View File

@ -1,16 +1,16 @@
package com.xyzshell.myphoneinfo.dialog
import android.graphics.Typeface
import android.os.Bundle
import android.text.SpannableString
import android.text.style.StyleSpan
import android.view.View
import com.xyzshell.andinfo.AndInfo
import com.xyzshell.myphoneinfo.R
import com.xyzshell.myphoneinfo.base.BaseDialogFragment
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.setDecimal0
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.setDecimal1
import com.xyzshell.myphoneinfo.custom.SetNumberOrWordUtils.toTitleCase
import com.xyzshell.myphoneinfo.databinding.DialogCameraMoreBinding
import com.xyzshell.myphoneinfo.databinding.DialogCpuInfoBinding
class DialogCameraMore(private val name:String) :BaseDialogFragment<DialogCameraMoreBinding>(DialogCameraMoreBinding::inflate){
class DialogCameraMore(private val name:String,private val id:String) :BaseDialogFragment<DialogCameraMoreBinding>(DialogCameraMoreBinding::inflate){
override fun getTitle(): String = name
override fun getIconRes(): Int? =9
@ -19,6 +19,128 @@ class DialogCameraMore(private val name:String) :BaseDialogFragment<DialogCamera
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val cameraInfo = AndInfo.instance.camera
if(!id.isEmpty()){
id.forEachIndexed { index, cameraId ->
val characteristics = cameraInfo.getCameraCharacteristics(id)
characteristics?.let {
// 设置详细信息(使用 include 的文本)
// 设置百万像素
cameraInfo.getMegaPixels(it)?.let { size ->
binding.tv1.setValue("${setDecimal1(size)} MP")
}
//像素阵列大小
cameraInfo.getPixelArraySize(it)?.let { size ->
binding.tv2.setValue(size)
}
// 传感器物理尺寸
cameraInfo.getSensorPhysicalSize(it)?.let { size ->
binding.tv3.setValue(size)
}
// 传感器px尺寸
cameraInfo.getPixelSize(it)?.let { size ->
binding.tv4.setValue("${setDecimal0(size)}μm")
}
// 颜色排列
cameraInfo.getColorFilterArrangement(it)?.let { size ->
binding.tv5.setValue(size)
}
//光圈值
cameraInfo.getAvailableApertures(it)?.let { apertures ->
if (apertures.isNotEmpty()) {
binding.tv6.setValue("f/${apertures[0]}")
}
}
//焦距
cameraInfo.getFocalLength(it)?.let { apertures ->
if (apertures.isNotEmpty()) {
binding.tv7.setValue(apertures[0].toString())
}
}
// 35mm等效焦距
cameraInfo.getFocal35mmEquivalent(it)?.let { size ->
binding.tv8.setValue("${size.toInt()}mm")
}
// 裁切系数
cameraInfo.getFocal35mmEquivalent(it)?.let { size ->
binding.tv9.setValue("${size.toInt()}x")
}
// 快门速度
cameraInfo.getShutterSpeedRange(it)?.let { size ->
binding.tv11.setValue(size)
}
// ISO感光范围
cameraInfo.getIsoRange(it)?.let { size ->
binding.tv12.setValue(size.lower.toString() + " - " + size.upper.toString())
}
// 闪光灯
binding.check1.content.text=getString(R.string.flash)
cameraInfo.hasFlashUnit(it)?.let { hasFlash ->
binding.check1.image.isSelected=hasFlash
}
// 视频防抖
binding.check2.content.text=getString(R.string.video_stabilization)
cameraInfo.hasVideoStabilization(it)?.let { hasVideoStabilization ->
binding.check2.image.isSelected=hasVideoStabilization
}
// 光学防抖
binding.check3.content.text=getString(R.string.optical_image_stabilization)
cameraInfo.hasOpticalStabilization(it).let { hasOpticalStabilization ->
binding.check3.image.isSelected = hasOpticalStabilization
}
// 曝光锁定
// 曝光模式
binding.check4.content.text=getString(R.string.ae_lock)
cameraInfo.getAutoExposureModes(it)?.let { list ->
val allInfo=list.joinToString(" , ") { mode -> mode}
binding.check4.image.isSelected=list.size>2
binding.more2.text=allInfo
}
// 白平衡锁定
// 白平衡模式
binding.check5.content.text=getString(R.string.wb_lock)
cameraInfo.getWhiteBalanceModes(it)?.let { list ->
binding.check5.image.isSelected=list.size>2
val allInfo=list.joinToString(" , ") { mode -> mode}
binding.more4.text=allInfo
}
//功能
cameraInfo.getAvailableCapabilities(it).let{ capabilities ->
val allCapabilities = capabilities.joinToString(",") { capability ->
toTitleCase(capability.name.replace("_", " "))
}
binding.more1.text=allCapabilities
}
//自动对焦模式
cameraInfo.getAvailableCapabilities(it).let{ capabilities ->
val allInfo=capabilities.joinToString(" , ") { capability ->
toTitleCase(capability.name.replace("_", " "))
}
binding.more3.text=allInfo
}
//场景模式
cameraInfo.getSceneModes(it).let{ capabilities ->
val allInfo=capabilities?.joinToString(" , ") { capability ->
toTitleCase(capability.replace("_", " "))
}
binding.more5.text=allInfo
binding.tv10.setValue(capabilities?.get(0) ?: "")
}
}
}
}
}
override fun onNegativeClick() {

View File

@ -3,11 +3,17 @@ package com.xyzshell.myphoneinfo.dialog
import android.graphics.Typeface
import android.os.Bundle
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.view.LayoutInflater
import android.view.View
import androidx.compose.ui.graphics.Color
import androidx.core.content.ContextCompat
import com.xyzshell.andinfo.AndInfo
import com.xyzshell.myphoneinfo.R
import com.xyzshell.myphoneinfo.base.BaseDialogFragment
import com.xyzshell.myphoneinfo.databinding.DialogCpuInfoBinding
import com.xyzshell.myphoneinfo.databinding.ItemDialogCpuBinding
class DialogCpuInfo :BaseDialogFragment<DialogCpuInfoBinding>(DialogCpuInfoBinding::inflate){
override fun getTitle(): String = resources.getString(R.string.proc_cpuinfo)
@ -18,16 +24,32 @@ class DialogCpuInfo :BaseDialogFragment<DialogCpuInfoBinding>(DialogCpuInfoBindi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.cpuTv01.text=setColonBoldText("Processor :AArch64 Processor rev 2(aarch64)")
binding.cpuTv02.text=setColonBoldText("processor :1")
binding.cpuTv03.text=setColonBoldText("BogoMIPS :3.84" )
binding.cpuTv04.text=setColonBoldText("Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid")
binding.cpuTv05.text=setColonBoldText("CPU implementer :0×41")
binding.cpuTv06.text=setColonBoldText("CPU architecture :8")
binding.cpuTv07.text=setColonBoldText("CPU variant :0×0")
binding.cpuTv08.text=setColonBoldText("CPU part :0×d03")
binding.cpuTv09.text=setColonBoldText("CPU revision :4")
binding.hardwareTv.text=setColonBoldText("Hardware :vendor Kirin710")
val cpu = AndInfo.instance.cpu//cpu信息
cpu.processors.forEach { processor ->
val view=LayoutInflater.from(context).inflate(R.layout.item_dialog_cpu,binding.container,false)
val itemBinding= ItemDialogCpuBinding.bind(view)
itemBinding.cpuTv02.text=setColonBoldText("processor :${processor.core.coreId}")
itemBinding.cpuTv03.text=setColonBoldText("BogoMIPS :" )
itemBinding.cpuTv04.text=setColonBoldText("Features :${cpu.getCpuFeatures().joinToString(",")}")
itemBinding.cpuTv05.text=setColonBoldText("CPU implementer :${processor.core.midr?.implementer}")
itemBinding.cpuTv06.text=setColonBoldText("CPU architecture :${processor.core.midr?.architecture}")
itemBinding.cpuTv07.text=setColonBoldText("CPU variant :${processor.core.midr?.variant}")
itemBinding.cpuTv08.text=setColonBoldText("CPU part :${processor.core.midr?.primaryPartNumber}")
itemBinding.cpuTv09.text=setColonBoldText("CPU revision :${processor.core.midr?.revision}")
binding.container.addView(view)
}
binding.hardwareTv.text=setColonBoldText("Hardware :${cpu.getProcessorName()}")
// binding.cpuTv01.text=setColonBoldText("Processor :${cpu.getProcessorName()}")
// binding.cpuTv02.text=setColonBoldText("processor :1")
// binding.cpuTv03.text=setColonBoldText("BogoMIPS :3.84" )
// binding.cpuTv04.text=setColonBoldText("Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid")
// binding.cpuTv05.text=setColonBoldText("CPU implementer :0×41")
// binding.cpuTv06.text=setColonBoldText("CPU architecture :8")
// binding.cpuTv07.text=setColonBoldText("CPU variant :0×0")
// binding.cpuTv08.text=setColonBoldText("CPU part :0×d03")
// binding.cpuTv09.text=setColonBoldText("CPU revision :4")
// binding.hardwareTv.text=setColonBoldText("Hardware :vendor Kirin710")
}
fun setColonBoldText( text: String) : SpannableString {
val colonIndex = text.indexOf(":")
@ -40,6 +62,12 @@ class DialogCpuInfo :BaseDialogFragment<DialogCpuInfoBinding>(DialogCpuInfoBindi
colonIndex,
SpannableString.SPAN_INCLUSIVE_INCLUSIVE
)
spannableString.setSpan(
ForegroundColorSpan(ContextCompat.getColor(context,R.color.left_color)),
0,
colonIndex,
SpannableString.SPAN_INCLUSIVE_EXCLUSIVE
)
return spannableString
} else {
return SpannableString(text)

View File

@ -14,32 +14,25 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:background="@color/white"
android:orientation="vertical">
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/back_btn"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/go_back"
android:padding="13dp"
android:layout_margin="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="20dp"
android:paddingVertical="10dp"
android:orientation="horizontal">
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cpu_analysis"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/black"
style="@style/TextHeavy20"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#BFBFBF"/>
</LinearLayout>
<androidx.core.widget.NestedScrollView
app:layout_constraintTop_toBottomOf="@+id/top_bar"
@ -117,7 +110,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:orientation="vertical"
android:visibility="visible">
<com.google.android.material.textview.MaterialTextView
@ -125,16 +118,19 @@
style="@style/LeftContent"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="@string/proc_cpuinfo"
android:textStyle="bold" />
android:text="@string/proc_cpuinfo" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/infoShow"
style="@style/TextButteryRight"
android:layout_width="wrap_content"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
android:layout_marginTop="11dp"
android:background="@drawable/hard_bg"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:textSize="14sp"
android:textAlignment="center"
android:textColor="@color/module_title_color"
android:text="@string/show"
tools:ignore="RelativeOverlap" />
</LinearLayout>
@ -143,107 +139,38 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:orientation="vertical"
android:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/time1"
style="@style/LeftContent"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="@string/cpu_times"
android:textStyle="bold" />
android:text="@string/cpu_times" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/timeShow"
style="@style/TextButteryRight"
android:layout_width="wrap_content"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
android:layout_marginTop="11dp"
android:background="@drawable/hard_bg"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:textSize="14sp"
android:textAlignment="center"
android:textColor="@color/module_title_color"
android:text="@string/show"
tools:ignore="RelativeOverlap" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/llCluster"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/dashboard_model_background"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="22dp"
android:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cluster1Title"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cluster_1"
tools:ignore="RelativeOverlap" />
<com.google.android.material.textview.MaterialTextView
style="@style/TextSecondaryTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="@string/cpu0"
tools:ignore="RelativeOverlap" />
<include
android:id="@+id/clu1_text1"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text2"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text3"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text4"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text5"
layout="@layout/common_text_style" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/dashboard_model_background"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="22dp"
android:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cluster2Title"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cluster_2"
tools:ignore="RelativeOverlap" />
<com.google.android.material.textview.MaterialTextView
style="@style/TextSecondaryTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="@string/cpu0"
tools:ignore="RelativeOverlap" />
<include
android:id="@+id/clu2_text1"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu2_text2"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu2_text3"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu2_text4"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu2_text5"
layout="@layout/common_text_style" />
android:orientation="vertical">
</LinearLayout>
</LinearLayout>

View File

@ -18,17 +18,17 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_label"
style="@style/TextDialogLabel"
style="@style/LeftContent"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_below="@id/tv_sub_title"
android:gravity="start"
android:textSize="15sp"
android:textSize="14sp"
android:text="sppppppppppppppppppppp" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_value"
style="@style/TextDialogContent"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/tv_label"
@ -36,6 +36,7 @@
android:layout_toEndOf="@id/tv_label"
android:gravity="center"
android:textSize="15sp"
android:textColor="#C1C5C2"
android:text="sppppppppppppppppppppp" />
</RelativeLayout>

View File

@ -4,7 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingHorizontal="18dp"
android:paddingVertical="15dp"
android:layout_marginVertical="8dp"
android:layout_marginVertical="5dp"
android:background="@drawable/dashboard_model_background"
android:layout_height="wrap_content">
<LinearLayout
@ -16,18 +16,19 @@
>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/sensor_name"
style="@style/TextTool25"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="normal"
android:textSize="18sp"
android:gravity="start"
android:text="spppppppeee" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/sensor_value"
style="@style/TextContentRight"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:textColor="@color/right_color"
android:layout_marginTop="10dp"
android:text="spppppppeee" />
</LinearLayout>

View File

@ -94,16 +94,14 @@
style="@style/LeftContent"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="Capabilities"
android:textSize="15sp"
android:textStyle="bold" />
android:text="@string/capabilities" />
<com.google.android.material.textview.MaterialTextView
style="@style/TextContentRight"
android:id="@+id/more1"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="High speed video"
android:textSize="15sp" />
android:textColor="@color/right_color" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@ -115,16 +113,14 @@
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exposure modes"
android:textSize="15sp"
android:textStyle="bold" />
android:text="@string/exposure_modes" />
<com.google.android.material.textview.MaterialTextView
style="@style/TextContentRight"
android:id="@+id/more2"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Manual, Auto, Flash"
android:textSize="15sp" />
android:textColor="@color/right_color" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@ -136,18 +132,15 @@
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Autofocus modes"
android:textSize="15sp"
android:textStyle="bold" />
android:text="@string/autofocus_modes" />
<com.google.android.material.textview.MaterialTextView
style="@style/TextContentRight"
android:id="@+id/more3"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Manual, Auto, Macro,
Continuous video, Continuous
picture"
android:textSize="15sp" />
android:textColor="@color/right_color"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@ -159,16 +152,16 @@ picture"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="White balance modes"
android:textSize="15sp"
android:textStyle="bold" />
android:text="@string/white_balance_modes"
/>
<com.google.android.material.textview.MaterialTextView
style="@style/TextContentRight"
android:id="@+id/more4"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Auto, Off, Incandescent,Fluorescent, Daylight, Cloudy"
android:textSize="15sp" />
android:textColor="@color/right_color"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@ -180,16 +173,16 @@ picture"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scene modes"
android:textSize="15sp"
android:textStyle="bold" />
android:text="@string/scene_modes"
/>
<com.google.android.material.textview.MaterialTextView
style="@style/TextContentRight"
android:id="@+id/more5"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Face priority, Action, Portrait,Landscape, Night, Nightportrait, Theatre, Beach,Snow, Fireworks, Candlelight,High speed video"
android:textSize="15sp" />
android:textColor="@color/right_color"
/>
</LinearLayout>
</LinearLayout>

View File

@ -16,277 +16,21 @@
android:orientation="vertical">
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv01"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Processor :AArch64 Processor rev 2(aarch64)"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv02"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="processor :0"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv03"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BogoMIPS :3.84"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv04"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv05"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU implementer :0×41"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv06"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU architecture :8"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv07"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU variant :0×0"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv08"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU part :0×d03"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv09"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU revision :4"
android:textSize="20sp"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv11"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Processor :AArch64 Processor rev 2(aarch64)"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv12"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="processor :1"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv13"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BogoMIPS :3.84"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv14"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv15"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU implementer :0×41"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv16"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU architecture :8"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv17"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU variant :0×0"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv18"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU part :0×d03"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv19"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU revision :4"
android:textSize="20sp"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv21"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Processor :AArch64 Processor rev 2(aarch64)"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv22"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="processor :2"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv23"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BogoMIPS :3.84"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv24"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv25"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU implementer :0×41"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv26"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU architecture :8"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv27"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU variant :0×0"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv28"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU part :0×d03"
android:textSize="20sp"
android:textStyle="normal" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv29"
style="@style/TextDialogLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU revision :4"
android:textSize="20sp"
android:textStyle="normal" />
</LinearLayout>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/hardwareTv"
style="@style/TextDialogLabel"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="Hardware :vendor Kirin710"
android:textSize="20sp"
android:textStyle="normal" />
android:textColor="@color/right_color"
android:textSize="18sp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@ -85,10 +85,11 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/open2"
style="@style/TextContentRight"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/apps"
android:textColor="@color/right_color"
tools:ignore="RelativeOverlap" />
</LinearLayout>
<include layout="@layout/common_text_style" android:id="@+id/video"/>

View File

@ -74,9 +74,9 @@
android:id="@+id/text9"
layout="@layout/common_text_style" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuBtn"
style="@style/TextDialogSubTitle"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="21dp"
@ -84,7 +84,6 @@
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:textSize="14sp"
android:textStyle="normal"
android:text="@string/cpu_analysis"
android:textAlignment="center"
android:textColor="@color/module_title_color" />
@ -109,39 +108,39 @@
tools:ignore="RelativeOverlap" />
<include
android:id="@+id/cpu_text1"
android:id="@+id/gpu_text1"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text2"
android:id="@+id/gpu_text2"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text3"
android:id="@+id/gpu_text3"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text4"
android:id="@+id/gpu_text4"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text5"
android:id="@+id/gpu_text5"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text6"
android:id="@+id/gpu_text6"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text7"
android:id="@+id/gpu_text7"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text8"
android:id="@+id/gpu_text8"
layout="@layout/common_text_style" />
<include
android:id="@+id/cpu_text9"
android:id="@+id/gpu_text9"
layout="@layout/common_text_style" />
<LinearLayout
@ -205,7 +204,7 @@
android:textStyle="bold" />
<TextView
android:id="@+id/extensionShow"
style="@style/TextButteryRight"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="21dp"
@ -215,6 +214,7 @@
android:textSize="14sp"
android:textStyle="normal"
android:text="@string/show"
android:textColor="@color/module_title_color"
android:textAlignment="center"
tools:ignore="RelativeOverlap" />
</LinearLayout>
@ -405,7 +405,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal">
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
style="@style/LeftContent"
@ -416,10 +416,16 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/othertext"
style="@style/TextButteryRight"
android:layout_width="wrap_content"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
android:layout_marginTop="11dp"
android:background="@drawable/hard_bg"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:textSize="14sp"
android:textAlignment="center"
android:textColor="@color/module_title_color"
android:text="@string/show"
tools:ignore="RelativeOverlap" />
</LinearLayout>

View File

@ -81,7 +81,7 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/conText2"
style="@style/TextButteryRight"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LUX·433 Mbps"
@ -90,7 +90,7 @@
<com.google.android.material.textview.MaterialTextView
android:id="@+id/conTExt3"
style="@style/TextButteryRight"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="80% -60dBm"

View File

@ -20,7 +20,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
android:visibility="gone"
android:orientation="vertical">
<include layout="@layout/common_sensor_style" android:id="@+id/sensor1"/>
<include layout="@layout/common_sensor_style" android:id="@+id/sensor2"/>

View File

@ -53,7 +53,7 @@
android:layout_weight="1"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pair1"
style="@style/TextButteryRight"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
@ -63,6 +63,7 @@
android:background="@drawable/hard_bg"
android:textStyle="normal"
android:text="@string/show"
android:textColor="@color/module_title_color"
android:textAlignment="center"
tools:ignore="RelativeOverlap" />
@ -84,7 +85,7 @@
<!-- android:layout_weight="1"/>-->
<!-- <com.google.android.material.textview.MaterialTextView-->
<!-- android:id="@+id/pair2"-->
<!-- style="@style/TextButteryRight"-->
<!-- style="@style/LeftContent"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:paddingHorizontal="10dp"-->

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/dashboard_model_background"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="22dp"
android:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cluster1Title"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cluster"
tools:ignore="RelativeOverlap" />
<LinearLayout
android:id="@+id/clusterInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cputitle"
style="@style/LeftContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="@string/cpu0"
android:textSize="14sp"
android:textColor="@color/module_title_color"
/>
<include
android:id="@+id/clu1_text1"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text2"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text3"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text4"
layout="@layout/common_text_style" />
<include
android:id="@+id/clu1_text5"
layout="@layout/common_text_style" />
</LinearLayout>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:orientation="vertical">
<!-- <com.google.android.material.textview.MaterialTextView-->
<!-- android:id="@+id/cpuTv01"-->
<!-- style="@style/TextDialogLabel"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Processor :AArch64 Processor rev 2(aarch64)"-->
<!-- android:textSize="20sp"-->
<!-- android:textStyle="normal" />-->
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv02"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="processor :0"
android:textSize="16sp"
android:textColor="@color/right_color"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv03"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BogoMIPS :3.84"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv04"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Features :fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv05"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU implementer :0×41"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv06"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU architecture :8"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv07"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU variant :0×0"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv08"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU part :0×d03"
android:textSize="16sp"
android:textColor="@color/right_color" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cpuTv09"
style="@style/TextHeavy20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CPU revision :4"
android:textSize="16sp"
android:textColor="@color/right_color" />
</LinearLayout>
</LinearLayout>

View File

@ -167,7 +167,7 @@
android:textStyle="bold" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pubShow"
style="@style/TextButteryRight"
style="@style/LeftContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 234 B

View File

@ -293,4 +293,11 @@
<string name="toybox">Toybox</string>
<string name="java_VM">Java VM</string>
<string name="current">current</string>
<string name="ae_lock">AE lock</string>
<string name="wb_lock">WB lock</string>
<string name="white_balance_modes">White balance modes</string>
<string name="capabilities">Capabilities</string>
<string name="exposure_modes">Exposure modes</string>
<string name="autofocus_modes">Autofocus modes</string>
<string name="scene_modes">Scene modes</string>
</resources>