HarmonyOS 鸿蒙Next用sensor怎么判断当前手机屏幕在手上是横屏还是竖屏?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next用sensor怎么判断当前手机屏幕在手上是横屏还是竖屏?

用sensor怎么判断当前手机屏幕在手上是横屏还是竖屏?

11 回复

 通过媒体查询判断

import mediaquery from '@ohos.mediaquery';

@Entry @Component struct Index { listener = mediaquery.matchMediaSync(’(orientation: landscape)’);

onPortrait = (mediaQueryResult: mediaquery.MediaQueryResult) => { // 当满足媒体查询条件时,触发回调 if (mediaQueryResult.matches as boolean) { // 若设备为横屏状态,更改相应的页面布局 console.log(“横屏”) } else { console.log(“竖屏”) } }

aboutToAppear() { this.listener.on(‘change’, this.onPortrait) }

build() { Column() { } } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这个可能不是我想要的,这个是判断当前界面是横屏还是竖屏吧? 我是不管当前界面横竖屏,也不管用户有没有锁定竖屏,只要用户把手机横过来或者横的角度超过60度就认为是横屏,我理解应该是根据传感器XYZ三个方向的数值来计算

我也想要这个,楼主找到解决办法了嘛?

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

window.Orientation.AUTO_ROTATION 获取到的是传感器的屏幕旋转方向

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-sensor-V5

sensor接口里的示例代码我跑不起来,不知道是不是因为模拟器的原因

可能是

可以通过监听sensor.SensorId.ACCELEROMETER拿到x,y,z值进而得到夹角从而判断是横屏还是竖屏

sensor.SensorId.ACCELEROMETER需要声明权限, 我用sensor.SensorId.GRAVITY差不多可以实现同样的效果

楼主您好,sensor是无法判断的,建议通过1楼说的媒体查询来实现。

在HarmonyOS中,可以通过监听传感器数据或使用系统API来判断手机屏幕的横竖屏状态。使用sensor.SensorId.ACCELEROMETER或sensor.SensorId.GRAVITY获取设备加速度或重力数据,分析这些数据可以判断设备的倾斜角度,进而确定屏幕是横屏还是竖屏。另外,也可以通过系统API如OrientationAbility来监听设备方向变化,从而得知屏幕方向。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部