Category Archives: Dispositivos móviles

Desactivar el scroll vertical en apps de phonegap

Al hacer una app con phonegap, nos encontramos con que el scroll horizontal se desactiva fácilmente, ya que phonegap, al tener un webview, este se adapta a nuestro html y si ademas eliminamos la opción de zoom con los scale

<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimun-scale=1, user-scale=no" />

Resultará curioso como al probar nuestra aplicación, horizontalmente es estática, pero cuando deslizamos el dedo de arriba hacia abaja, vemos un efecto cuanto menos curioso y es que se desliza como si fuera una página web normal y corriente, es decir, nos aplica un scroll vertical como el navegador. Os pongo una imagen para que veáis lo que digo:

Esto es muy fácil de arreglar. Tan solo tenemos que irnos a nuestro proyecto de phonegap, concretamente al archivo Cordova.plist, que lo podemos encontrar de 2 formas:

  • Xcode: raíz del proyecto > Resources > Cordova.plist
  • Finder: raíz del proyecto > [Nombre del proyecto] > Cordova.plist

Ahora, dependiendo de si lo editamos desde Xcode o con otro editor veremos algo como lo siguiente:

Tan solo deberemos poner el valor del UIWebViewBounce a NO en Xcode o a false en el xml del plist y asunto arreglado, al intentar hacer scroll vertical, ya no se deslizará fuera de la pantalla.

Phonegap, programar para móviles en HTML5

Programar para dispositivos móviles a veces es una cuestión complicada ya que cada dispositivo cuenta con sus propias herramientas, lenguajes y peculiaridades. Por ejemplo, si queremos programar en Windows Phone, usaremos HTML o C# (.Net), mientras que para Android lo haremos en Java y en Objetive-C para IOS. ¿Cuantos de nosotros tiene tiempo para aprender todo esto como hobby y no de forma profesional? ¿No sería maravilloso poder hacer las aplicaciones móviles sencillas utilizando HTML?

PhoneGap o también conocido como Apache Cordova es un framework que desarrolla (compró) Adobe y que permite crear aplicaciones para dispositivos móviles utilizando HTML. Realmente PhoneGap crea una vista web donde cargará el contenido de la carpeta www del proyecto, cargando en todo momento páginas web en HTML.

Esto esta muy bien, pero ¿Cómo trabajo con los datos? Es fácil, con Javascript. PhoneGap provee de un API en Javascript para interactuar con el teléfono, por ejemplo para el acceso a base de datos, a la cámara, GPS, contactos, etc. Por tanto trabajar con PhoneGap es como hacer una web utilizando un API de javascript especial. También existe la posibilidad de trabajar nativamente, ya que PhoneGap lo único que hace es crear un proyecto especial para el dispositivo, por lo que creara un proyecto de eclipse para android o un proyecto de xcode para IOS, por lo que podemos utilizar plugins nativos o hacernos nosotros mismos el nuestro.

Por último mencionar que PhoneGap tiene soporte para iPhone/iPad, Android, Windows Phone y BlackBerry y en menor medida tiene soporte de Bada, Symbian y WebOS. Así que si quereis hacer una app para IOS, Android o Windows Phone, es una buena opción echarle un vistazo a PhoneGap.

Los sistemas operativos móviles para smartphones: Android vs iOS vs Symbian vs Windows Phone

Hace pocos días, estuve mirando para comprarme un nuevo teléfono móvil, digo teléfono por no decir ordenador de bolsillo. El caso es que a la hora de elegir dicho teléfono, me asaltaba una gran duda, ¿Hacia dónde voy? ¿Qué marca escojo? ¿Qué modelo escojo? Durante días me estuvieron asaltando estas preguntas hasta que hice análisis de lo que quería y lo que había, fue entonces cuando todas mis dudas quedaron resueltas. Aunque las características técnicas del modelo a elegir son muy importantes, no hay que obviar que hoy en día casi todos teléfonos disponen de un buen hardware por detrás, también teniendo en cuenta cuanto nos queramos gastar. En mi caso yo quería un móvil de gama media-alta de precios similares y características aun mas similares, así que solo queda para el análisis y decisión el sistema operativo que los hace funcionar. A continuación dejaré un breve análisis de cada uno basado entre otras cosas mi propia experiencia personal.

Windows Phone

Windows PhoneEste es el sistema operativo para móviles de Microsoft, antiguamente llamado Windows Mobile. He usado desde hace 5 años este sistema operativo, en PDA's y en teléfonos móviles o smartphones, y la verdad es que es una maravilla, el entorno en general esta pensado con vistas profesionales, aunque permite mucho mas. Por defecto el sistema operativo es bastante normalito, tienes pocas aplicaciones, efectos visuales muy pobres, por regla general esta basado en otra época, cuando hace 7 u 8 años, era una novedad, pero abandonado desde entonces. Microsoft como no, en su linea de actualizar unos productos muy a menudo, y abandonar a su suerte otros productos y es esto lo ocurrido con Windows Mobile, fue abandonado, y desde versiones de Windows Mobile 2003, Windows Mobile 5 y Windows Mobile 6 no encontramos ninguna diferencia y apenas mejoría. Cuando el boom de iPhone, Microsoft libero la versión Windows Mobile 6.5, un caramelito antes de la llegada de Windows Mobile 7 donde ya si se veian cambios sustanciales en la interfaz y funcionamiento del sistema operativo, siendo mas enfocado al uso con los dedos y no con puntero. Ademas de esto en breve, finales de 2010 aparecerán los primeros modelos con Windows Phone 7, un sistema operativo que renovara, partiendo de la base de Windows Mobile 6.5 y Zune HD, darán otro concepto a lo visto en los Windows Mobile. Hasta aquí la historia, llega el momento de la practica. Windows Mobile, al menos hasta su versión 6.5, ya que la 7 es un poco desconocida aun, es un gran sistema operativo, estable, modificable (vease HTC Sense y similares), con capacidad para albergar plugins o widget desde hace ya años como son los plugins today, consume pocos recursos, existen miles de aplicaciones disponibles y ademas Microsoft recientemente creo un market similar al AppStore para Microsoft Windows Mobile. Pero no es oro todo lo que reluce, y no todo pueden ser ventajas, hay que ponerle pegas, una de las cuales y para mi la mas importante es el desarrollo, que obliga a los desarrolladores a utilizar Windows con Visual Studio en sus versiones de pago, ya que no hay versiones libres capaces de compilar aplicaciones para Windwos Mobile y como no solo en Windows. También decir el tiempo de desarrollo, he tenido desde hace 5 años dispositivos con Windows Mobile, y nunca jamas he podido instalar ninguna  versión superior, a no ser que fuera flasheando la ROM bajo mi responsabilidad y riesgo. Si a todo esto le sumamos un sistema operativo, que a falta de ver como será definitivamente el tan esperado durante años Windows Phone 7, visualmente deja mucho que desear, así como sus aplicaciones. Ah y mas para desarrolladores, su API es muy muy malo, por lo que hacer una aplicación visualmente atractiva, nos dejara la piel en ello.
Microsoft Windows Phone 7 Microsoft Windows Phone 7

Nokia Symbian

Que puedo yo decir de Symbian que la gente no conozca ya. Symbian es el sistema operativo de Nokia, aunque en realidad pertenece a un consorcio de empresas, la parte mayoritaria, 52% de la compañía es de Nokia, así que podemos afirmar que Symbian es de Nokia. Symbian es un sistema operativo mas que probado, durante años de uso en Nokia, y quien no ha tenido en sus manos alguna vez un Nokia. La verdad es que el sistema operativo es bastante bueno, tiene un sistema muy probado y miles de aplicaciones. Para mi, Symbian es un descarte completo, en primer lugar, es muy potente pero a la vez muy lento de ejecución. Aparte de esto, las versiones táctiles han sido un relativo fracaso para Nokia, ya que por experiencia con mi Nokia 5800 o algun N97 de amigos, es que Nokia ha metido la pata hasta el fondo, ya que hasta que no han sacado la 4ª o 5ª versión de firmware para estos dispositivos no han empezado a funcionar cierta fluidez. Esto es un problema de credibilidad, puesto que aunque se venda como rosquillas, para mi, una compañía que ya no en funcionalidad, sino en drivers, el típico juego por defecto que viene en el móvil vaya a tropezones y que un par de años después, actualizando a la ultima versión, el juego vaya como una bala, quiere decir que han sacado versiones como les han dado la gana y que ya lo mejoraran y estamos hablando de tema de drivers o calidad en los mismos. Para mi Nokia no es lo que era y aunque siga teniendo mucho nombre, poco a poco va a ser desbancando por compañías como HTC
Nokia SymbianNokia Symbian

