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

时间:2009-06-15 06:38:48

标签: java mobile wurfl

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

例如,我有两个版本的应用程序;诺基亚Series60版本2手机(Symbian 7/8)和诺基亚Series60版本3手机(Symbian 9)上运行的版本。我需要从WURFL中获取所有这样的手机,以便在“支持的手机”页面上显示,并检查尝试下载的用户的UA,以便我可以将它们传递给应用程序的正确版本。

从概念上讲,我认为我正在寻找这样的事情:

return all devices that have capabilities :=
  device_os == Symbian OS  
  &&  nokia_series == 60 
  && (nokia_edition == 2 || nokia_edition == 3)

我希望用Java做到这一点。

3 个答案:

答案 0 :(得分:1)

我建议使用new Java WURFL API来加载和遍历功能数据库。这种方式非常灵活,您应该能够非常快速地实现伪代码。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我不知道此任务的API。我必须自己处理这个问题并最终编写一个公共网站来处理它:http://wurfl.ditherandbicker.com/

由于基本WURFL XML文件是为可移植性而构建的,因此必须通过从可变数量的“后备设备”中读取来获取设备的完整功能矩阵。许多其他基于WURFL的项目表现相同。根据我的经验,如果您希望通过搜索获得任何合适的速度,您确实需要将默认的嵌套数据结构转换为平面数据结构。当然,那时你会失去便携性的好处。