收藏
回答

onCompassChange接口在手机竖立拍照并后仰的过程中,为啥direction突变180度?

小米手机Mi11Ultra,微信8.0.33,基础库2.30.2,系统版本MIUI14.0.6,安卓版本13

荣耀手机V9,微信8.0.33,基础库2.30.2,系统版本HarmonyOS2.0.0.150

手握手机竖立(正常拍照的姿势:摄像头面朝前方,屏幕正面朝向本人),并逐渐后仰(屏幕逐渐朝下),指南针的角度在逐渐后仰过程中会突变180度。

如正常平放(屏幕正面朝上)direction为20度,若将手机直接竖立起来(屏幕正面平面与桌面成90度角),direction的值会变大,向200度(20 + 180)变化的趋势,并将屏幕略微向下(即屏幕正面平面与桌面超过90度角),direction的值会变成200度。

如正常平放(屏幕正面朝上)direction为280度,若将手机直接竖立起来(屏幕正面平面与桌面成90度角),direction的值会变小,向100度(280 - 180)变化的趋势,并将屏幕略微向下(即屏幕正面平面与桌面超过90度角),direction的值会变成100度。

视觉感受就是手机方位没变,当手机竖立起来,大约与桌面成90度时direction的值会有频繁的大范围的变化(数字跳动的感觉)。

微信小程序的罗盘接口,获取方位的值,分别在屏幕朝上和屏幕朝下时,获取到的值相差180度,小程序的罗盘接口与华为或小米等手机系统自带的指南针应用输出的方位值不符,手机系统自带指南针应用在屏幕朝上和朝下时,获取到的值是一致的。

当手机拍照时,俯拍时通过小程序罗盘接口获取到的direction若是20度(北方),手机拍照方向不变,而仰拍时就会变成200度(南方)。手机面向正前方拍照,手机或俯或仰一点角度很正常,而获取的方向会有很大差别,其获取到的direction值基本不可用,此接口仅可用于手机平放时作为普通罗盘使用,应用范围受到较大限制。

希望小程序团队能正视这个接口的问题,保持与用户通常理解的罗盘输出数据一致。比如系统指南针应用在手机的前俯后仰过程中,不改变手机方向的前提下(没有绕着垂直于桌面的轴进行转动的情况),输出的方位角度不变, 即此情况下,小程序罗盘接口的direction输出值应保持不变(而非目前呈现的180度突变)。

代码片段如下:

https://developers.weixin.qq.com/s/Xs7e54mp7DHz

回答关注问题邀请回答
收藏

1 个回答

  • Demons
    Demons
    2023-03-29

    你试试微信8.0.34版本

    2023-03-29
    有用
    回复 1
    • 余晓辉
      余晓辉
      2023-03-29
      8.0.34测试不行,我判断这应是基础库需要处理或升级,希望相关技术能看到,出面解决一下!
      2023-03-29
      回复
登录 后发表内容