viernes, octubre 11, 2013

Android 9-patch splash screens that do not stretch the logo in the middle

A common need for a mobile app is a splash screen (which typically fill the whole screen) that contains a logo and that adapts itself to different screen resolutions and form factors without distorting the logo.

Google has a PNG format called 9-patch that allows to stretch just the sides of an image for Android apps, as for a logo, or, else, just the center (for instance, a button whose inside stretches leaving the corners intact).

However, I took me quite a while to figure out how to create 9-patch images that leave a logo in the middle intact (which is probably not surprising with Google things, that tend to lean on the cryptic side).

You need to start with a PNG image with some room around the logo in the center, as Android is going to stretch the “margins” (fill), if you will.

Them, open it with draw9patch.exe, included in the Android SDK.

You can find general info easily on the web, but the trick here is that the TOP and LEFT lines delimit the margins, while the lines at the BOTTOM and RIGHT define the object in the middle.

It should be obvious from looking at the screen capture.

There is also an online utility called Simple Nine-patch Generator in Google's Asset Studio that should allow for the creating 9-patch versions of a number of sizes of a given image in one go, but it does not work for this case as it can only do a single “stretch regions”, although the logo itself can be selected appropriately with the “content padding” area. The new “Optical bounds” feature only works for Android 4.3+ and is used for aligning, which is not of use for a splash screen. So you should make the largest image in draw9patch and then generate the other sizes with 9patch-resizer.



martes, julio 16, 2013

Tiempo de cocción del arroz. Efecto de la altura en la temperatura de ebullición del agua para una paella infalible

Paella, foto de Nacho Vela
Foto de Nacho Vela
Una buena paella con amigos y/o familia es impagable, así que últimamente estoy intentando abordar el asunto de la paella desde un punto de vista científico, intentando separar los muchos mitos de la realidad, para llegar a un procedimiento paellístico infalible.

Dada la popularidad del plato en todo el país, uno pensaría que en los muchos restaurantes que la hacen tendrían claro cómo hacer buena paella, pero lo cierto es que fuera de Valencia (la de España, obviamente) es casi imposible comerse una paella con el punto del arroz como toca, aunque yo personalmente las he hecho buenas a muchos kilómetros de distancia y distintas altitudes. Y en la misma Comunidad Valenciana tampoco la hacen bien en cualquier sitio.

Por ejemplo, se dice que el agua es importante (de hecho, supuestamente el único restaurante de Madrid que las hace bien se lleva el agua desde Valencia, lo que daría credibilidad a esa creencia), lo que asume que las sales disueltas en el agua juegan cierto papel.

En cualquier caso, lo que es indudable desde un punto de vista físico es que la temperatura de ebullición del agua varía con la altitud. Aunque los cambios no sean muy grandes (hablamos de 1 grado menos a 1000 metros, o sea 99 grados desde los 100 al borde de la playa), son suficientes para modificar sustancialmente los tiempos requeridos de cocción (y, por tanto, la cantidad necesaria de agua). Como ejemplo, la temperatura de ebullición a máxima presión en una olla a presión es de unos 121 grados, y sin embargo ese simple 21% de incremento supone reducir a un tercio el tiempo de cocción (con 15 minutos de cocción de arroz al aire equivaliendo a 4 minutos en olla exprés - asumiendo que tardemos 1 min en sacar el vapor antes de abrirla, 5 minutos si enfriamos la olla debajo del grifo y la abrimos rápidamente). Al contrario, a 6400 metros se produciría el efecto inverso y, siendo la temperatura de ebullición 79 grados, se deduce que el tiempo de cocción se multiplicaría por 3.

La que sigue es una tabla (fuente: engineeringtoolbox.com ) que expresa la variación de la temperatura de ebullición en función de la altitud:
Imagen de engineeringtoolbox.com
La tabla es para agua pura. El agua con sal y más cosas herviría a una temperatura algo más alta.

Por tanto, podemos decir sin lugar a dudas que los tiempos de cocción deben ajustarse si la altitud a la que se cocina la paella (o cualquier otra cosa que use agua) cambia sustancialmente con respecto a aquella a la que se formuló la receta.

Intentando buscar la compensación adecuada en los tiempos de cocción en función de la altitud, en Internet he encontrado recomendaciones muy variables, que incluyen un 5% por cada 300m, un 10% por cada 300 metros, y 1 minuto por cada 300m.

