Merge branch 'master' of github.com:espruino/BangleApps
commit
34228a84d9
15
apps.json
15
apps.json
|
|
@ -3243,5 +3243,20 @@
|
|||
{"name":"doztime.app.js","url":"app.js"},
|
||||
{"name":"doztime.img","url":"app-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id":"gbtwist",
|
||||
"name":"Gadgetbridge Twist Control",
|
||||
"shortName":"Twist Control",
|
||||
"icon":"app.png",
|
||||
"version":"0.01",
|
||||
"description":"Shake your wrist to control your music app via Gadgetbridge",
|
||||
"tags":"tools,bluetooth,gadgetbridge,music",
|
||||
"type":"app",
|
||||
"allow_emulator":false,
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"gbtwist.app.js","url":"app.js"},
|
||||
{"name":"gbtwist.img","url":"app-icon.js","evaluate":true}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
0.01: Initial version
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Gadgetbridge Twist Control
|
||||
|
||||
Control your music app (e.g. MortPlayer Music [a folder based, not tag based player] ) that handles multiple play-commands (same as using a single-button-headset's button to change songs) on your Gadgetbridge-connected phone.
|
||||
- Activate counting for 4 seconds with a twist (beeps at start and end of counting)
|
||||
- twist multiple times for:
|
||||
play/pause (1),
|
||||
next song (2),
|
||||
prev. song (3),
|
||||
next folder (4),
|
||||
prev. folder (5),
|
||||
reset counter (6)
|
||||
- the command to be sent is shown in green
|
||||
- Volume up/down is controlled by BTN1/BTN3 presses
|
||||
|
||||

|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwIYVhAFEjgFEh4FEg+AAocD4AME8ADCgPAvAFCj/8nkQAoN//8enAQB///44FBgYFB8f4FoIFB+IFBh/+n/4AocH/AXBj/+gP8FIIFDFwM//0x/wFDAIIFNv4FB/4FNEaIFFj/gn5HCj+AAoUEh4FBMgUP4AFDw/gv/wAoPDPoKhBjnxAoKtBjl4TYLICninBagUPWYLJPFoIADZIYABnj6KABIA="))
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
// just a watch, to fill an empty screen
|
||||
|
||||
function drwClock() {
|
||||
var d = new Date();
|
||||
var h = d.getHours(), m = d.getMinutes();
|
||||
var time = ("0"+h).substr(-2) + ":" + ("0"+m).substr(-2);
|
||||
g.reset();
|
||||
g.setFont('6x8',7);
|
||||
g.setFontAlign(-1,-1);
|
||||
g.drawString(time,20,80);
|
||||
}
|
||||
|
||||
g.clear();
|
||||
drwClock();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// control music by twist/buttons
|
||||
|
||||
var counter = 0; //stores your counted your twists
|
||||
var tstate = false; //are you ready to count the twists?
|
||||
|
||||
function playx() {
|
||||
Bluetooth.println(JSON.stringify({t:"music", n:"play"}));
|
||||
}
|
||||
|
||||
function volup() {
|
||||
Bluetooth.println(JSON.stringify({t:"music", n:"volumeup"}));
|
||||
}
|
||||
|
||||
function voldn() {
|
||||
Bluetooth.println(JSON.stringify({t:"music", n:"volumedown"}));
|
||||
}
|
||||
|
||||
function sendCmd() {
|
||||
print (counter);
|
||||
Bangle.beep(200,3000);
|
||||
if (tstate==false && counter>0){
|
||||
do {playx(); counter--;}
|
||||
while (counter >= 1);
|
||||
}
|
||||
}
|
||||
|
||||
function twistctrl() {
|
||||
if (tstate==false){
|
||||
tstate=true;
|
||||
setTimeout('tstate=false',4000);
|
||||
setTimeout(sendCmd,4100);
|
||||
Bangle.beep(200,3000);
|
||||
}
|
||||
else{
|
||||
g.clearRect(10,140,230,200);
|
||||
if (tstate==true){
|
||||
if (counter < 5){
|
||||
counter++;
|
||||
drwCmd();
|
||||
Bangle.buzz(100,2);
|
||||
}
|
||||
else {
|
||||
counter = 0;
|
||||
Bangle.buzz(400);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function drwCmd() {
|
||||
g.setFont('6x8',6);
|
||||
g.setColor(0.3,1,0.3);
|
||||
g.clearRect(10,140,230,200);
|
||||
switch (counter){
|
||||
case 1:
|
||||
g.drawString('play',50,150);
|
||||
break;
|
||||
case 2:
|
||||
g.drawString('next',50,150);
|
||||
break;
|
||||
case 3:
|
||||
g.drawString('prev',50,150);
|
||||
break;
|
||||
case 4:
|
||||
g.drawString('nx f',50,150);
|
||||
break;
|
||||
case 5:
|
||||
g.drawString('pr f',50,150);
|
||||
break;
|
||||
case 0:
|
||||
g.clearRect(10,140,230,200);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setWatch(volup,BTN1,{repeat:true});
|
||||
setWatch(voldn,BTN3,{repeat:true});
|
||||
Bangle.on('twist',twistctrl);
|
||||
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 906 B |
Loading…
Reference in New Issue