iOS - iPhoneOS

Apple hace unos años  apostó y muy fuerte en el campo de la telefonía móvil y el resultado final es el iOS, un sistema operativo muy estable, muy cuidado, elegante, vamos, lo que se dice una maravilla, ademas con la idea del AppStore, ya que fue el primer sistema operativo en disponer de un market a gran escala, existen miles de aplicaciones para el iPhone. Que puedo decir sobre este sistema operativo tan comentado, alabado y criticado a la vez. Pues que a la hora de elegir un terminal en base a su sistema operativo, iPhone o mejor dicho el iOS es una de mis principales opciones, pero tiene varios problemas, uno de ellos es que es demasiado restrictivo. Para dar a iPhone el toque de terminal exclusivo, Apple no podría dejar que la gente hiciera lo que quisiese, pudieran instalar aplicaciones que modificaran el sistema operativo porque  permitiría de una manera sencilla liberar el terminal y se acaba el chollo para las  compañías que lo venden con planes abusivos, tampoco podemos correr ninguna  aplicación que sea interpretada y no compilada en código nativo ya que sino el terminal iría mas lento, excusa de mas lento un terminal que hasta su versión 4 no ha introducido el concepto de multitarea, algo que el resto de los anteriormente comentados llevan años haciendolo. Para mi, puntos fuertes es el estilismo, aplicaciones, API muy cuidada y documentada, pero por el contrario me atan con un proveedor con tarifas exageradamente elevadas y abusivas. Ademas, resaltar los problemas que ha tenido el iPhone4 por la cobertura de la señal. Bueno, también resaltar que para realizar una  aplicación para iPhone, tienes que programarla con xCode desde Mac, no se puede en ninguna otra plataforma.
Apple IphoneApple Iphone

Android

Por último, lo dejo para el final porque ha sido mi elección, un sistema operativo de Google, una maravilla de sistema donde los haya. Muy cuidado en todos los sentidos. He podido probar las versiones 1.6 desde el  móvil de un amigo, así como la 2.1 con mi actual teléfono HTC Legend y puedo decir que todo esta muy pensado, aunque aun esta verde. Es un sistema operativo pensado para tener acceso a internet. Los contactos, email y demás, aunque podemos configurarlo desde el propio teléfono, esta preparado para funcionar desde la nube, nube que genera Google con Gmail, pudiendo añadir, a esta nube Facebook, Twitter y Flickr. Las aplicaciones al igual que pasa con los Symbian de Nokia, pueden correr con un API Nativo de C o con un API de Java, aunque decir que el API de Java de Android esta mucho mejor pensado y distribuido que el de Symbian, también porque lleva menos años y por tanto menos parches. Las aplicaciones son visualmente atractivas, pero con su toque de sistema, es decir, al mismo estilo de iPhone, pero con el sello Android. A diferencia de iPhone, cosa que me gusta mucho, es que Android dispone de varios escritorios principales, donde podemos incluir accesos directos a nuestras aplicaciones pero también carpetas con archivos, widget, etc. y luego ya tenemos nuestra ventana con el listado completo de aplicaciones. Punto fuerte de este sistema es el Google Maps Navigator, un GPS que se actualiza en red con los  últimos datos desde Google Maps y que esta haciendo temblar a TomTom y Garmin. Programar para Android es mucho mas sencillo porque el SDK es fácil de instalar y utilizar, se programa en Java con Eclipse, para cualquier plataforma, da igual Windows, Linux o Mac por lo que no tenemos que invertir en licencias para programar. A pesar de ser el mas similar en cuanto a estilo con iPhone, es bastante mas superior en otros aspectos, ya que se puede personalizar mucho mas, por ejemplo el HTC Sense, puedes instalar libremente programas que bajes de internet y no estén en el Android Market. Para los desarrolladores es mas barato ya que la nube es de Google y no tiene subscripción como Azure de Microsoft o el Market solo cuesta 25$ y no 100$ como el de Apple.
Google AndroidGoogle Android

