【问题标题】:How to detect low-spec mobile devices meaningfully?如何有意义地检测低规格的移动设备?
【发布时间】:2013-04-02 00:52:41
【问题描述】:

目前我只知道 Scientiamobile 的 WURFL 和其他一些。这些库或数据库告诉你很多关于设备的信息,但它们都不能清楚地表明你不应该使用 CSS 过渡或其他类型的动画,因为即使设备支持它,与这些功能完全不同的故事将顺利运行,这是我在构建移动 Web 应用程序时最关心的问题。

使用“WURF”数据库在这个方向上“分类”设备在技术上是否可行?以及我应该使用哪些设备功能将设备“分组”为“快速”的图形功能?

最后,我只需要从 1 到 5 对设备进行评分,以确定我可以使用哪些 gfx 操作。

好吧,欢迎任何想法。事实证明这是真正的脑筋急转弯,互联网上的研究除了大量有关设备上限的数据外并没有带来任何有用的信息。

Update-1:我刚收到 ScientiaMobile 的回复:“我们一直在尝试某种形式的 Javascript 性能指数(可能基于现有基准之一)的想法,它可以给出一些迹象,但我们还没有到达那里。问题很复杂。”

Update-2:我们在移动网络应用中发现的最大瓶颈

  1. 动画力量
  2. PNG 透明度
  3. 文本和框阴影
  4. 图像大小调整

对我们来说,确定我们需要禁用这些功能就足够了,因为它们可能会使任何应用程序瘫痪。可能还有其他方法。

谢谢。

【问题讨论】:

  • 这很有趣,就快速谷歌搜索显示而言,并没有真正受到任何人的关注。只是一个疯狂的想法:因为您可以挂钩 animationend 事件,您可以尝试设置一个小型基准:在固定时间(例如 500 毫秒)执行 css 转换(在不可见层上)并保持计时器不变时间。然后,绑定到animationend 事件,检查初始 css 转换时间是否与测量的执行时间(计时器)大致相同...?
  • 我同意,隐藏的基准可以或多或少地确定动画功率。另一个大瓶颈是 PNG 透明度。我看到 Android 设备在这方面陷入困境,而且没有透明度,它的运行速度要快得多。
  • 你能告诉一些设备在哪里 CSS 过渡可以正常运行并且运行流畅,而有些设备可以使用 CSS 过渡但运行不流畅吗?在这里有一个例子会很好。此外,您是针对少数特定设备还是想要一个解决方案,使其适用于“所有”设备?
  • 嗨,是的。我很高兴有这个问题的一般解决方案。在我们开发移动应用工作室时,我们确实统计了 30 多台设备进行测试。大多数 3 年以上的 Android 设备(HTC Legend,...)尽管有“大”规格,但在简单的事情上工作得非常糟糕。我要做的是找到一个评级公式,但我需要先确定权重。

标签: java javascript html mobile


【解决方案1】:

不幸的是,我认为今天的一般情况下这是不可能的。

如果您只对有限数量的设备感兴趣,当然您可以测试每一个设备,并通过用户代理或基于 JavaScript 的检测专门针对这些设备。

在厚应用程序的上下文中(例如,您使用类似Apache Cordova 的内容“包装”您的网站),可以提供对某些设备内部的 JavaScript 访问(例如,总内存量、可用内存量、处理器速度),否则,浏览器无法获取此信息。正如您所暗示的,访问此类设备信息可能仍然不够充分(例如,看似“高规格”的设备性能不佳)。

Modernizr 这样的JavaScript 特征检测库可以回答用户当前浏览器是否支持 box-shadow 和text-shadow 等内容,但不提供有关效果如何的信息多快 支持的功能将被渲染。

同样,来自 Browserscope 和相关项目 ringmark(有点类似于 WURFL 的 JavaScript)的数据集通过众包基准测试在每个浏览器版本的基础上回答这些浏览器支持问题(例如,iPhone 是否支持 CSS3 过渡?),对于一般情况,这是必要的。您需要针对有问题的各种功能运行基准测试并评估实时性能。然而,即使这样也有其局限性:

  • 由于移动用户四处走动、接听电话、更改硬件设置、启动后台应用程序等,速度的必要条件(可用内存、处理器、电池、网络连接等)不断变化,结果基准可能不可靠/不可重复。
  • 基准测试需要时间,并且总是会增加(希望不引人注意的)延迟。
  • 根据功能,基准测试可能不实用。
  • 在基准测试中,功能的组合(例如,用阴影为透明 PNG 制作动画)或按比例(例如,页面上的每个图像都在制作动画)可能会表现出不同的行为。
  • 如果您依赖基准测试数据集而不是执行自己的实时基准测试,那么数据集的样本量、范围和年龄会极大地限制其实用性。

最后一点是,我什至没有提到性能相当主观这一事实。假设以某种方式可以评估/预测动画的速度。如果动画将以 15 fps 运行,用户是否应该看到该动画? 5帧呢?谁将成为决定给定功能是否足够好的阈值的最终仲裁者?

我今天能提供的最佳建议是暂时减少(或消除)您对麻烦功能的依赖。建议回到使用带有预合成阴影的图像或在没有 CSS3 的情况下制作背景渐变的“旧方式”似乎很糟糕,但归根结底,用户体验应该优先于使用闪亮的新技术。许多移动设备根本不存在,检测方法也不存在。如果您必须使用这些功能,或许可以考虑一种简单但不显眼的方式让用户选择加入/选择退出,例如 Gmail 的“标准”与“基本 HTML”视图选项,或者考虑自动选择已知良好的浏览器.

【讨论】:

  • 嗨,看来你做了功课 :-) 我倾向于给你赏金,但我需要先检查事实。期待我两天后回来。已经谢谢你了!
【解决方案2】:

除了'user113215' 已经说过的内容之外,我不能再添加更多内容了。它也不是对实际问题的回答,而是对实际问题的回答:

我对一些用户进行了实验,我们使用了一个简单的欢迎弹出菜单,要求用户关闭阴影和动画等特殊效果。大多数测试用户确实很欣赏这种选择并且清楚地理解了这种菜单的方式。我们现在确实将其集成得更先进,并与用于自动预选 GFX 效果的隐藏基准相结合。

谢谢。 g

【讨论】:

    【解决方案3】:

    简而言之,没有。我们如何定义动画和图形的平滑度完全取决于 FPS(每秒帧数)。在这个问题中,我们谈论的是“web-app”,它们在客户端使用 HTML 和 JS。由于客户端都没有提供HTML或JS获取FPS的接口,所以无法判断客户端是否流畅。

    但是,如果您真的想对网络应用的性能进行基准测试。您可以使用stats.js 来监控 stat 的变化,并为您提供一个基准来建议您的客户端在运行时激活或禁用任何类型的效果。这种方法甚至可以与大多数 FX 的 Javascript 库(如 jquery)一起使用。但这需要一些时间让您在应用更改之前获取足够的数据,并且统计数据可能与设备的状态不同,例如内存使用情况、并发应用程序等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2013-01-12
      • 2010-11-20
      • 2021-04-14
      相关资源
      最近更新 更多