Puesto que la relación entre la temperatura de ebullición y la altitud parece bastante lineal, asumiendo que en la olla a presión los tiempos se reducen a un tercio, haciendo cálculos me sale un 7,1% por cada 300 metros.

He elaborado esta tabla en la que figuran el porcentaje de tiempo que se debe alargar el tiempo de cocción en función de la altitud. En la columna de la derecha están los tiempos concretos para la paella (asumiendo el arroz redondo habitual de la paella valenciana), partiendo de 15 minutos al nivel del mar (¡la playa!).


De igual manera, en el campamento base del Everest en Nepal (a 5364 m, un buen sitio para hacerse una paellita de pollo y conejo o de lo que haya por allí), hablaríamos de 33 minutos (un 119% más). Como curiosidad, en la cima del Everest hablaríamos de casi 45 minutos de cocción para el arroz, es decir, casi multiplicar por 3 el tiempo.

En cualquier caso agradeceré la confirmación de los tiempos de cocción por parte de algún habitante de lugares como La Paz (Bolivia, 3640 m) o Quito (Ecuador, 2850 m). El D.F. (Distrito Federal, Méjico/México) tampoco es manco con sus 2240 m.

La cantidad de agua que se ha de usar también es importante, porque, aunque con el fuego podremos acelerar o atenuar la evaporación, podría ser que utilizáramos demasiada agua y no diera tiempo a que la paella se secase con el fuego al máximo, con lo que el arroz se pasaría (esto pasa si el recipiente es demasiado pequeño para las raciones cocinadas y el arroz tiene mucha altura). Se podría calcular matemáticamente en función de la potencia del fuego y el diámetro de la paella, aunque también se podría averiguar haciendo una prueba sólo con agua con los tiempos y nivel de fuego que luego se usarán (a esto habría que añadir el agua que absorbe el arroz, pasando los gramos a mililitros, que viene a ser poco más que el volumen del arroz, razón por la cual la regla que se usa en Valencia de llenar de agua hasta las tachuelas no es mala, ya que la mayor parte del agua se evapora, por lo que la cantidad de agua necesaria no varía demasiado con las raciones cocinadas).

En cuanto al tipo de agua, En la Denominación de Origen Arroz de Valencia han hecho catas y pruebas de labolatorio según las cuales el tipo de agua es irrelevante (aunque el agua dura de Valencia elevaría algo el punto de ebullición respecto de un agua blanda, la cantidad de sales es tan pequeña como para hacer irrelevantes las diferencias por la dureza del agua, y más cuando hablamos de un caldo salado).

Me gustaría también enlazar a la aplicación (app) Paella Infalible para hacer paella valenciana que incorpora una corrección de altitud para el tiempo de cocción del arroz, así como un cálculo del agua necesaria en función del diámetro del recipiente. Es gratuita y no tiene publicidad.

iOS: https://apps.apple.com/es/app/paella-infalible/id1024252574
Android: https://play.google.com/store/apps/details?id=com.PaellaInfalible


Graffitti de Paella en el Carrer de Baix, Valencia
Graffitti de Paella en el Carrer de Baix, Valencia (RIP)

miércoles, mayo 08, 2013

Auriculares seguros para niños con limitador de sonido

Hay dos consideraciones a tener en cuenta al comprar auriculares (cascos) para niños.
  • La primera de ellas y la más importante es impedir que no puedan estar expuestos a niveles excesivos de presión sonora que puedan dañar sus oídos de por vida. Podríamos elegir unos de alta impedancia y/o baja sensibilidad, pero es posible con en el coche o el avión con cierto ruido, o con canciones más antiguas que suelen tener un volumen medio de grabación más bajo, el niño no oiga. Para ello los auriculares o cascos tienen que contar con un control automático de nivel de sonido (limitador) y que el nivel máximo sea suficiente (los hay que limitan a 75 dB SPL que es muy poco si hay ruido externo). Los que envuelven el oído aíslan en cierta medida del ruido exterior, lo que permite que no sea necesario un nivel tan alto pata oír por encima del ruido ambiente.
  • Después hay que mirar las cuestiones prácticas. Hay auriculares que son muy incómodos o bien que no se adaptan bien a cabezas de tamaño pequeño, y que tengan cierta robustez.

 Algunos ejemplos que se pueden comprar en Amazon de UK:
 

 http://www.amazon.co.uk/Aerial7-Arcade-Headphone-Kids%C2%A1%C2%AE-Pakman/dp/B007KIEGD2/ref=sr_1_1