我想编写一个应用程序,将MP3从服务器流式传输到美国三大智能手机操作系统(iPhone,Blackberry和Android)。
以下是我关注的权衡:如果我本地编写应用程序,它将获得最佳用户体验,并且如果我愿意,可以添加更多功能,但我将拥有3个独立的代码库,这违反了DRY原则。
如果我使用其中一个框架用Javascript / HTML编写它(例如Rhomobile Rhodes),那么我有一个代码库用于所有主要平台,所以我没有违反DRY和开发过程在这方面更简单,但a)用户体验将受到影响,并且b)我使用SoundManager在iPhone上使用Javascript播放MP3文件进行了一些简单的测试,并且它立即开始吸吮(例如第二阶段)在“酷,我可以播放MP3”之后的实验是“我无法访问ID3标签?这很糟糕。”。)。
我想知道在多个移动平台开发方面有经验的人是否可以确认或否定我的印象:是否可以使用Javascript和HTML进行跨平台开发(特别是对于多媒体应用程序)?或者“开发和维护三个独立的本机代码库”是什么方式去这里?
提前致谢。
编辑:这个问题假定我必须将此作为应用进行操作。我知道只提供mp3并让用户iPhone / Android / Blackberry Media Player处理它们可能要好得多,但就我的目的而言,这些解决方案不属于这个问题的框架。
答案 0 :(得分:4)
我为Pandora(主要是黑莓)开发了几款移动应用程序后,我可以告诉你,如果没有将每一个用户体验作为一个原生的用户体验,那将是非常困难的(如果不是不可能的话)应用。跨平台框架可能适用于“典型”移动应用程序,该应用程序围绕某些树状菜单导航,显示信息,对后端服务进行一些调用等。但我还没有看到一个公开全面的多媒体API的应用程序。我也能理解为什么 - 在播放媒体时,每个平台肯定都有它的怪癖。即使是在播放列表中预加载下一首曲目这样简单的事情也需要自定义代码。或选择将音频路由到哪个音频路径(蓝牙?耳机?)在BlackBerry上,流式音频具有特殊的网络要求,因为您无法使用默认的BIS或BES传输 - 它必须通过Direct TCP,WAP2或Wi-Fi (如果可供使用的话)。再次,更多自定义代码。
如果有任何安慰,可以在BlackBerry和Android之间共享一些代码 - 即不使用本机API的业务逻辑。由于BlackBerry使用J2ME,因此它只是Android使用的J2SE的一个子集。
答案 1 :(得分:2)
我会选择“开发和维护三个独立的本机代码库”。正如您所说,您将提供更加集成的本机用户体验,并提供尚未通过HTML / JavaScript提供的功能。
我已经成功构建并维护了一个在Android,iPhone,J2ME和Symbian上运行的应用程序,这不是一个大问题。
答案 2 :(得分:0)
谢谢,看看Jango,www.jango.com,它的所有HTML / JS的外观。工作得很好。