Java 通过WURFL功能生成受支持设备的列表

Java 通过WURFL功能生成受支持设备的列表,java,mobile,wurfl,Java,Mobile,Wurfl,是否有一种有效的方法可以使用API,基于一组必需的功能以编程方式生成受支持设备的列表 例如,我有两个版本的应用程序;一款在诺基亚60系列2版手机(Symbian 7/8)上运行,另一款在诺基亚60系列3版手机(Symbian 9)上运行。我需要从WURFL获取所有此类手机,并将其显示在“支持的手机”页面上,同时检查尝试下载的用户的UAs,以便向他们传递正确版本的应用程序 从概念上讲,我认为我在寻找这样的东西: return all devices that have capabilities :

是否有一种有效的方法可以使用API,基于一组必需的功能以编程方式生成受支持设备的列表

例如,我有两个版本的应用程序;一款在诺基亚60系列2版手机(Symbian 7/8)上运行,另一款在诺基亚60系列3版手机(Symbian 9)上运行。我需要从WURFL获取所有此类手机,并将其显示在“支持的手机”页面上,同时检查尝试下载的用户的UAs,以便向他们传递正确版本的应用程序

从概念上讲,我认为我在寻找这样的东西:

return all devices that have capabilities := device_os == Symbian OS && nokia_series == 60 && (nokia_edition == 2 || nokia_edition == 3) 返回所有具有以下功能的设备:= 设备\操作系统==Symbian操作系统 &&诺基亚_系列==60 &&(诺基亚|U版==2 |诺基亚|U版==3)
我希望在Java中实现这一点。

我建议使用来加载和浏览功能数据库。这样做非常灵活,您应该能够非常快速地实现您的伪代码。

我不知道此任务的API。我不得不自己处理这个问题,最后编写了一个公共站点来处理它:


由于基本WURFL XML文件是为可移植性而构建的,因此必须通过读取可变数量的“后备设备”来导出设备的完整功能矩阵。许多其他基于WURFL的项目也以同样的方式运行。根据我的经验,如果你希望在搜索过程中获得适当的速度,你真的需要将默认的嵌套数据结构转换成一个平面结构。当然,此时您就失去了可移植性的好处。

所有其他答案都谈到了如何使用Java WURFL API。但是,为了在运行时加快搜索速度,我建议在内存中存储一个hashmap或dictionary,将用户代理字符串(或原始字符串的精简版本)映射到相应的设备信息。数据总量不应该太大——仅以兆字节为单位。此外,WURFL数据是相当静态的,因此可以脱机预处理整个数据集以构建hashmap。我通常会定期预处理和更新hashmap,序列化对象,并在运行时加载它。

谢谢您的提醒。我们已经研究了新的API,虽然它提供了一些比旧API更好的方法,但它看起来仍然像一个黑客,而且速度不快。现在我们正在做这件事并缓存结果,这样就可以了。