YACO – Yet Another [Clock] Overlay
When I watch streams or use any other fullscreen app, I miss the clock and – as the tablet is a few years old now – also the battery state. So I searched for an app which “overlays” the screen with a transparent window and a small area with the information I wanted.
There are some overlay apps around, of course. But too complicated (for my purpose), some randomly crash or disappear, or use more CPU load than I would like to give them. So it was: DO IT YOURSELF. Trivial, minimal invasive. Only a few options. (Well that was the original intention, until someone suggested to include network info, which opened the app to a flood of information)
Basically, it’s simple.
It should be.
But as soon as you think something like this, you notice it’s non-trivial. Good intentions (of Google’s Android developers) are the stumbling stones in the way (*). The (transparent) overlay was no problem, but as soon as YACO ran under Android 5 (Marshmallow) and higher, and an app asked for important permissions, there was a window “screen overlay detected” or such, without mentioning which app caused the overlay. Numerous Web pages are written around this subject, having no solution.
Duh. A good idea, but it should tell the user WHICH APP is causing this. Otherwise, when he finds out (by uninstalling/disabling the app or searching the web), he’ll be angry at the developer, who is perfectly innocent. The first time it appeared it took me some time that it was my own app (though I did not scorn at myself…).
My solution: YACO has a notification tray entry with which you can disable the screen overlay for 5 minutes. So once you see that “Screen overlay detected” message, just open the navigation drawer, disable YACO and continue. YACO will re-appear after a few minutes.
Version 1.1 has included a new feature: you can enable the app as ‘accessibility’ app, which means it can monitor the activities and switch off the overlay so that it does not block the permission confirmations. The downside is that you need to trust me not to use the data I could collect (monitor active package), but I promise I do not use it except to disable or enable the overlay window, and that information is neither stored nor sent anywhere (except in the log file for program processing information that you can send me in case of a program malfunction).
(*) I have my share with my Kitty Timer app and Personal Sunrise Alarm Clock. Both apps did or do suffer due to limitations the Android developers add to fight system (ab)usage with timers in order to reduce battery usage.
The App´s Evolution
Currently, the app has much more optional items.
a) when I flew back from this year’s vacation, I missed permanent GPS info (number of satellites for fix, height, speed, climb-/sink-rate) in Maps. So I added this… Once GPS is available (and the GPS data to be displayed), a new line appears with that data (all items separately selectable)
b) newest items are connection info of WiFi and mobile connection:
- WiFi: Up-/download Activity arrows, VPN Icon, SSID, frequency, connection speed (not internet speed!), signal strength, Up-/download Activity arrows
- Mobile: Up-/download Activity arrows, VPN Icon, Tethering Icon, carrier name, ROAMing hint (***), connection type (available formats: explicitly like ‘HSPAP’, shortened ‘H+’, generation ‘G3’) signal strength (dBm or 2 iconic ways)
- both: up/download rates (per second, minute, hour)
And, in addition, on DualSIM devices (>= Android 5.1), also
- Voice: Carrier name, signal strength, roaming warning (***).
c) and Bluetooth info: connected items with their type.
(***) optionally blinking for a few seconds if it changes
Some experiences to share:
- Why oh why are the most interesting functions hidden in Android? Every (correct and thorough) StackOverflow comment on “how to get the signal strength” is about 10 Java lines minimum (“if isGSM() bla else blubb”). And just working around the fact that Google does exactly that in the Android sources, just not accessible without reflection! Sigh. Could save a lot of people a lot of time experimenting.
- DualSIM support in Android 5.1? Only using Java reflection, and a lot of studying of the Android source code. Cross your fingers…
- The Android signal icon is hopefully optimistic (tweaked a bit to make even weak signals shine bright): every signal above a signal level of 12 of 31 has full bar count! Is that realistic? Never. So YACO has a “realistic” signal level icon indicator to offer.
- And today I got an (automatic) mail from Google telling me that apps that declare usage of the ACCESSIBILITY SERVICE that I use for the auto-hide feature is reserved for use only to support disabled people. Well let’s see if YACO is thrown out of the Play Store for mis-use of the Accessibility service.
Used OpenSource or other licenses:
- Click Sounds by Mike Koenig (from http://soundbible.com)
- href=”http://zavoloklom.github.io/material-design-iconic-font/index.html”>Material Design Iconic Font (Open Font License) by Sergey Kupletsky
- … a lot of ideas and help found on the invaluable stackoverflow.com pages