inspire: Disable autolock when breathing

pull/2551/head
pancake 2023-02-01 15:38:46 +01:00
parent becba294dd
commit 999f4abdb8
4 changed files with 50 additions and 44 deletions

View File

@ -1 +1,2 @@
0.01: First public version 0.01: First public version
0.02: Disable screen lock when breathing

View File

@ -2,7 +2,7 @@
A minimalistic app that will help you practive breathing. A minimalistic app that will help you practive breathing.
Author: Written by pancake in 2022, powered by insomnia Author: Written by pancake in 2022, updated in 2023, powered by insomnia
## Features ## Features
@ -10,6 +10,7 @@ Author: Written by pancake in 2022, powered by insomnia
* [x] Tap to start * [x] Tap to start
* [x] Subtle vibrations * [x] Subtle vibrations
* [x] Drag to pause breathing * [x] Drag to pause breathing
* [x] Dont lock screen while breathing
* [ ] Automatic buzz every hour during day * [ ] Automatic buzz every hour during day
## Screenshots ## Screenshots

View File

@ -14,6 +14,7 @@ var mode = 0;
var sin = 0; var sin = 0;
var dragged = 0; var dragged = 0;
var lastTime = Date.now(); var lastTime = Date.now();
function breath(t) { function breath(t) {
var r = Math.abs(Math.sin(t / 100)) * w2; var r = Math.abs(Math.sin(t / 100)) * w2;
g.fillCircle(w/2,h/2, r); g.fillCircle(w/2,h/2, r);
@ -26,7 +27,7 @@ setTimeout(()=>{Bangle.buzz(60);}, 500);
function showTouchScreen() { function showTouchScreen() {
g.setColor(1,1,1); g.setColor(1,1,1);
g.fillCircle (w2, h2, h2-5); g.fillCircle(w2, h2, h2-5);
g.setColor(0,0,0); g.setColor(0,0,0);
g.setFont("Vector", 32); g.setFont("Vector", 32);
g.drawString("Tap to", w/6, h2-fs); g.drawString("Tap to", w/6, h2-fs);
@ -40,7 +41,7 @@ g.clear();
function animateCircle() { function animateCircle() {
g.clear(); g.clear();
g.setColor(1,1,1); g.setColor(1,1,1);
g.fillCircle (w2, h2, radius); g.fillCircle(w2, h2, radius);
radius-=2; radius-=2;
if (radius < 40) { if (radius < 40) {
breathing = true; breathing = true;
@ -68,6 +69,9 @@ function main() {
return; return;
} }
started = true; started = true;
Bangle.setLCDPower(1);
Bangle.setLocked(0);
Bangle.setLCDTimeout(0);
animateCircle(); animateCircle();
Bangle.buzz(40); Bangle.buzz(40);
} }
@ -78,48 +82,48 @@ function main() {
main(); main();
function startBreathing() { function startBreathing() {
var cicles = 3; var cicles = 3;
g.setFont("Vector", fs); g.setFont("Vector", fs);
var interval = setInterval(function() { function breathTime() {
if (lastTime + 10 > Date.now()) { if (lastTime + 10 > Date.now()) {
return; return;
} }
lastTime = Date.now(); lastTime = Date.now();
g.setColor(0, 0, 0); g.setColor(0, 0, 0);
g.clear(); g.clear();
g.setColor(0, 0.5, 1); g.setColor(0, 0.5, 1);
var b = breath(count); var b = breath(count);
g.setColor(0.5, 0.5, 1); g.setColor(0.5, 0.5, 1);
var c = breath(count + 50); var c = breath(count + 50);
count++; count++;
g.setColor(1, 1, 1); g.setColor(1, 1, 1);
if (b < c) { if (b < c) {
g.drawString("inspire",8,ty); g.drawString("inspire",8,ty);
if (mode) { if (mode) {
mode = 0; mode = 0;
Bangle.buzz(20); Bangle.buzz(20);
if (!dragged ) { if (!dragged ) {
cicles--; cicles--;
}
}
} else {
g.drawString("expire",8,ty);
if (!mode) {
mode = 1;
Bangle.buzz(20);
} }
} }
} else { g.drawString(cicles, w-fs, ty);
g.drawString("expire",8,ty); if (cicles < 1) {
if (!mode) { clearInterval(interval);
mode = 1; g.clear();
Bangle.buzz(20); g.drawString("Thanks for",20,h/3);
g.drawString(" breathing!",20,(h/3) + 16);
Bangle.showClock();
} }
}
g.drawString(cicles, w-fs, ty);
if (cicles < 1) {
clearInterval(interval);
g.clear();
g.drawString("Thanks for",20,h/3);
g.drawString(" breathing!",20,(h/3) + 16);
Bangle.showClock();
}
dragged = 0; dragged = 0;
}
}, 4); var interval = setInterval(breathTime, 4);
} }

View File

@ -2,7 +2,7 @@
"id": "inspire", "id": "inspire",
"name": "Inspire Breathing", "name": "Inspire Breathing",
"shortName": "Inspire", "shortName": "Inspire",
"version": "0.01", "version": "0.02",
"description": "exercise breathing every now and then", "description": "exercise breathing every now and then",
"icon": "app-icon.png", "icon": "app-icon.png",
"tags": "tools,health", "tags": "tools,health",