lunes, 19 de diciembre de 2011

Mi Vino


Mi Vino es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:Mi Vino en Google Market
Administra tus vinos favoritos con Mi Vino.
Graba toda la información sobre el vino, cosecha, uvas, tipo de vino, bodega, denominación de origen, etc.
Además, puedes hacer una foto de la botella del vino y grabarla asociándola a la ficha.
¿Qué estás probando un vino que te gusta mucho y luego lo quieres comprar en el supermercado?
¿Qúe estás en casa de unos amigos y te sacan esa botella maravillosa que tenían guardada para una ocasión especial?
¿Qué estás de visita en una bodega y te dan a catar la estrella de sus vinos?
¿Qué estás en un restaurante y pruebas un vino sensacional?
¿Qué siempre que hablas de un vino muy rico que probaste una vez no te acuerdas ni de como era la botella?

Para estas situaciones y muchas más quedátelo en Mi Vino.

Y si quieres tener más funcionalidad y ordenar y filtrar los vinos por diferentes criterios y además colaborar con el desarrollo gratuito de apps, descargarte la versión donación:
Mi Vino Donación en Google Market

jueves, 1 de diciembre de 2011

Fuerteventura

Fotos de Oporto


Fuerteventura como su propio nombre indica donde sopla fuerte el viento. Conocida por sus espectaculares playas, no sólo es eso lo que nos ofrece. Paisajes volcánicos, dunas interminables, atardeceres rojizos, una gran gastronomía compuesta de los más variados pescados, su queso de cabra majorero, etc. Visitar la vecina isla de Lobos perfectamente acondicionada para pasear por sus múltiples senderos nos hará sentir que aún quedan lugares prácticamente vírgenes en el planeta. Fuerteventura es un remanso de paz en mitad del oceáno donde la naturaleza nos obsequia con unas maravillosas instantáneas... Haz click en la foto para ver más.

domingo, 13 de noviembre de 2011

My Trip


My Trip es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:

Con My Trip podrás ver tus viajes con tus amigos en tiempo real. Selecciona un destino e invita a quien quieras que vaya a hacer el mismo viaje que tú y observa la posición de cada uno en el mapa. Puedes hablar con ellos y decirles todo lo que consideres importante sobre el viaje. Diles que ya has llegado o mira cuando alguno empieza el viaje, sus velocidades, si ya han salido, si han llegado, si han parado, etc.
Cuando utilizar My Trip:
- Vas a hacer un viaje con tus amigos y cada uno parte de diferentes lugares.
- Vas al trabajo y quieres saber alguien que hace una ruta parecida esta en un atasco o va bien.
- Dile a quien quieras que lo sepa que ya has llegado a tu destino.

jueves, 10 de noviembre de 2011

Servicios en Android con interfaces remotas

Aunque existen multitud de foros de programación en donde se explica de todo y este blog va en otra línea voy a intentar explicar con un ejemplo sencillo sin entrar demasiado en la explicación del código algo de lo que me ha costado encontrar información en condiciones al respecto (aunque seguro que la hay), y así de paso pongo mi granito de arena en el asunto.
Se trata del uso de servicios en Android con interfaces remotas. Muchas veces necesitamos que algún proceso se ejecute en background y procese cierta información y el servicio pida y ofrezca información a la Activity llamante. Ejecutar servicios en background no tiene ningún misterio, pero el hecho de pasar información entre la activity y el servicio para mi hasta hace bien poco si que lo tenía y ahí es donde entran en juego las interfaces remotas.
Nuestro ejemplo consistirá en una activity que ejecutará un servicio que busque en un servidor el último mensaje disponible para un usuario determinado. Para ello el servicio necesitará la información del usuario que se lo proporcionará la Activity y una vez que el servicio obtenga dicha información se la pasará a la Activity que la mostrará en pantalla.
Inicialmente debermos definir las interfaces remotas. Una interfaz remota representa un mecanismo mediante el cual dos procesos separados
pueden utilizar métodos declarados en el otro proceso. Cada uno de los extremos
desconoce la implementación del otro, simplemente conoce a través de una interfaz qué
métodos se ofrecen, pudiendo utilizarlos como si de cualquier otra clase local se tratase.
Utilizaremos el lenguaje AIDL (Android Interface Definition Language). Eclipse se encargará de generar las clases automáticamente aunque deberemos lógicamente implementar los métodos definidos en las interfaces. Este código deberá ser guardado en ficheros .aidl

