-
• #2
Will the user be able to modify Bangle's settings from Banglebridge?
They'll be able to use the App Loader and the various 'customiser'/'interface' tools in there initially.
Someone asked this before, and right now anyone can write a 'Settings' tool for the App Loader that allowed you to set settings on the phone. But I think at the moment it's just going to mean a bunch more duplicate code to maintain and keep in sync, and I'm not really sure it's that useful... When the menu system gets easier to use I think less people will see the need for it.
... having said that you could theoretically replace
E.showMenu
on the watch with one that forward menu entries to the phone, and then run the original Settings app - so basically the whole set of Bangle.js options would appear on the phone screen. At least then there's not duplicate code. While PRs are always welcome, it's not high up my personal priority list I'm afraid -
• #3
I forked and downloaded your branch.
but I'm damned if I can get app_name or anything else in the main app to be overwritten by the info in strings.xml. As far as I can tell I'm doing everything that's suggested online but it's just not working for some reason.
Sorry but I don't understand your problem. If I edit some strings in
app/src/banglejs/res/values/strings.xml
and run I see the new values in the virtual device.Am I missing something?
-
• #4
They'll be able to use the App Loader and the various 'customiser'/'interface' tools in there initially.
Excellent :-)
When the menu system gets easier to use I think less people will see the need for it.
The new menu system is great but there are things I wish I could also do via app (add recurring alarms, timers, change Wake on X, etc. on the fly) but I understand it's not a priority, no problem.
having said that you could theoretically replace E.showMenu on the watch with one that forward menu entries to the phone, and then run the original Settings app - so basically the whole set of Bangle.js options would appear on the phone screen. At least then there's not duplicate code.
This is interesting. I could work on it when I get more familiar with code :-)
-
• #5
Ok, that's interesting, thanks for checking! I see
Gadgetbridge
when I run it! Must be my tools then - I'll make sure it's all up to date.In terms of alarms there is actually an alarm sync thing in Gadgetbridge already so it's a relatively easy job to implement the handling of that event on the Bangle. I believe someone is already working on it for Q Alarm, but obviously it'd be better if it was done for the default alarm app
-
• #6
Ok, that's interesting, thanks for checking! I see Gadgetbridge when I run it! Must be my tools then - I'll make sure it's all up to date.
I noticed that "Apply Changes & Restart Activity" does not reload the
strings.xml
. To see the updated strings you must rerun the app.(I'm using Android Studio 2021.1.1 Patch 1 on Windows 10.)
-
• #7
Hey Gordon,
I would definitely like changing and saving the settings on the phone. I have gone through 4 or so corruptions and it's painful to remember to change all of the settings. Having it read the settings app on the bangle and then using that to change the settings on the phone sounds like a really really awesome feature. -
• #8
In terms of alarms there is actually an alarm sync thing in Gadgetbridge already
Is this the ability to set alarms on the watch from the Android alarm app, or to set alarms for the watch from the gadgetbridge app? Because I'm seeing the ability to turn on and set alarm for bangle on the gadgetbridge app, but I would REALLY like the ability for the alarms from the Android app be synced to bangle.
As usual, easily could be user error...
-
• #9
This just went in: https://github.com/espruino/BangleApps/pull/2951
Should be available soon-ish via standard routes, or now if you build Gadgetbridge from source.
Edit: But I don't think it's integration with the standard Android Alarms, but just the ones in Gadgetbridge.
-
• #10
Not sure if this is what I'm talking about or not. Looks like it deals with gadgetbridge alarms being sent to the watch. I'm looking for android clock app alarms to be sent to the watch. I will certainly see if that update is the change I'm looking for, though!
-
• #11
Yes, sorry - I don't think it is either. It's a good improvement though!
And I've also been thinking some about the ability to integrate with standard android alarms. I'm not sure it's trivial to implement though, and whether or not Gadgetbridge does this at all today.
If you'd like to try, maybe you can come up with something using Tasker? I think it could be possible. Tasker can talk with the bangle via Gadgetbridge and Android intents. So if Tasker can detect changes to the phone's alarms, it should be able to relay that to your Bangle.
-
• #12
I'm barely scratching the surface on knowledge of this kind of stuff, but I'm thinking it'll be far more than trivial.
I'm not familiar with Tasker, but I can look into it and see if I can't figure something out.
-
• #13
This sounds promising:
https://www.reddit.com/r/tasker/comments/1068zbs/project_share_version_2_wear_os_30_alarmstimers/
If they managed to sync alarms from google clock to wear os using tasker it should be possible to tweak it to work with a bangle.
-
• #14
If they managed to sync alarms from google clock to wear os
That looks like a great starting off point! I'll look into that and see what modifications I can do.
-
• #15
Okay, so this seems like it has the basic functionality I want. Utilizing tasker and taking code from the "alarm" app, I was able to get the basics of what I want.
I wrote a task in "tasker" (which cost $3, but I was willing to make that purchase for this), which fires when the Android clock app exits. What it does is looks for the next alarm, then writes that alarm to bangle. This is sent via Android intent. Tasks are:
Test next alarm
Send intentSend intent looks like this:
Action: com.banglejs.uart.tx
Extra: line:var alarm = require("sched").newDefaultAlarm();var time = require("time_utils").decodeTime(alarm.t);var date = new Date();time.h="%na_time".substring(0,2);time.m="%na_time".substring(3);date.setDate(%na_day);date.setMonth(%na_month-1);date.setFullYear(%na_year);alarm.on=true;alarm.t = require("time_utils").encodeTime(time); alarm.last = alarm.t < require("time_utils").getCurrentTimeMillis() ? new Date().getDate() : 0; if(date) alarm.date = date.toLocalISOString().slice(0,10);var array =[]; array[0] = alarm;require("sched").setAlarms(array);The extra is a mess, so here it is more pretty:
line: var alarm = require("sched").newDefaultAlarm(); var time = require("time_utils").decodeTime(alarm.t); var date = new Date(); time.h = "%na_time".substring(0, 2); time.m = "%na_time".substring(3); date.setDate( % na_day); date.setMonth( % na_month - 1); date.setFullYear( % na_year); alarm.on = true; alarm.t = require("time_utils").encodeTime(time); alarm.last = alarm.t < require("time_utils").getCurrentTimeMillis() ? new Date().getDate() : 0; if (date) alarm.date = date.toLocalISOString().slice(0, 10); var array = []; array[0] = alarm; require("sched").setAlarms(array);
This is in no way elegant. It works, at least, but there are some issues I'll try to work on later.
- This removes literally everything set for alarms, and overwrites it with only the next set alarm from Android.
- It does not currently set alarms for repeat.
- It only sets the next alarm, ignoring any alarm after that.
1 can probably be fixed with some more effort and if/else statements to preserve current alarms, and not set if an alarm is already on at that time. I wrote all of the above code from my phone, which is a pain, so I will look into that one later. Right now, this makes setting alarms from the watch a waste of time, since they get deleted with this currently.
2 seems to be an issue with tasker/clock app interaction. I can't figure out how to get the repeat data into tasker. There are other clock apps that reportedly work better, but I wanted to see what I can do with the current app.
3 also seems to be a tasker/clock app thing. Can probably write something to scrape the clock app database and see what other alarms are there. Might also help with 2. Again, don't want to do this on my phone.I'll work on this more in the next few days, but wanted to get this written down somewhere so I can show it's possible. If you have any pointers on the code above or my thoughts on the list items, please let me know!
- This removes literally everything set for alarms, and overwrites it with only the next set alarm from Android.
-
• #16
Cool to see you got a proof of concept already!
Also,
I wrote all of the above code from my phone
😮😬😅
-
• #17
hi, anyone any idea how to control the phone from the watch?
what i think is, the phone have much more sensors, so it is the base.
it will sit in my chest's pocket, with either front or rear camera facing my front.
the mics, +/- headphones will be ON, together with wifi, bluetooth, GPS etc.Since i am an AI guy,
i would like to see the watch either- act as a small window to the android's screen, and allow you to use the watch's screen as touchpad and click (VNC?)
OR
- press a virtual button on watch and call up some apps on the android, esp press a virtual button and call up openai.app or the web version, together with voice input and speaker/headphone output. then i'll have a servant 24x7 for me.
thank you.
- act as a small window to the android's screen, and allow you to use the watch's screen as touchpad and click (VNC?)
-
• #18
ok, just found "intents"
https://www.espruino.com/Gadgetbridgewill have a look later.
-
• #19
Yes, you can either program all relevant intent info into a Bangle.js app and let Gadgetbridge handle them on the android side. Or you can do with shorter commands from the Bangle.js app and then set up e.g. Tasker to receive and interpret those commands.
I personally rather go with the first option so it's easily picked up by others that want to use it, but you can probably get away with a lower energy consumption from bluetooth transfers (don't know to what degree) thanks to shorter command strings with the second option.
-
• #20
-
• #21
No, I unfortunately haven't worked on it more. From what I can tell, it appears outside of my scope. I can't figure out where the base Android clock stores the alarms. Without that, all I can do is check the alarm within the next 24 hours, but that doesn't catch all alarms, nor does it catch repeats.
Modifying or using a different alarm app could work, but I was hoping to use the default app, as modifying or creating apps is not something I have a lot of experience with.
-
• #22
When I was using Gadget Bridge with a Bip, Gadget Bridge would buzz the watch vibrator, and show a graphic of an alarm clock on the watch. Maybe Bip had an API/call for showing an alarm graphic and buzzing.
I haven't had the Bangle long enough to know what happens with this , but is that not what you mean? Sorry for coming in cold to this.
-
• #23
You're a little bit off on my overall intended use case. I think what you're describing is vibrating the watch when the alarm goes off. Bangle can and does do this easily. This is a majority of people's use cases, and multiple tasker integration apps feature this.
What I want to do is have the alarms on my phone set on my watch. This way, my watch will have the same active alarms as my phone, so that I can see what the next upcoming alarm is without looking at my phone.
The priority on this is understandably low, as it wouldn't change my life much at all, but it would be nice.
-
• #24
Edit: Basically same as @user156125:
Right, I seem to remember that as well. It wasn't that it synced the alarm to the watch, but rather sent the alarm over when it happend on the Android device - correct? Maybe we could implement something like that, or use it as inspiration for a slightly different approach (I like the idea of storing alarms on the watch so they fire independantly of the phone).
-
• #25
Oh okay , I got it. Sorry for misunderstanding. Perhaps also if the alarms were local on the watch, you would be able to get vibration even if out of range of the phone.
Note: the original conversation started here from an off-topic question. I opened this new thread because I think this is an interesting topic :-)
@Gordon says:
This sounds great!
Will the user be able to modify Bangle's settings from Banglebridge? It would be a handy feature! Many smartwatches can be managed through their companion app, eg. the Mi Fit app. When the user want to change something it's usually easier to use the app (e.g. set a recurring alarm, configure the brightness, change a wake on... settings.) In my opinion this would be a great feature :-)
I need to install/configure the dev environment but in the next few days I'll try to take a look!