Hace solo 3horas se conociò el anuncio oficial en el sitio web http://www.android.com/kitkat/
Cuando tengamos mas novedades, apliaremos, solo ahora les compartimos la estatua que ya està colocada en MountainView.
Ah! y alguien recuerda como llegamos a Android 4.4? (desde hoy: Kit Kat!) Creo que no, asi que repasemos la cronologia....
Android Beta: Astro
Android Beta: Bender
Android 1.5: Cupcake
Android 1.6: Donut
Android 2.0: Eclair
Android 2.2: Froyo
Android 2.3: Gingerbread
Android 3.0: Honeycomb
Android 4.0: Ice Cream Sandwich
Android 4.1 - 4.2 - 4.3 Jelly Bean
Mucho Android - Mi Blog de mobile. Programacion Java para Android. Aprende sobre este nuevo Sistema Operativo que llego para quedarse con nosotros. Este blog es para estar al tanto de lo ultimo referente al sistema operativo Android.
martes, 3 de septiembre de 2013
viernes, 26 de julio de 2013
Pago a Developers desde Google Play: dieron marcha atras!
El gigante de la red anunció de manera sorpresiva que “por el momento” podrán ofrecer y cobrar por las apps pagas en la tienda Google Play

Google volvió a sorprender, esta vez de manera más grata, a los desarrolladores argentinos. Es que a fines de mayo había enviado una carta para explicar que se cancelarían los pagos por las aplicaciones de Google Play, una medida que acaba de quedar sin efecto.
“El mes pasado anunciamos que desde el 27 de junio planeábamos discontinuar el soporte para la venta de apps pagas de los desarrolladores registrados en la Argentina. Por el momento, decidimos que los desarrolladores puedan ofrecer y cobrar por sus apps enGoogle Play mientras exploramos soluciones permanentes. Lamentamos este inconveniente y publicaremos actualizaciones sobre el tema cuando tengamos algo que reportar”, dice el comunicado de la compañía.
La novedad toma por sorpresa a todo el ecosistema de desarolladores locales, que vio durante este mes cómo distintos actores del sector y el Gobierno buscaron una solución al problema.
En declaraciones a Infobae, fuentes del sector informaron que la compañía trabaja para lograr una solución definitiva en el mediano plazo.
De acuerdo con las mismas fuentes, el anuncio sobre la suspensión de pagos tuvo que ver con una cuestión administrativa de Google.
En un principio se especuló con que las restricciones cambiarias eran la raíz del problema, pero lejos estaba eso de ser cierto ya que en todo caso el pago a desarrolladores implica movimiento de dinero dentro de la Argentina e incluso llegada de divisas.
En mi cuenta personal, me enviaron este email como desarrollador, e invitandome a seguir esos pasos:
Google volvió a sorprender, esta vez de manera más grata, a los desarrolladores argentinos. Es que a fines de mayo había enviado una carta para explicar que se cancelarían los pagos por las aplicaciones de Google Play, una medida que acaba de quedar sin efecto.
“El mes pasado anunciamos que desde el 27 de junio planeábamos discontinuar el soporte para la venta de apps pagas de los desarrolladores registrados en la Argentina. Por el momento, decidimos que los desarrolladores puedan ofrecer y cobrar por sus apps enGoogle Play mientras exploramos soluciones permanentes. Lamentamos este inconveniente y publicaremos actualizaciones sobre el tema cuando tengamos algo que reportar”, dice el comunicado de la compañía.
La novedad toma por sorpresa a todo el ecosistema de desarolladores locales, que vio durante este mes cómo distintos actores del sector y el Gobierno buscaron una solución al problema.
En declaraciones a Infobae, fuentes del sector informaron que la compañía trabaja para lograr una solución definitiva en el mediano plazo.
De acuerdo con las mismas fuentes, el anuncio sobre la suspensión de pagos tuvo que ver con una cuestión administrativa de Google.
En un principio se especuló con que las restricciones cambiarias eran la raíz del problema, pero lejos estaba eso de ser cierto ya que en todo caso el pago a desarrolladores implica movimiento de dinero dentro de la Argentina e incluso llegada de divisas.
En mi cuenta personal, me enviaron este email como desarrollador, e invitandome a seguir esos pasos:
Estimado Desarrollador:
En el mes de mayo te enviamos un correo electrónico informando que planeábamos descontinuar el soporte para la venta de aplicaciones pagas de desarrolladores registrados en Argentina. Desde entonces, hemos trabajado arduamente para encontrar una solución que nos permitiese continuar con los pagos a desarrolladores en ese país.
Hoy estamos contentos de informarte que realizaremos una importante mejora para que los desarrolladores registrados en Argentina continúen ofreciendo aplicaciones pagas en Google Play. Esta actualización te permitirá recibir pagos por transferencia bancaria a través de Google Wallet Merchant Center. Agradecemos la buena predisposición del Ministerio de Industria y las diferentes asociaciones de desarrolladores de Argentina para encontrar una solución.
Si sos elegible para recibir un pago, tu próximo cobro planificado será el último enviado a través de Google AdSense. Luego, no recibirás más pagos por tus ventas en Google Play a través de tu cuenta de Google Adsense asociada, sino a través de Google Wallet.
Para asegurarte que tus pagos no se vean interrumpidos, por favor actualizá la información de tu cuenta bancaria en Google Wallet Merchant Center, siguiendo estos pasos:
- Ingresá a tu cuenta de Google Wallet Merchant Center.
- Hacé click en el botón de Configuración, y luego hacé click en Finanzas.
- Ingresá la información de tu cuenta bancaria.
Deberás hacer esto aún cuando ya hayas provisto la misma información en tu cuenta de AdSense asociada. Durante esta actualización no habrá interrupción en las ventas de tus aplicaciones en Google Play. Si los datos de tu cuenta bancaria no están registrados para el 15 de agosto, los ingresos por las ventas de tus aplicaciones se acumularán en tu cuenta de Google Wallet Merchant Center, pero no se pagarán hasta que tu información esté completa.
Para más información sobre este cambio, visitá nuestro Centro de Ayuda.
Por favor contactá directamente a tu banco para conocer políticas de transferencias, costos asociados (comisiones bancarias) y requisitos de documentación que pudiera tener. Si tenés preguntas o dudas acerca de cómo ingresar la información para recibir pagos, por favorcontactanos.
Para Google es prioritario darle la posibilidad a los desarrolladores de distribuir y monetizar sus aplicaciones, por eso estamos contentos de haber encontrado una solución que nos permite continuar recibiendo ingresos por la venta de aplicaciones pagas de desarrolladores registrados en Argentina.
Atentamente,
El Equipo de Google Play
©2013 Google Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043
Preferencias de correo electrónico: has recibido este correo electrónico obligatorio para mantenerte informado sobre cambios importantes en tu cuenta de Google Play
jueves, 25 de julio de 2013
Android 4.3: ¿Qué hay de nuevo?
Además de haber anunciado la nueva Nexus 7 y Chromecast, Google también ha confirmado el lanzamiento de Android 4.3. Tras muchos rumores y suposiciones, la compañía ha actualizado su sistema operativo con optimizaciones de rendimiento y nuevas funciones para usuarios y desarrolladores. Se estrenará con la segunda tableta fabricada por Asus para la compañía del buscador.
El nuevo Android 4.3 se basa en las mejoras de rendimiento que ya figuran en Jelly Bean y añade nuevas optimizaciones que hacen que Android sea aún más rápido. De momento, los primeros dispositivos en actualizar a la nueva versión serán el Nexus 4, Nexus 7 (versión 2012), Nexus 10 y Galaxy Nexus.
Aumento del rendimiento gráfico: Han optimizado el flujo de comandos de dibujo, reorganizando y uniendo operaciones, y además, el procesador también puede ahora utilizar multithreading a través de múltiples núcleos de CPU para realizar ciertas tareas. Incluye soporte de plataforma para Khronos OpenGL ES 3.0 , con juegos y otras aplicaciones con capacidades de alto rendimiento de gráficos 2D y 3D en los dispositivos compatibles.
Mejora de representación de formas y texto: Las formas tales como círculos y rectángulos redondeados se visualizan ahora con una mayor calidad de una manera más eficiente.
Bluetooth Ready: Android 4.3 incluye soporte integrado para la plataforma inteligente Bluetooth Ready en el papel central y proporciona un conjunto estándar de API que las aplicaciones pueden usar para detectar dispositivos cercanos, consulta de servicios GATT, y lectura/escritura de características.
Mulitusuario para tablets: el nuevo sistema operativo extiende la característica multiusuario para las tabletas con perfiles restringidos, una nueva forma de gestionar los usuarios y sus capacidades en un único dispositivo.
Exploración WiFi: El modo de exploración WiFi se modifica de tal forma que con Android 4.3 permite a los usuarios mantener el WiFi encendido sin necesidad de conectarse a una red WiFi, para mejorar la precisión de la localización.
Flujo de notificaciones: Las notificaciones han sido durante mucho tiempo una de las características más populares de Android porque permiten a los usuarios ver información y actualizaciones de todo el sistema, todo en un solo lugar. Ahora en Android 4.3, las aplicaciones pueden observar el flujo de notificaciones con el permiso del usuario y mostrar las notificaciones en la forma que desee, incluyendo el envío a dispositivos cercanos conectados a través de Bluetooth.
Protección contra vulnerabilidades: Android ahora utiliza SELinux para proteger al sistema operativo contra las vulnerabilidades de seguridad potenciales.
domingo, 14 de julio de 2013
Android y un potencial Monopolio
A principios de esta semana Kantar Worldpanel ComTech publicaba los resultados de un estudio sobre tendencias del mercado de smartphones en la Q1 de este año, esto es, en el primer trimestre.
Entre numerosas cifras, sin duda alguna resaltaba la comparativa de venta de smartphones según el SO entre las mismas fechas del año pasado y éste, y que viene a demostrar lo que todos ya sabíamos: Android es líder indiscutible.
Y no solo en España, donde ya el año pasado andaba por el 76,8% de mercado, y que en este primer trimestre ha subido a nada menos que el 93,5%, sino en otros mercados que han sido mayoritariamente fieles a Apple, y donde se éste ha ido perdiendo porcentaje en favor del androide, como USA (+1,4%) y Reino Unido (+9,1%).
Se habla de iOS como el gran perdedor no porque haya estado en lo más alto y es casi el único que le ha plantado cara a Android, sino porque es debido a la bajada en sus ventas (bajada en relación a Android; no confundir con ventas reales, donde iOS sigue aumentando) que el porcentaje ha subido en Android, como también lo ha hecho en la mayoría de países Windows Phone (paradógicamente en Alemania y en España ha ocurrido lo contrario).
El resto de SO estudiados tienen por lo general unas pérdidas considerables teniendo el cuenta el poco porcentaje del que disfrutaban (inferior en cualquier caso al 10%), y entre los que están BB, Symbian y presumiblemente sistemas operativos casi extintos de las primeras generaciones (Others en la tabla superior).
Precisamente ayer se publicaba otro estudio, este de parte del IDC, que viene a decir lo mismo en un sector que históricamente le ha pertenecido a la manzana, el de las tablets, con un 56,5% para Android, y un 40% para iOS (247.5% de crecimiento en un año para Android frente al 65.3% de Apple).
A la vista de los datos recogidos, varias puntualizaciones a tener en cuenta:
- Apple como compañía sigue siendo líder de ambos mercados: Y para colmo ha tenido un trimestre brillante en cuanto a beneficios, lo que saca a relucir dos cuestiones. Por un lado, el mercado de smartphones, y sobre todo el de tablets está aumentando como la espuma, fagocitando el mercado del PC, que no levanta cabeza. Y por otro, que no hay que olvidar que Android son decenas de compañías, y Apple solo una. Ya ha pasado con el mercado del ordenador personal, ya ha pasado con el mercado del reproductor MP3, y está pasando ahora con el del mundo móvil. Apple abre un mercado, se vuelve líder unos años, hasta que el propio peso del resto de competidores acaban por innovar más en su sector y se apoderan de él. A día de hoy, Apple dobla en ventas a su siguiente competidor, Samsung, y este más de lo mismo al resto.
- Si Google y Apple ha llegado a donde están, ha sido por el mutismo del resto de empresas: Quitando Android e iOS, no hubo movimiento del mercado más durante este año, o al menos no lo suficientemente alto para causar ruido. Mientras, el mercado ha ido creciendo por la propia expansión del smartphone con un must to have de la mayoría de países desarrollados.
- Una cuota de mercado tan alta como la de smartphones Android en un país como España solo quiere decir una cosa: El resto lo está haciendo francamente mal. Una situación así es imperdonable, y de no ser solucionada a tiempo, podría llevar a un próximo monopolio, como el que vivimos hace años con el navegador IE o el propio Windows. Y haciendo una fotografía genérica del sector tecnológico, está favoreciendo el nacimiento de una empresa como Google que podría ser el Microsoft del futuro, siendo líder de varios sectores de los más influyentes actualmente.
Afortunadamente, hay un futuro prometedor en la próxima generación de sistemas operativos móviles, que empiezan a llegar desde este mismo mes, y a la largo del año. Plataformas como Firefox OS Móbile y Tizen OS, que apuntan hacia la web como ecosistema. El nuevo SO de la ya difunta RIM (actualmente Blackberry), BlackBerry10 yUbuntu de Canonical, que huyen de interfaces actuales apostando por los gestos, y el siempre presente WP, con su nueva versión WP8, y quizás con el apoyo del sistema operativo híbrido Windows 8.
Recordemos que si el año pasado no hubo movimientos más que por parte de Android (que hay que reconocer que ha mejorado muchísimo) e iOS (que no han sabido estar a la altura), este año tendrán que competir con recién llegados que apuntan muy alto, y viejas leyendas que se niegan a morir en el olvido.
Espero que el año que viene vuelva por aquí para traeros las estadísticas de una Q1 2014 mucho más equilibrada.
sábado, 13 de julio de 2013
El problema de la fragmentación en Android
Hoy quería echar un capote en favor a Android, ese sistema operativo que en apenas seis años ha sabido mover sus fichas y comerse el mercado de la nueva era Post PC.
Y es que en su momento ya hablamos sobre el gran talón de Aquiles del android, la fragmentación presente en versiones operativas en circulación.
Para colmo, su competidor directo, iOS, y debido a la centralización propia del sistema operativo, puede estar orgulloso de no tener apenas fragmentación en sus dispositivos. De hecho ha sido uno de los eslóganes usados por Apple en la última WWDC para demostrar que iOS es superior.
Que haya fragmentación no es bueno, y en eso tienen razón. Lo perfecto sería que tan pronto una nueva versión saliese al mercado, todos los dispositivos con versiones antiguas pudieran actualizar. Pero para ello, primero deben de cumplirse algunos requisitos que quizás el dispositivo ya no cumpla, y que la empresa del producto anteponga la lucha contra la fragmentación frente a los propios intereses económicos (obsolescencia programada), descontando el hecho de que debería ser gratuita (en sistemas operativos móviles estamos acostumbrados a que sea, pero no pasa lo mismo con los tradicionales) y permitir un canal de actualización que contemple el 100% de casos de uso (mismamente internet no lo tiene todo el mundo que tiene un dispositivo).
En Android esta situación se agrava precisamente por la filosofía abierta del proyecto, ya que son las operadoras quien permiten actualizar el sistema, y antes de ellas, son los fabricantes. Por todo ello, una versión nueva de Android tiene que pasar por manos de cada fabricante, que querrá personalizar sus dispositivos mediante software específico para ellos, y cuando éstos lo liberan, toca el turno de las teleco, que hacen lo propio (y para colmo lo hacen mal).
Entre tanto cruce de desarrollos, acaban pasando meses y meses, que a la larga termina por crear paradojas tan subrealistas como que un terminal de gama alta no tenga aún ya no solo la última versión, sino la anterior (los tiempos de desarrollo de nuevas versiones adelantan a los tiempos de desarrollo de aclimatación en dispositivos).
En iOS, es Apple quien desarrolla tanto software como hardware, y es por ello que tan pronto sale una nueva versión, está disponible para todos los dispositivos “compatibles” (nótese la ironía).
Afortunadamente, Google está luchando contra la fragmetnación, no en el campo más directo (que por otro lado es el que conoce la sociedad, y que resulta complejo de cambiar), sino de cara a desarrolladores.
Por eso me gustaría dejaros dos gráficas de un estudio del mes pasado, analizándolas justo debajo.
¿Qué podemos ver? Pues sin pararnos mucho, que parece que Android tiene un 99% de eficacia, e iOS 93%. Ahora bien, como suele ocurrir en estos estudios, hay truco (que no quita que digan la verdad, aunque sea a medias).
Suponiendo que los datos sean totalmente ciertos, la gráfica azul muestra la fragmentación actual de dispositivos iOS, donde vemos que iOS6 está presente en el 93% de dispositivos de la compañía.
En la gráfica verde, lo que tenemos es el porcentaje de dispositivos que usan los mismos Google Play Services, el conjunto de APIs que los desarrolladores de aplicaciones usan para crearlas, con un masivo 99% de mercado.
En este 99% de mercado, habrá varias versiones diferentes de Android (superiores en todo caso a la 2.1), por lo que la fragmentación sigue estando presente, pero a la hora de la verdad, hay más porcentaje de aplicaciones compatibles en Android que en iOS atendiendo exclusivamente al mercado de dispositivos que están a día de hoy en circulación.
Dos puntos a considerar, y con ello termino:
- Que Google lo está haciendo bien: Mantiene la estrategia de afrontar problemas buscando soluciones y no medidas que solucionen los problemas, como también hemos visto en la filosofía de parchear exploits en Chrome, y no arreglar vulnerabilidades, lo que lo convierte en un navegador con muchas vulnerabilidades pero paradógicamente de los más seguros del mercado.
- Que la versión de un sistema operativo es indiferente a los problemas adyacentes a la fragmentación:Luchar contra la fragmentación es casi imposible (habría medidas para paliarlo como firmar un compromiso de todos los fabricantes y todas las operadores a fijar un calendario de actualizaciones, algo que dudo mucho que llegue a materializarse), por lo que Google ha decidido afrontarlo de la mejor manera posible. Si toda la cartera de APIs que el desarrollador tiene a su disposición para desarrollar aplicaciones la hacemos compatible de forma retroactiva, aunque haya fragmentación, no habrá fragmentación de servicios, que a a la hora de rendir cuentas, es el verdadero problema.
Y para hacer una foto final, que quede presente que aunque un problema, la fragmentación no debería ser considerada un punto vital de cara a elegir entre Android o iOS como sistema operativo de nuestros dispositivos.
Fuente: http://www.pabloyglesias.com
martes, 11 de junio de 2013
Crear aplicaciones compatibles con múltiples pantallas.
A la hora de desarrollar una aplicación Android deberemos tomar varias decisiones muy importantes, como puede ser, el nivel de API mínimo que vamos a soportar y el tamaño de pantalla de los dispositivos para los que nuestra aplicación va a estar optimizada.
En el primero de los casos cuanto menor sea el nivel del API nos aseguraremos un mayor mercado potencial de usuarios-dispositivos que van a poder descargar nuestra aplicación. A cambio, perderemos la posibilidad de utilizar las nuevas características que se van añadiendo en cada API así como tener que utilizar clases y métodos deprecados en vez de los que les sustituyen y que están más optimizados.
Lo mismo sucede respecto al tipo de pantallas que la aplicación va a tener en cuenta. Una de las ventajas de Android es que cualquier fabricante puede diseñar un teléfono, con las características que desee y utilizar como sistema operativo Android. También, permite, que no sólo sea un sistema operativo móvil, ya que puede utilizarse en múltiples dispositivos, relojes, tabletas, televisiones, etc. Sin embargo, el desarrollador tendrá que pensar qué tipo de dispositivos y tamaños va a querer que puedan utilizar su aplicación. Para ello, vamos a ver qué mecanismos nos ofrece Android para poder utilizar nuestra aplicación en distintas pantallas.
Esta documentación es aplicable a partir de Android 1.6 (API de nivel 4).
A la hora de ver cómo podemos soportar varias pantallas, debemos tener en cuenta tanto el tamaño como la densidad. Entendemos por tamaño, como la medida de la diagonal de la pantalla. La densidad es el número de píxeles dentro de un área física de la pantalla, medidas en dpi (dots per inch).
Por suerte, no vamos a tener que trabajar cada una de las posibles configuraciones, ya que Android trabaja con rangos tanto de tamaños como de densidades. Es decir, que no vamos a tener que crearnos un layout para cada tamaño de pantalla o densidad. Por ejemplo, un dispositivo con una pantalla de 3,5 pulgadas y otro con una pantalla de 4 pulgadas, entrarían dentro del mismo rango, con lo cual sólo deberíamos de optimizar un layout para ambos dispositivos.
Los rangos de tamaño de pantalla que vamos a poder manejar son:
- small: para pantallas pequeñas.
- normal:
- large: para dispositivos con pantallas grandes.
- xlarge: para el resto de los dispositivos con pantallas de aproximadamente más de 7 pulgadas.
A partir de Android 3.2 (Api 13), estos grupos son deprecados, a favor de las nuevas técnicas de manejo de pantallas, que se basan en el ancho de la misma y que veremos más adelante.
Igualmente, tenemos cuatro grupos generales para la densidad:
- ldpi: (low) para densidades bajas
- mdpi: (medium): densidades entre 130 y 180 dpis aproximadamente.
- hdpi: (high) para pantallas con densidades altas.
- xhdpi: (extra high) para pantallas con más de 270 dpis aproximadamente.
Estos grupos están organizados alrededor de la configuración básica formada por el tamaño normal y la densidad mdpi que corresponden con el primer dispositivo Android, el T-Mobile G1.
La densidad, es un elemento muy importante, pues pantallas con el mismo tamaño, y distinta densidad, van a tener diferente espacio disponible. Android utiliza dp (densidad independiente del píxel) como unidad de medida virtual que no depende de la densidad. Es equivalente a un píxel en una pantalla con una densidad de 160 dpi, que estaría en el rango de la densidad media. Utilizando esta medida, Android, realizará todo el proceso de conversión de tamaños a píxeles, lo que nos asegura la compatibilidad con los distintos tipos de densidad. En las aplicaciones podemos expresar medidas en píxeles, pero esto puede causar una mala visualización en pantallas con diferentes densidades.
El tamaño mínimo que tendrán que tener nuestros layouts en dps son:
- xlarge: al menos 960 dp x 720 dp
- large: 640 dp x 480 dp
- normal: 470 dp x 320 dp
- small: 426 dp x 320 dp.
Cuando creemos la aplicación, podremos crear recursos específicos, para cada grupo de tamaño y para cada grupo de densidad. Para el tamaño tendremos que crearnos distintos layouts y para la densidad deberemos proveer bitmaps con resoluciones diferentes.
Aplicaciones independientes de la densidad.
Una aplicación será “independiente de la densidad”, cuando conserve el tamaño físico (desde el punto de vista del usuario) de los elementos de la interfaz de usuario, cuando sea visualizado en pantallas con diferentes densidades.
Con el siguiente ejemplo, se comprende fácilmente, la importancia de conservar la densidad. Tenemos tres pantallas con distintas densidades y el mismo botón y la misma imagen en cada una (todos los tamaños los hemos expresado en píxeles). Sin embargo, en la pantalla con densidad más baja, el botón y la imagen se ven más grandes, mientras, que en la pantalla con la densidad mayor, estos elementos se ven más pequeños. Además, en la pantalla con densidad más baja, la imagen aparece píxelada.
Es lógico, si tenemos en cuenta, que la densidad es el número de píxeles que entran en un área física, en las pantallas con baja densidad, tendremos menos píxeles, con lo que una imagen de 32 × 32 píxeles ocupará más área física de pantalla. Y viceversa para pantallas con alta densidad.
En la siguiente imagen, vemos como se mostraría al usuario, los elementos anteriores, una vez que hemos asignado recursos para los distintos tipos de densidades. Ahora, las tres pantallas muestran los elementos de forma similar.
Para poder lograr que nuestros elementos se muestren idénticamente en cualquier densidad debemos expresar las medidas de los elementos en dps. Un botón con un tamaño de 64 dp x 64 dp tendrá el mismo tamaño (en dps) para cualquier densidad. El sistema será el encargado de transformar ese botón en los píxeles adecuados para que mantenga ese aspecto en cualquier pantalla.
Ya tenemos solucionado el problema del escalado de los elementos. Sin embargo, las imágenes, van a píxelarse. Para evitarlo, es necesario que creemos recursos alternativos para los bitmaps.
Si decidimos, que no queremos que nuestra aplicación sea soportada en todas las pantallas, deberemos indicar los dispositivos soportados en el fichero AndroidManifest.xml. De esta forma, un dispositivo que no esté soportado no podrá descargarse la aplicación. Para ello, tendremos que utilizar el elemento "<supports-screens>", indicando los grupos de tamaño o de densidad soportados.
Crear recursos para pantallas distintas.
Por defecto, trabajando con dps y el atributo “wrap_content”, Android redimensiona los layouts de nuestra aplicación, ajustándoles a la pantalla del dispositivo. Esto será suficiente para casi todos los casos. Sin embargo, puede, que en pantallas grandes, queramos aprovechar el mayor espacio para variar la distribución, poder separar más los elementos, ampliarles, etc, o en pantallas pequeñas tener que ajustar nuestro diseño a la disminución del espacio disponible. Para ello, es necesario crearnos un layout para cada grupo de tamaño que queramos que muestre un aspecto distinto. Estos layouts, hay que guardarles dentro de la carpeta resources. Para cada tamaño, crearemos una carpeta del tipo "layout-xlarge/", "layout-small/", etc.
Igualmente, para los bitmaps dibujables, Android, puede redimensionar los ficheros .png, .jpg, .gif y nine-patch(.9.png) intentando renderizarlos de forma correcta al tamaño físico de cada dispositivo. Si queremos asegurarnos, que se renderizan correctamente, tendremos que crearnos estos ficheros para cada grupo de densidades y almacenarlos en la carpeta "resources" en la carpeta correspondiente. Estas tendrán el formato "drawable-grupo_de_densidad", por ejemplo, "drawable-hdpi".
Un fichero nine-patch es básicamente un fichero png en el que se especifican dos regiones que son estirables. Si el sistema tiene que escalar la vista estira el nine-patch, pero sólo va a estirar las dos regiones especificadas. De esta forma, el mismo recurso, funcionará para distintos tipos de pantallas.
A la hora de crear los layouts, no hay que olvidarnos, que la pantalla puede mostrarse en orientación vertical u horizontal, con lo que el tamaño va a cambiar radicalmente. Es posible crearnos layouts específicos para cada orientación, guardándoles con el calificador "land" o "port".
Cuando creemos los nuevos bitmaps debemos respetar el ratio de escalado 3:4:6:8. Por ejemplo, para un bitmat de 48×48 píxeles que se utilice en una pantalla de densidad media deberíamos crear uno de 36×36 para densidades bajas (x0.75), 48×48 para densidades medias, 72×72 para densidades altas(x1,5) y finalmente 96×96 (x2) para las pantallas con densidades altas.
Trabajar con layouts para tablets a partir de Android 3.2
Todo lo referente a los cuatro grupos de tamaños de pantallas es sólo vigente hasta Android 3.2. A partir de esta versión, se ha creado un nuevo sistema de gestión de los tamaños de pantalla, basándose en el ancho o alto de las mismas, siempre expresado en dp.
Antes de definir el tamaño que vamos a necesitar para nuestro layout, debemos tener en cuenta, que Android puede usar elementos de la interfaz de usuario (como la barra de sistema en la parte inferior de la pantalla o la barra de estatus en la parte superior) . Así que no tendremos disponible todo el espacio de la pantalla para nuestro layout.
Tenemos disponibles los siguientes nuevos calificadores de recursos para crear nuestras carpetas contenedoras de los layouts:
- swdp: Por ejemplo, sw600dp o sw720dp. El tamaño que vamos a necesitar en el layout, indicado por la dimensión más corta del área de pantalla disponible. Es decir, el menor ancho o alto posible para la pantalla.
Si nos creamos un layout dentro del recurso “res/layout-sw600dp”, este se usará por el sistema, siempre y cuando la pantalla, da igual en la orientación en que esté, alcance los 600 dp.
- wdp: indica el ancho mínimo disponible en dp para poder utilizar los recursos. Si cambiamos la orientación se buscará un nuevo recurso que se corresponda con el nuevo ancho. Por ejemplo, w720dp.
- hdp: Por ejemplo, h720dp o h1024dp. Igual que el anterior, pero en este caso, se controla el tamaño de la altura de la pantalla.
Veamos unos ejemplos de tamaños mínimos en dp para distintos dispositivos:
- 320 dp: para un teléfono normal (240×320 ldpi, 320×480 mdpi, 480×800 hdpi, etc).
- 480 dp: para tablets pequeñas (480×800 mdpi).
- 600 dp: para una tablet de 7 pulgadas (600×4024 mdpi).
- 720 dp: para tablets grandes, de 10 pulgadas (720×1280 mdpi, 800×1280 mdpi, etc).
Si quisiésemos crear una aplicación para un teléfono y una tablet (y el menor tamaño que van a poder tener las tablets, para poder usar el layout personalizado es de 600dp) tendríamos dos recursos:
- res/layout/main_activity.xml. Para el teléfono móvil.
- res/layout-sw600dp/main_activity.xml. Para las tablets.
Si necesitamos, especificar un layout diferente, para pantallas de 600dp y de 720dp, tendríamos un recurso más:
- res/layout-sw720dp/main_activity.xml.
En estos casos, no importa si el ancho viene dado por la orientación horizontal o vertical. Si queremos, utilizar un layout sólo cuando el ancho sea superior a 600 dp tendremos que crearnos el recurso:
- res/layout-w600dp/main_activity.xml.
Si cambiamos la orientación, y el tamaño del ancho es menor de 600, se utilizará el layout del recurso: res/layout/main_activity.xml.
Al igual que ocurría con los primeros grupos genéricos de tamaño, debemos declarar en el AndroidManifest.xml qué tamaños va a soportar nuestra actividad. Utilizaremos el mismo elemento "supports-screens" con el nuevo atributo "android:requiresSamallestWidthDp", con el que indicamos el ancho mínimo necesario para poder utilizar la aplicación.
domingo, 9 de junio de 2013
Android y su licencia
Encontrè un interesante post en esta fuente, y se los quiero compartir: http://yosoyandroid.com
Android es “Open Source”. Siempre escuchamos esto pero, ¿Sabemos lo que significa? Lo primero que debemos saber es que “Open” no significa gratis sino libre, “freedom”, libertad. Existen muchos tipos de licencias para “software” libre pero nos vamos a enfocar en dos, GPLv2 y Apache. Dos tipos de licencias de “software” de código abierto o libre y los dos que rigen a Android y su Kernel.
La idea de este post es resumir la licencia de Android y cuánta libertad tienen los manufactureros y las entidades que decidan crear su propio ROM de Android. Estudiaremos un poco a fondo estas dos licencias y el por qué y para qué se usan en Android. Vamos a ir por parte ya que es mucho material y en este post, nos enfocaremos en el licenciamiento Android y luego hablaremos del Kernel de Linux.
Android se desarrlló desde sus inicios con el propósito en específico de ser la primera plataforma libre, de código abierto y completa para dispositivos móviles.
Android es lo que se conoce como un “software environment” o simplemente le podemos llamar “software”. Este incluye un sistema operativo basado en el Kernel de Linux el cual incluye una máquina virtual de JAVA conocida como el DALVIK. Dentro de esta máquina virtual es donde se ejecutan o corren los apps, lo que significa que estos corren aislados unos de otros. En palabras simples, lo que conocemos como Android, ese ambiente gráfico que parece controlar nuestros dispositivos; es un conjunto de apps corriendo en en un ambiente protegido o un “sandbox”, sobre el Kernel de Linux.
En Android, a diferencia de otros sistemas operativos, los apps de terceros no son subordinados de los apps incluidos por defecto en el “software”. Esto a lo que se refiere es que por ejemplo si el usuario desea puede reemplazar el app de mensajería, contactos o hasta el app de llamadas telefónicas.
Android fue desarrollado por Android Inc y luego adquirido por Google y desde su inicio se intencionó a ser una plataforma de código abierto y libre para dispositivos móviles. Este tipo de “software” de código abierto se rige bajo unas licencias. En el caso de Android, Google lo distribuye bajo la licencia Apache 2.0.
¿Qué dice la licencia Apache 2.0? Lo más importante del licenciamiento Apache es que te permite usar, modificar, distribuir, vender y promocionar en forma de código u objeto el material que usaste bajo esta licencia. En otras palabras, si usaste un código de un “software” bajo la licencia Apache 2.0, puedes crear tu propio “software” basado en el original, modificándolo como gustes y hasta puedes venderlo sin la necesidad ni obligación de compartir los cambios realizados al código original. Lo que sí te obliga Apache 2.0 a hacer es lo siguiente:
- Proveer una copia de la licencia Apache 2.0
- Incluir una notificación en el código fuente de que el mismo fue modificado
- Retener notificaciones de modificaciones anteriores al código
En resumen, Google decidió licenciar a Android bajo Apache 2.0 porque creen firmemente que el mismo es uno de libre elección. Google ni Android quieren dictarle a los usuarios o desarrolladores lo que pueden o no hacer con su código y un licenciamiento como el GPLv2, el cual rige al Kernel de Linux, no brindaría este tipo de libertad.
Gracias al licenciamiento de Apache 2.0, los manufactureros pueden usar el código de Android, modificarlo y distribuirlo en cualquier forma que deseen sin la necesidad de liberar su código fuente. Bajo la licencia Apache 2.0, liberar el código es opcional y lo haces solo si de verdad quieres ayudar y contribuir a la comunidad de “software” libre. Práctica que pocos o ningún manufacturero sigue.
Próximamente estaremos analizando el licenciamiento del Kernel de Linux y veremos cómo los manufactureros en cierto sentido están obligados por Ley, bajo la licencia GPLv2, a liberar el código fuente de los cambios que realicen al Kernel.
fuente: http://yosoyandroid.com
Suscribirse a:
Entradas (Atom)

