Vamos criar um alarme simples, que deve servir como base para o projeto de App de Hidratação. Este exemplo compara a hora corrente com outra previamente armazenada. Por se tratar de um exemplo, não irei usar locastorage para armazenar a hora do alarme, irei programar diretamente no código.
Preparando o projeto.
Certifique-se que esteja utilizando a versão mais recente do IntelXDK.
Inicie um novo projeto no Intel XDK, HTML 5 + Cordova e não habilite o App Designer.
Nas propriedades do projeto, vá em Plugin Manager.
Para trabalhar com horas e datas você deve instanciar um objeto Date() no JavaScript.
hora=new Date();
var horaAtual = hora.getHours() + ":" + hora.getMinutes();
document.write("A hora atual é " + horaAtual);
Para aplicações que necessitem de cálculos, você precisa ler este artigo.
Exemplo de Aplicação.
O código a seguir não pode ser testado no simulador do Intel XDK ou no App Preview. Gere o APK e instale em seu dispositivo, ou use uma instalação do BlueStacks.
<!DOCTYPE html>
<html>
<head>
<title>Alarme</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<style>
@-ms-viewport { width: 100vw ; zoom: 100% ; } @viewport { width: 100vw ; zoom: 100% ; }
@-ms-viewport { user-zoom: fixed ; } @viewport { user-zoom: fixed ; }
</style>
<script src="cordova.js"></script>
<script src="js/app.js"></script>
<script src="xdk/init-dev.js"></script>
<script>
document.addEventListener('deviceready', function ()
{
cordova.plugins.backgroundMode.enable();
setInterval(function()
{
//captura a hora atual
hora=new Date();
var horaAtual = hora.getHours() + ":" + hora.getMinutes();
//captura a hora agendada
var horaAgenda = document.getElementById('Agendamento').value;
//compara a hora atual com a hora agendada
if (horaAtual == horaAgenda)
{
var notificacao = 'Chegou o momento tão esperado!!!'; //mensagem da notificação.
alert(notificacao);
document.write(notificacao);
// Envia a notificação se as horas foram iguais.
var sound = device.platform == 'Android' ? 'file://alarme.mp3' : 'file://alarme.caf';
var dataAtual = new Date();
cordova.plugins.notificacao.local.schedule({
id: 1,
title: "Notificação de Alarme",
message: notificacao,
at: dataAtual,
sound: sound,
icon: "http://etecarmine.com.br/wp/wp-content/uploads/2015/11/cropped-logo-azul.jpg"
});
}
}, 60000); //60 segundos
}, false);
</script>
</head>
<body>
<h1>alarme</h1>
<p>Agende o alarme:</p>
<input type="time" id="Agendamento" required>
<button onclick="alert('Agendado para ' + document.getElementById('Agendamento').value)">Checar</button>
<!-- Não precisa criar nenhuma função aqui, o background-mode já está lendo estes valores -->
<script>
// plugin para inicializar o app automaticamente, junto com o Android / iOS
cordova.plugins.autoStart.enable();
</script>
</body>
</html>
Anderson Oliveira é desenvolvedor, escritor e docente no CEETPS - Centro Estadual de Educação Tecnologia de São Paulo. Atualmente trabalha na Administração Central do CPS e leciona aulas de programação na Etec Prof. Carmine Biagio Tundisi de Atibaia.