Escribir una aplicación de estación de radio de telefonía móvil – ¿es viable Javascript / HTML / CSS, o tenemos que volver a ser nativo?

Quiero escribir una aplicación que transmita MP3 desde un servidor a cualquiera de los tres principales sistemas operativos de los teléfonos inteligentes en Estados Unidos (iPhone, Blackberry y Android).

Esta es la compensación que me preocupa: si escribo la aplicación de forma nativa, se convertirá en la mejor experiencia de usuario y me dará la capacidad de agregar muchas más funciones si lo desea, pero tendré 3 bases de código separadas, lo que viola la DRY.

Si utilizo uno de los frameworks para escribirlo en Javascript / HTML (por ejemplo Rhomobile Rhodes ), entonces tengo una base de código para todas las plataformas principales, así que no estoy violando DRY y el proceso de desarrollo es más sencillo en ese sentido, pero a) la experiencia del usuario sufrirá, yb) hice algunas pruebas sencillas con SoundManager para reproducir archivos MP3 con Javascript en el iPhone, y comenzó a chupar de inmediato (por ejemplo, la segunda fase del experimento después de "cool, puedo jugar un MP3 "era" No tengo acceso a las etiquetas ID3? Eso es una mierda. ").

Me pregunto si alguien con experiencia en el desarrollo de múltiples plataformas móviles podría confirmar o des-confirmar mi impresión: es el desarrollo multiplataforma con Javascript y HTML viable (en particular para una aplicación multimedia)? ¿O está "desarrollando y manteniendo tres bases de código nativas separadas" la manera de ir aquí?

Gracias por adelantado.

Editar: esta pregunta supone que tengo que hacer esto como una aplicación. Entiendo que puede ser mucho mejor simplemente servir mp3s y dejar que los usuarios iPhone / Android / Blackberry Media Player los maneje, pero para mis propósitos esas soluciones están fuera del marco de esta pregunta.

    Después de haber trabajado en varias de las aplicaciones móviles de Pandora (principalmente BlackBerry), puedo decirte que sería muy difícil (si no imposible) conseguir la experiencia del usuario de la manera que queríamos sin hacer cada uno como una aplicación nativa. Los frameworks multiplataforma pueden ser adecuados para una aplicación móvil "típica" que navega alrededor de algunos menús de árbol, muestra información, hace algunas llamadas a servicios de back-end, etc. Pero aún no he visto una que expone una API multimedia completa. Puedo entender por qué, también – cada plataforma definitivamente tiene sus caprichos cuando se trata de jugar a los medios de comunicación. Incluso algo tan simple como pre-cargar la siguiente pista en una lista de reproducción requiere código personalizado. En BlackBerry, la transmisión de audio tiene requisitos especiales de red, ya que no puede utilizar los transportes BIS o BES predeterminados, sino que debe estar sobre Direct TCP, WAP2 o Wi-Fi (si está disponible). Así que de nuevo, más código personalizado.

    Si te sirve de consuelo, es posible compartir un poco de código entre BlackBerry y Android, es decir, lógica comercial que no utiliza APIs nativas. Dado que BlackBerry utiliza J2ME es sólo un subconjunto de la J2SE que utiliza Android.

    Yo iría con "desarrollar y mantener tres bases de código nativas separadas". Como ya dijiste, ofrecerás una experiencia de usuario más integrada y nativa y ofrecerás funciones que no están (aún) disponibles a través de HTML / JavaScript.

    He construido y mantenido con éxito una aplicación que se estaba ejecutando en Android, iPhone, J2ME y Symbian y no es un problema tan grande.

    Gracias, echa un vistazo a Jango, http://www.jango.com, su todo HTML / JS por el aspecto de las cosas. Funciona muy bien.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.