mirror of https://github.com/espruino/BangleApps
inspire: Disable autolock when breathing
parent
becba294dd
commit
999f4abdb8
|
@ -1 +1,2 @@
|
||||||
0.01: First public version
|
0.01: First public version
|
||||||
|
0.02: Disable screen lock when breathing
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Reference in New Issue