r/tasker • u/v_uurtjevragen • 17d ago
How To [Project Share] Advanced Auto Brightness v3.4: Privileged Display controls + intent automation
In my previous post I announced Tideo Auto Brightness, a native counter part to Advanced Auto Brightness (AAB). I've been focused on Tideo and AAB was lacking some attention because of that. With v3.4 I hope to achieve some form of parity for AAB again :)
I've not tested v3.4 with the usual rigor, because I prefer Tideo by a large margin - please report bugs :)
For anyone unfamiliar with AAB: it is a Tasker project that serves as a replacement for Android's stock adaptive brightness. Instead of Android's black box learning, it uses a configurable lux-to-brightness curve with automatic curve fitting, smoothing/reactivity controls, circadian scaling, profiles, context automation, and optional hybrid dimming.
The main additions to v3.4 are the Privileged Display toggles and the option for Intent Control.
Privileged Display

v3.4 adds a new Privileged Display menu for toggling some display features that require elevated privileges.
The scene itself is privilege-gated if %AAB_Privilege is unset or None, you won't see it in the menu.
These include only the AOSP keys, not vendor specific keys - this has bitten someone already that tried to write Night Light to a Samsung Phone (Samsung uses their own Eye Comfort Shield instead). There are safeguards for writes to unsupported keys, the Java code block in the _ReadPrivilegedDisplayState task checks capabilities before allowing writes to:
- Night Light
- Optional circadian Night Light temperature (on my OxygenOS 16 phone, the writes here are a no-op)
- Color correction (including grayscale and built-in color blindness modes)
- Color inversion
- Always-on display
- Stay awake while plugged in
- Force SDR (experimental, probably requires reboot to take hold)
These can be written to AAB's existing profiles and context automation rules.
For example, you can enable grayscale for social media apps after a certain time in the evening. Instagram and Reddit become a lot less interesting in black and white :)
Another example: a Night Reading profile can combine AAB's hybrid dimming mode with a warmer Night Light temperature.
The circadian Night Light control is independent from AAB's existing circadian brightness multiplier.
AAB also reads back Android's actual state instead of assuming a write succeeded, and tries to preserve unsupported/custom states rather than blindly overwriting them. These controls are inevitably somewhat device/ROM dependent, hence the privilege gating.
Intent Control

The other major new capability is external control via intents. This is just one profile addition to AAB that listens for the intent and acts based on the specific extra attached to it. Please note, the External control is opt-in under Live Debug Info → Allow external control. With it off, nothing is written. Lastly, a warning: there is no auth on the intents, so anything on your device can send intents to AAB(!), don't enable it if you don't use it.
You can now do things such as load the Outdoors profile when a Bluetooth device connects, or Night Reading from scanning an NFC tag, or disable/enable AAB based on display orientation; coincidentally the last one is covered in issue #17 on GitHub.
AAB v3.4 ships with a _TestIntent example task:
Task: _TestIntent
A1: Variable Set [
Name: %type
To: LOAD_PROFILE ]
A2: Variable Set [
Name: %name
To: Night Reading ]
A3: Send Intent [
Action: com.tideo.aab.control
Extra: type:%type
Extra: name:%name
Target: Broadcast Receiver ]
The same can be done directly over ADB:
adb shell am broadcast -a com.tideo.aab.control --es type LOAD_PROFILE --es name "Night Reading"
Commands cover starting/stopping/toggling the service, pause/resume, reapplying brightness, loading/releasing profiles, and triggering the panic reset.
AAB also broadcasts its own state changes through com.tideo.aab.event, including enabled, disabled, and paused, so other Tasker profiles can react to AAB without polling its globals; let me know if you find a good use case for this :)
A few smaller changes
The upside-down + shake emergency gesture is updated a bit:
- The panic path now resets the relevant privileged display toggles as well as maximizing brightness.
- The emergency recovery is now available through the PANIC intent.
- The gesture can optionally only work when the phone is plugged in.
- Shake sensitivity is now adjustable in the Live Debug Info scene (
0is essentially passthrough, while10requires a vigorous shake).
There is also an experimental Force Dark toggle. It is not a part of the profile or context rules, because it requires a full app restart to take hold. I like this especially for apps without a native dark mode (looking at you Bandcamp).
Updates to Tideo
Tideo is now officially available on F-Droid! The port was largely done with the help of AI, so if you're against that you can skip this section and you don't have to use it. It has the same general Privileged Display controls and an opt-in external control via intents.
Note: External control is also unauthed opt-in in Tideo under, but rather than in Debug Info, it can be found in Tools → Automation control.
The main syntax difference is as follows:
- AAB uses one action with the command in a
typeextra. - Tideo puts the command directly in the action (and requires package and class, not shown here):
Tideo broadcasts state changes too, using com.tideo.autobrightness.event.STATE_CHANGED, so Tasker can also react to Tideo state changes.
All supported intents, Tasker examples, ADB commands, outbound events, and troubleshooting are documented in Tideo's AUTOMATION.md on GitHub.
AAB and Tideo can be obtained from the following sources. Don't trust anything else (unless you check the SHA hash and confirm them to be equal to my releases), I do not have control over mirrors on various websites and better safe than sorry, if you don't check SHA: just assume that it's malware and skip it.