HarmonyOS 鸿蒙Next 请问怎么获取手机屏幕物理英寸?是按以下代码获取吗?

HarmonyOS 鸿蒙Next 请问怎么获取手机屏幕物理英寸?是按以下代码获取吗?

const defaultDisplay = display.getDefaultDisplaySync()

const totalDisplay = ${defaultDisplay.height}x${defaultDisplay.width}

//显示设备屏幕的物理像素密度,表示每英寸上的像素点数
const dpi = defaultDisplay.densityDPI //520

// 计算屏幕对角线像素数
const diagonalPixels = Math.sqrt(defaultDisplay.width * defaultDisplay.width + defaultDisplay.height * defaultDisplay.height)

// 计算屏幕物理尺寸(英寸)
const physicalSizeInches = diagonalPixels / dpi

但我按以上获取的屏幕物理英寸是5.76,我使用真机mate60pro测试的物理英寸也是5.76,但是商城公布的mate60pro屏幕尺寸是6.82英寸,是我哪里计算错了嘛?


更多关于HarmonyOS 鸿蒙Next 请问怎么获取手机屏幕物理英寸?是按以下代码获取吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我理解的是不能用dpi吧,应该用xDpi和yDpi,我自己用的mate60,官方尺寸是6.69英寸,我返回的是6.66

参考如下demo:

import { display } from '@kit.ArkUI'

@Component
struct Page052 {
  aboutToAppear(): void {
    const displayInfo = display.getDefaultDisplaySync();
    const dpiToCm = 2.54; // 1英寸 = 2.54厘米

    // 将像素转换为厘米
    const widthInches = displayInfo.width / displayInfo.xDPI;
    const heightInches = displayInfo.height / displayInfo.yDPI;
    const widthCm = widthInches * dpiToCm;
    const heightCm = heightInches * dpiToCm;

    // 使用勾股定理计算对角线英寸
    const diagonalInches = Math.sqrt(
      Math.pow(widthInches, 2) + Math.pow(heightInches, 2)
    );

    console.log(`屏幕宽度(像素): ${displayInfo.width}px`);
    console.log(`屏幕高度(像素): ${displayInfo.height}px`);
    console.log(`屏幕密度(dpi): ${displayInfo.densityDPI}dpi`);
    console.log(`屏幕宽度(厘米): ${widthCm.toFixed(2)}cm`);
    console.log(`屏幕高度(厘米): ${heightCm.toFixed(2)}cm`);
    console.log(`屏幕对角线尺寸(英寸): ${diagonalInches.toFixed(2)}英寸`);
  }

  build() {
    Column() {}
      .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 请问怎么获取手机屏幕物理英寸?是按以下代码获取吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,谢谢大佬指导,

姓名 张三
年龄 28
职位 软件工程师

联系方式:

  • 手机:12345678901
  • 邮箱:zhangsan@example.com

在HarmonyOS(鸿蒙)系统中,获取手机屏幕物理英寸(即屏幕尺寸)通常不直接通过某个特定的代码片段实现,因为屏幕尺寸通常是在设备出厂时就已经定义好的硬件属性,而不是通过代码运行时计算的。不过,你可以通过系统提供的API获取屏幕的分辨率和像素密度,从而间接推算出大致的物理尺寸(虽然这种推算可能不够精确)。

在HarmonyOS中,你可以使用DisplayMetrics类来获取屏幕的宽度、高度以及像素密度(DPI)。以下是一个获取屏幕基本信息的示例代码框架(注意,这不是直接获取物理英寸的代码,但可以作为推算的基础):

// 注意:这里虽然使用了Java语法框架,但目的是说明思路,实际在HarmonyOS开发中应使用对应的API
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int widthPixels = displayMetrics.widthPixels;
int heightPixels = displayMetrics.heightPixels;
float densityDpi = displayMetrics.densityDpi;

// 使用上述信息,结合屏幕常见的长宽比和已知设备的分辨率/尺寸进行大致推算
// 但这种方法并不准确,且依赖于设备的具体实现和屏幕特性

然而,对于精确获取物理屏幕尺寸(英寸),通常需要通过设备规格表或制造商提供的信息。在HarmonyOS应用开发中,没有直接API来获取这一信息。

如果问题依旧没法解决请联系官网客服,官网地址是

回到顶部