Contenido

on{X} , extiende las capacidades de tu Android con Javascript

7 jun

+ 3

Microsoft, si Microsoft, ha desarrollado una interesante idea con la que nos permite extender las capacidades de nuestro Android mediante una API Javascript.

Como se de una gestión de eventos básica se tratara on{X} nos permite definir funcionalidades interesante cuando estos eventos se cumplan.

Hola Mundo

// Cuando desbloquee el móvil 
device. screen.on("unlock", function(){
     // Muestra el mensaje "Hello world!"
     var notification = device.notifications.createNotification('Hello world!');
     notification.show();
     console.log('Hello World notification was sent to the phone');
 });

On{X} está compuesto de una aplicación para Android que debes instalar en tu dispositivo móvil y una aplicación web en la que al entrar con login de Facebook podrás ver un listado de recipientes con tus controles definidos, estos controles están continuamente sincronizados entre el móvil y la aplicación así que es posible realizar cambios y verlos en vivo directamente en tu móvil.

Para desarrollar tus propios recipientes dispones de un editor online que automáticamente almacenará el código y lo compartirá con tu dispositivo móvil.

De esta forma, planificarte tareas como “Enviar un mail a tu mujer diciéndole que estás en el supermecado y si tienes que comprar algo concreto es el momento, automáticamente cuando entras al supermercado” es posible, sencillo y lo que a mi me gusta más, te lo puedes programar tu mismo!

Ejemplos

Avisame si he de coger un paraguas en el primer desbloqueo del móvil de cada mañana si el tiempo dice que va a llover.


// Inicializamos variables

var reminder = "take an umbrella";
var weatherCondition = "rainy";

console.log('Started script: Remind me to ' + reminder + ' every day the first time I unlock my phone, if it is going to be ' + weatherCondition);

device.screen.on('unlock', function () {
	console.info('device unlocked');
	var lastDateScreenUnlocked = device.localStorage.getItem('lastDateScreenUnlocked');
	var today = new Date().toLocaleDateString();

	// Si es el primer desbloqueo
	if (!lastDateScreenUnlocked || lastDateScreenUnlocked !== today) {
		// Coger posición actual
		var locationListener = device.location.createListener('CELL', 2);
		locationListener.on('changed', function(locSignal) {
			locationListener.stop();

			// Carga el tiempo en función de la posición
			feeds.weather.get(
				{
					location: locSignal.location.latitude + ',' + locSignal.location.longitude,
					time: 0     
				},
				function onSuccess(weather, textStatus, response) {
					console.info('Got the weather forecast for today:', JSON.stringify(weather.forecasts[0]));

					// Compruemas las condiciones atmosféricas
					var forecast = weather.forecasts[0];

					if ((weatherCondition === 'rainy' && (forecast.rain > 50 || forecast.sky.toLowerCase() === 'rain')) ||      // Llueve
						(weatherCondition === 'sunny' && forecast.sky.toLowerCase() === 'clear') ||                                               // Soleada
						(weatherCondition === 'windy' && forecast.wind.speed  >= 20 && forecast.wind.speed < = 30)) {  // Viento
						// Creamos la notificación
						 var notification = device.notifications.createNotification(reminder);
						notification.on('click', function () {
							device.browser.launch(weather.forecastUrl);
						});
						// Mostramos el mensaje
						notification.show();
					} else {
						console.info('weather is not ' + weatherCondition );
					}
				},
				function onError(response, textStatus) {
					console.error('Failed to get weather: ', textStatus);
				});
		});

		locationListener.start();

		// Actualizamos el tiempo desde la última notificación
		device.localStorage.setItem('lastDateScreenUnlocked', today);
		console.info('Stored the last time the screen was unlocked: ', today);
	}
});
console.log('Completed script: Remind me to ' + reminder + ' every day the first time I unlock my phone, if it is going to be ' + weatherCondition);

Más ejemplos

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.