Resumiendo lo anteriormente dicho, de los 4 sistemas operativos que he comentado, decir en pocas palabras, que Microsoft llega muy pero que muy tarde a la nueva carrera de los smartphones y ha quedado descolgado del resto, al menos hasta navidad y la salida de Microsoft Windows Phone 7. Si buscamos un teléfono que sea igual que hace 5 años, en todos los sentidos, velocidad incluida, Symbian es el tuyo, pero como no, con un Symbian, casi siempre ira acompañado un Nokia, que siempre se venderá bien y no deja de ser un Nokia. Si queremos fardar, aparentar y gastar mucho dinero, iPhone es el nuestro, pero si queremos tener algo como un iPhone pero mas asequible al bolsillo, lo mejor es un Android. En definitiva Android es para mi opinión personal, el mejor sistema operativo a elegir dentro de un terminal móvil en la actualidad, ya que podemos disfrutar su potencia y características, desde un simple, sencillo y barato Huawei hasta el increíble HTC Desire.

Nokia n70 en Ubuntu por USB

Hace algún tiempo cambié mi viejo movil por un Nokia n70. Este venía con un cable de USB y un software para sincronizarlo con el ordenador de Nokia, el Nokia PC Suite. Salvo algunos problemas menores con Windows, todo me ha ido de maravilla, pero en Linux viene el problema porque no sabía como hacerlo funcionar.

La primera y equivocada opción que pense para conectar mi n70 a mi Ubuntu fue por el Gnome Pilot, pero como ya he dicho, fue equivocada porque lo único que conseguí fue perder el tiempo. Después de investigar durante algún tiempo me topé con el protocolo OBEX que es el usado la comunicación por los moviles y algunas PDA's idependientes del medio de comunicación, lo que quiere decir que da igual si nos conectamos por USB, BlueTooth o IrDA (infrarrojos).

Gracias al Obex, encontré dos aplicaciones que vienen de perlas para conectar por USB al Nokia n70 en Linux y mas concretamente en mi caso en Ubuntu. La aplicación en cuestión es obexftp y obextool, ambos paquetes descargables desde los repositorios de Ubuntu por apt-get o Synaptic.

El primer paso en bajar los paquetes antes mencionados obexftp y obextool. Una vez nos hallamos bajado los paquetes vamos a buscar nuestro movil. En este caso, el mio es un Nokia n70, por lo que lo conecto por USB al ordenador y ejecuto la siguiente sentencia desde consola:

  sudo obexftp -u

Esta sentencia, que ha de ser ejecutada como root, por eso el sudo, nos encontrará en que interface se encuentra el dispositivo movil,

  Interface 0:

      Manufacturer: Nokia

      Product: Nokia N70

      Interface description: SYNCML-SYNC

  Interface 1:

      Manufacturer: Nokia

      Product: Nokia N70

      Interface description: PC Suite Services

Encontramos 2 interfaces, la 0 y la 1. En la 0, es como bien refleja la descripción para SYNC o sincronización, es decir, para intercambiar, contactos, tareas, etc. y la 1, que es la que nos interesa, es la de archivos.

Ya que tenemos reconocido el teléfono y sabemos donde esta, solo tenemos que ejecutar en la linea de comandos:

  sudo obexftp -u 1 -l

De esta forma, para realizar el ejemplo, nos mostrara en formato XML el listado de directorios que hay en el teléfono. Para más información sobre como poder conectar con el teléfono desde la consola, podemos ejecutar cualquiera de los 2 comandos siguiente:

  obexftp --help

  man obexftp

Una vez que ya podemos entrar en el dispositivo movil, vamos a ejecutar una sencilla herramienta gráfica para copiar archivos y explorar directorios. Si instalamos el paquete obextool, podremos ejecutar el siguiente comando en consola:

  sudo obextool --obexcmd "obexftp -u 1"

Desde esta herramienta, dispondremos de un sencillisimo explorador de archivos para poder conectarnos a nuestro telefono o cualquier dispositivo movil y subir o guardar archivos.