Este sería el código de la interfaz que llamaremos IRemoteCallback:


package com.mdps;

interface IRemoteCallback {

String getUsuario();
void postMensaje(String data);

}



Nuestro servicio también ha de ofrecer otros métodos remotos que
permitan a nuestra Activity pasarle un instancia de su interfaz remota con la que pueda
invocar a sus métodos, es decir, hacer lo que se denomina callback. El servicio deberá
implementar, pues, los siguientes métodos remotos:

register(): guarda un objeto de la interfaz remota.
unRegister(): elimina un objeto de la interfaz remota.


package com.mdps;
import com.mdps.IRemoteCallback;
interface IRemoteRegister {

void register(IRemoteCallback regService);
void unRegister(IRemoteCallback regService);
}


Una vez definidas las interfaces procedemos a su implementación. En nuestra Activity MostrarMensaje implementaremos:

private RemoteServiceConnectionActualizarMensajes mConnectionActualizarMensajes;
private IRemoteRegister mServiceActualizarMensajes = null;
private IRemoteCallback.Stub mCallbackActualizarMensajes = new IRemoteCallback.Stub() {
public String getUsuario() {
return usuario;
}

public void postMensaje(String data) {
mensaje = data;
}

};

class RemoteServiceConnection implements
ServiceConnection {
public void onServiceConnected(ComponentName className, IBinder service) {
// Obtener instacia gracias al stub
mServiceActualizarMensajes = IRemoteRegister.Stub
.asInterface(service);

// Hacer llamada remota: registrar instancia de IRemoteCallback
try {
mServiceActualizarMensajes
.register(mCallbackActualizarMensajes);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void onServiceDisconnected(ComponentName className) {
mServiceActualizarMensajes = null;
}
};


En el onCreate de nuestra Activity invocaremos el servicio en el momento que nos interese:

// Vincular el Service y la Activity actual
if (mConnectionActualizarMensajes == null) {
mConnectionActualizarMensajes = new RemoteServiceConnection();

Intent i = new Intent();
i.setClassName("com.mdps", "com.mdps.ServicioObtenerMensajes");
bindService(i, mConnectionActualizarMensajes,
Context.BIND_AUTO_CREATE);
Log.d(getClass().getSimpleName(), "bindService()");
// Lanzar Service
this.startService(i);
}

Ya tenemos definidos en nuestra activity los métodos necesarios y hemos realizado la invocación del servicio. Ahora toca el turno del código que deberemos implementar en el servicio. En el servicio deberemos implementar los metodos register y unregister
definidos en la interfaz IRemoteRegister. Este servicio será un Thread que en el caso del ejemplo se estará ejecutando continuamente cada minuto.

public class ServicioObtenerMensajes extends Service
{
public static Activity ACTIVIDAD;
// temporizador de conexión
private int mTime = 60000;

Runnable mTask = new Runnable() {
public void run()
{
Context contexto = getApplicationContext();

// Mientras dure el Service
while (true){
// Activar mCallbacks
mCallbacks.beginBroadcast();

try{
String usuario = mCallbacks.getBroadcastItem(0).getUsuario();

// A continuación se implementaría la llamada al servidor para
// obtener la información del ultimo mensaje asociado al usuario // obtenido

String ultimoMensaje = llamadaServidor();

mCallbacks.getBroadcastItem(0).postMensaje(ultimoMensaje);

} catch (Exception e) {
e.printStackTrace();
}
// Desactivar mCallbacks
mCallbacks.finishBroadcast();
// Dormir el hilo
try {
Thread.sleep(mTime);


} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};


public Thread mThread = new Thread(mTask);

@Override
public void onCreate() {
super.onCreate();
mThread.start();
}




private RemoteCallbackList<IRemoteCallback> mCallbacks =
new RemoteCallbackList<IRemoteCallback>();
private IRemoteRegister.Stub mRegister = new IRemoteRegister.Stub(){
public void register(IRemoteCallback interfac) {
// Guardar interfaz remota
if (interfac!= null) mCallbacks.register(interfac);
}


public void unRegister(IRemoteCallback interfac) {
// Eliminar interfaz remota
if (interfac!= null) mCallbacks.unregister(interfac);
}
};




@Override
public IBinder onBind(Intent intent) {
return mRegister;
}


}



Resumiendo el funcionamiento en conjunto sería.
Nuestra activity en un momento dado lanza el servicio ServicioObtenerMensaje que será un Thread que se ejecutará indefinidamente.
Al comenzar solicita a la activity mediante el método getUsuario el usuario para el que quiere obtener el mensaje.
Realizará la llamada al servidor donde se procesará la información.
Mientras tanto la activity ha continuado con su ejecución y en el momento en que el servicio disponga del mensaje se lo notificará a mediante el método postMensaje implementado en la Activity. Una vez esta información esté disponible se mostrará por pantalla (este código no aparece).









martes, 25 de octubre de 2011

Libros bilingües

Dualbooks

Buceando por la red hemos encontrado una manera muy interesante y amena de aprender inglés y leer literatura al mismo tiempo. Se trata de libros que tienen una pagina escrita en inglés y la de al lado su traducción al castellano párrafo a párrafo. Son grandes clásicos de la literatura, títulos muy conocidos como Alicia en el país de las Maravillas, el retrato de Dorian Gray, la isla del Tesoro, etc.

Se llaman Dualbooks y tienen una tienda virtual en la que podrás encontrar toda la información que necesites.

jueves, 13 de octubre de 2011

Buscador Ticket Restaurant







Busca Ticket Restaurant es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:
Buscador Ticket Restaurant en Google Market

Existe una versíón donación que puedes descargar desde el siguiente enlace:
Buscador Ticket Restaurant Donación en Google Market

Ya sois muchos los que tenéis un móvil con Android (o conocéis a gente que lo tenga), por lo que os presento una nueva aplicación llamada Busca Ticket Restaurant. Con esta aplicación podréis buscar los restaurantes que acepten tickets restaurant más próximos a donde estéis, a un lugar determinado, o buscar un restaurante concreto. Pero no os preocupéis los que no tengais tickets, puesto que para vosotros también es muy útil. Son muchas las cadenas de restaurantes que aceptan tickets como Vips, Ginos, Burger King, Mc Donalds, etc, así que si algún día quieres saber cuales son los Telepizzas más cercanos a donde estés y quieres llamar para pedir una pizza, lo puedes hacer desde la aplicación o si por ejemplo te apetece un Doner Kebab y no sabes donde encontrar uno pues más de lo mismo. Otra situación interesante es que quieras ir a comer por ejemplo a un egipcio en Madrid y quieras encontrar alguno para reservar, o que tengas una reunión en algún sitio y quieras encontrar los restaurantes de la zona que admiten los tickets...en fin cualquier situación de este tipo.

Aquí tenéis una descripción mas exhaustiva de la aplicación:
Disponemos de 4 botones sobre el mapa en la aplicación.
·El botón de configuración que permitirá configurar los siguientes parámetros:
-El número de resultados a mostrar. En la versión gratuita este parámetro no será modificable y tendrá el valor de 3.
-El radio de acción de la búsqueda. En la versión gratuita este parámetro no será modificable y buscará en 2 kms a la redonda.
-El tipo de comida ofrecida por el restaurante.
-Si el restaurante acepta tickets o tarjeta restaurant. En la versión gratuita este parámetro no será modificable y tendrá el valor de papel.
·El botón de búsqueda que tendrá formas de buscar establecimientos pulsando sobre el icono de la lupa:
- Mi ubicación. Seleccionándolo obtendremos los establecimientos más cercanos a nuestra ubicación.
Ej: Estoy en el trabajo y quiero saber cuales son los restaurantes que admiten cheques más próximos.

- Dirección. Especificando una dirección obtendremos los establecimientos más próximos a dicha dirección. Si se especifica un nombre de ciudad únicamente, se obtendrán los establecimientos del centro de dicha localidad en caso de haberlos.
Ej: Voy a ir a la Gran Via en Madrid y quiero saber los restaurantes que admiten cheques más próximos. Selecciono Dirección y escribo en el texto búsqueda Gran Via, Madrid.

- Palabras clave. Utilizaremos está búsqueda por ejemplo para obtener los establecimientos cuyo nombre contenga la/s palabra/s especificadas.
Ej: Quiero ir a un Vips, selecciono palabras clave y escribo en el texto búsqueda Vips.

NOTA, en todos los casos la versión gratuita sólo aparecerán como máximo 3 establecimientos y que estén en un radio de 2 kms.

·El botón de modo texto que servirá para obtener un listado con los restaurantes encontrados.
Una vez obtenido el listado si pulsamos sobre uno de ellos aparecerá la opción o bien de mostrarlo en el mapa o bien de llamar al establecimiento por ejemplo para realizar una reserva.

·El botón de vista satélite que permitirá alternar entre modo mapa y modo satélite.

jueves, 16 de junio de 2011

Eclipse total de luna 15 de Junio 2011

¡Qué mejor manera de celebrar la entrada número 50 de este blog que comentando el espectacular eclipse total de luna vivido anoche! A pesar de observarlo en un lugar con cierta oscuridad, costó que nos diéramos cuenta de la presencia tenue de la luna en el cielo, ya que cuando la luna salió la tierra ya se había interpuesto completamente entre ella y el sol. Esas tonalidades rojizas en la penumbra quedarán grabadas en nuestras retinas por mucho tiempo. Contemplar un suceso de este tipo bien merece la pena la parafernalia que hay que montar de trípodes, telescopio, prismáticos y cámara de fotos para observarlo desde todas las perspectivas.
Y cuando el sol empezó a iluminar poco a poco la luna, las diferentes tonalidades de colores y sombras dejaban embelesados a todos los que observaban el espectáculo. Así pasaban los minutos hasta que la luna quedó nuevamente iluminada por completo, tan iluminada que deslumbraba. Habrá que esperar hasta 2018 para vivir algo semejante, ¡ayer pudimos disfrutarlo!

eclipse luna 15 junio
eclipse luna 15 junio
eclipse luna 15 junio
eclipse luna 15 junio
eclipse luna 15 junio

viernes, 20 de mayo de 2011

Infopolenes

info polen


Infopolenes es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:
Infopolenes en Google Market

Infopolenes ayuda a la gente con problemas alérgicos a conocer los valores publicados de gramíneas, arizonicas, platanus y olivo de estaciones de medición de diferentes localidades. Además se pueden consultar los valores de las 2 últimas semanas para cada uno de ellos en forma de gráfica para observar su evolución.

Con Infopolenes obtendrás los últimos datos on-line, para ello se requiere conexión a Internet.
Esta versión tiene funcionalidad completa. Si te parece útil colabora con un simple click en la publicidad para el mantenimiento y desarrollo de nuevas aplicaciones.

miércoles, 11 de mayo de 2011

Infolluvia

Info lluvia

Infolluvia es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:
Infolluvia en Google Market

¿Qúé te vas de viaje y quieres saber si está lloviendo por donde vas a ir?
¿Qué estás en la playa y no sabes si se acerca tormenta?
¿Qué simplemente quieres saber si está lloviendo, si parará en breve o si la cosa tiene mala pinta?

Con Infolluvia obtendrás los últimos datos procedentes de Aemet on-line, así como una animación de la evolución y desplazamiento de las lluvias en las últimas 12 horas, para todo ello se requiere conexión a Internet.

viernes, 29 de abril de 2011

Infovalores

info valores

Infovalores es una aplicación para tu móvil Android que la puedes obtener gratuitamente desde el siguiente enlace:
Infovalores en Google Market

¿Qúé te vas de viaje al extranjero y quieres ver como evoluciona la cotización del dolar con respecto al euro?
¿Qué tienes que revisar la hipoteca en breve y quieres ver como está el euribor?
¿Qué tienes alguna inversión y quieres ver como va el ibex35?
¿Qué te preocupa el precio de la gasolina y quieres ver como se cotiza el barril de Brent?

Con Infovalores obtendrás los últimos datos on-line, para ello se requiere conexión a Internet. Además incluye un widget que se actualiza cada 24 horas.

Esta versión incluye funcionalidad completa para los datos de la cotización euro-dólar, últimos datos y gráfica animada de la evolución.

martes, 29 de marzo de 2011

Sueldómetro

sueldometro
Sueldómetro es una aplicación para tu móvil Android que la puedes obtener por tan sólo 79 céntimos desde el siguiente enlace:
Sueldometro en Google Market

Se trata de una aplicación con diferentes funcionalidades:
Saber lo que se está ganando en cada instante de trabajo como si de un taxímetro se tratara.
Para ello habrá que seleccionar la opción Configuracion que nos llevará a una pantalla en la que se podrá configurar los siguientes parámetros:
1. El nombre del usuario.
2. Elección de si la cantidad a introducir se trata de un sueldo neto o bruto.
3. El número de pagas anuales.
4. El sueldo de acuerdo a los parámetros anteriores.
5. El horario laboral.
6. Los días laborables.
7. Activar y desactivar sonido.
8. Activar y desactivar alarma al finalizar la jornada laboral.
9. Indicar cada cuantos euros acumulados se quiere escuchar el sonido de caja registradora.
Una vez se pulsa el botón Guardar Configuracion la información quedará grabada y ya no es necesario
volverlo a cambiar cuando se reinicie el programa en sucesivas ocasiones salvo que se quiera modificar.
Para ejecutar el sueldómetro hay que pulsar la opción de Ejecutar y mostrará el sueldo que se va acumulando a lo largo
del día, el mes y el año. Así mismo se muestra un cuadro comparativo con otros sueldos.
Todas las cantidades que se muestran en el programa son orientativos y en ningún caso deben considerarse extrictos. Los cálculos se han realizado teniendo en cuenta las retenciones de una nómina para el caso general sin tener en cuenta particularidades.
En la opción Tramos IRPF la aplicación calculará si el sueldo introducido se encuentra en un inicio de tramo IRPF o no.
En el caso de que así sea, el programa informa de los rangos en que el sueldo neto que se percibe resulta perjudicado.
Como última opción pulsando la opción Conversor tiene un conversor de sueldo bruto en sueldo neto y viceversa.
Por último al ejecutar la aplicación se creará un widget que se podrá ejecutar desde el menú Widgets del dispositivo que ejecutará en modo reducido la aplicación.
Mostrará el total acumulado para el mes en curso y si se encuentra con una luz verde indicará que se está trabajando en ese momento por lo que se irá actulizando la cifra una vez por minuto.
En caso de aparecer una luz roja indicará que en ese momento no se está trabajando por lo que no variará la cantidad acumulada.
Creative Commons License
LoloSil-La Rosa de los Vientos es una idea original de MDPS - This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License