forked from FOSS/BangleApps
low-power-mode: initial app
parent
a33a6df463
commit
4bb96f314c
|
@ -0,0 +1 @@
|
||||||
|
0.01: New app!
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Low Power Mode
|
||||||
|
|
||||||
|
With this app installed, your Bangle will automatically switch into low power mode when the battery reaches a specified threshold, displaying a simple clock.
|
||||||
|
|
||||||
|
# Features
|
||||||
|
|
||||||
|
## Time
|
||||||
|
[x] Show simple date/time
|
||||||
|
[ ] Disable alarms - with a setting?
|
||||||
|
|
||||||
|
## No backlight (#2502)
|
||||||
|
[x] LCD brightness
|
||||||
|
[ ] LCD timeout
|
||||||
|
|
||||||
|
## Peripherals
|
||||||
|
[x] Disable auto heart rate measurement in health app (#2502)
|
||||||
|
[x] Overwrite setGPSPower() function (#2502)
|
||||||
|
[ ] Turn off already-running GPS / HRM
|
||||||
|
|
||||||
|
## Features
|
||||||
|
[ ] Wake on twist -> off (#2502)
|
||||||
|
|
||||||
|
# Creator
|
||||||
|
|
||||||
|
[bobrippling](https://github.com/bobrippling/)
|
|
@ -0,0 +1,40 @@
|
||||||
|
"use strict";
|
||||||
|
if (typeof lowpowerInterval !== "undefined")
|
||||||
|
lowpowerInterval = clearInterval(lowpowerInterval);
|
||||||
|
Bangle.setLCDBrightness(0);
|
||||||
|
Bangle.setGPSPower = Bangle.setHRMPower = function (_val, _name) { return false; };
|
||||||
|
Bangle.removeAllListeners();
|
||||||
|
var nextDraw;
|
||||||
|
var draw = function () {
|
||||||
|
var x = g.getWidth() / 2;
|
||||||
|
var y = g.getHeight() / 2 - 48;
|
||||||
|
var date = new Date();
|
||||||
|
var timeStr = require("locale").time(date, 1);
|
||||||
|
var dateStr = require("locale").date(date, 0).toUpperCase() +
|
||||||
|
"\n" +
|
||||||
|
require("locale").dow(date, 0).toUpperCase();
|
||||||
|
g.reset()
|
||||||
|
.clearRect(Bangle.appRect)
|
||||||
|
.setFont("Vector", 32)
|
||||||
|
.setFontAlign(0, 0)
|
||||||
|
.drawString(timeStr, x, y)
|
||||||
|
.setFont("Vector", 24)
|
||||||
|
.drawString(dateStr, x, y + 56)
|
||||||
|
.drawString("".concat(E.getBattery(), "%"), x, y + 104);
|
||||||
|
if (nextDraw)
|
||||||
|
clearTimeout(nextDraw);
|
||||||
|
nextDraw = setTimeout(function () {
|
||||||
|
nextDraw = undefined;
|
||||||
|
draw();
|
||||||
|
}, 60000 - (date.getTime() % 60000));
|
||||||
|
};
|
||||||
|
Bangle.setUI({
|
||||||
|
mode: "clock",
|
||||||
|
remove: function () {
|
||||||
|
if (nextDraw)
|
||||||
|
clearTimeout(nextDraw);
|
||||||
|
nextDraw = undefined;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
g.clear();
|
||||||
|
draw();
|
|
@ -0,0 +1,52 @@
|
||||||
|
// from boot.js
|
||||||
|
if(typeof lowpowerInterval !== "undefined")
|
||||||
|
lowpowerInterval = clearInterval(lowpowerInterval) as undefined;
|
||||||
|
|
||||||
|
// backlight
|
||||||
|
Bangle.setLCDBrightness(0);
|
||||||
|
|
||||||
|
// peripherals
|
||||||
|
Bangle.setGPSPower = Bangle.setHRMPower = (_val: boolean, _name: string) => false;
|
||||||
|
|
||||||
|
// events
|
||||||
|
Bangle.removeAllListeners();
|
||||||
|
|
||||||
|
// clock
|
||||||
|
let nextDraw: number | undefined;
|
||||||
|
const draw = () => {
|
||||||
|
const x = g.getWidth() / 2;
|
||||||
|
const y = g.getHeight() / 2 - 48;
|
||||||
|
|
||||||
|
const date = new Date();
|
||||||
|
|
||||||
|
const timeStr = require("locale").time(date, 1);
|
||||||
|
const dateStr = require("locale").date(date, 0).toUpperCase() +
|
||||||
|
"\n" +
|
||||||
|
require("locale").dow(date, 0).toUpperCase();
|
||||||
|
|
||||||
|
g.reset()
|
||||||
|
.clearRect(Bangle.appRect)
|
||||||
|
.setFont("Vector", 32)
|
||||||
|
.setFontAlign(0, 0)
|
||||||
|
.drawString(timeStr, x, y)
|
||||||
|
.setFont("Vector", 24)
|
||||||
|
.drawString(dateStr, x, y + 56)
|
||||||
|
.drawString(`${E.getBattery()}%`, x, y + 104);
|
||||||
|
|
||||||
|
if(nextDraw) clearTimeout(nextDraw);
|
||||||
|
nextDraw = setTimeout(() => {
|
||||||
|
nextDraw = undefined;
|
||||||
|
draw();
|
||||||
|
}, 60000 - (date.getTime() % 60000));
|
||||||
|
};
|
||||||
|
|
||||||
|
Bangle.setUI({
|
||||||
|
mode: "clock",
|
||||||
|
remove: () => {
|
||||||
|
if (nextDraw) clearTimeout(nextDraw);
|
||||||
|
nextDraw = undefined;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
g.clear();
|
||||||
|
draw();
|
|
@ -0,0 +1,8 @@
|
||||||
|
"use strict";
|
||||||
|
var lowpowerInterval = setInterval(function () {
|
||||||
|
if (Bangle.isCharging())
|
||||||
|
return;
|
||||||
|
if (E.getBattery() > 5)
|
||||||
|
return;
|
||||||
|
load("lowpower.app.js");
|
||||||
|
}, 5 * 60 * 1000);
|
|
@ -0,0 +1,8 @@
|
||||||
|
let lowpowerInterval: number | undefined = setInterval(() => {
|
||||||
|
if(Bangle.isCharging())
|
||||||
|
return;
|
||||||
|
if(E.getBattery() > 5)
|
||||||
|
return;
|
||||||
|
|
||||||
|
load("lowpower.app.js");
|
||||||
|
}, 5 * 60 * 1000);
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"id": "lowpower",
|
||||||
|
"name": "Low Power Mode",
|
||||||
|
"version": "0.01",
|
||||||
|
"description": "Switches to displaying a simple clock when the battery percentage is low, nothing more",
|
||||||
|
"readme": "README.md",
|
||||||
|
"icon": "TODOOOOOOOOOOOOOOOO.png",
|
||||||
|
"type": "clock",
|
||||||
|
"tags": "clock",
|
||||||
|
"supports": ["BANGLEJS2"],
|
||||||
|
"storage": [
|
||||||
|
{"name":"lowpower.boot.js","url":"boot.js"},
|
||||||
|
{"name":"lowpower.app.js","url":"app.js"}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue