Keep Video Boost always on for your Pixel Pro. No root.
Pixel Camera deliberately turns Video Boost off every time you close the app (Google briefly made it persistent in Feb 2025 and then reverted it). There is no flag, intent or preference that can pin it without root, so this app re-enables it for you, automatically, every time you open the camera in video mode.
An AccessibilityService detects Pixel Camera in the foreground, opens the
Video Settings panel, reads the actual state of the Video Boost toggle
and turns it on only if it is off (it never taps blindly; if it is already on
it does nothing). Then it closes the panel to leave the viewfinder exactly as
it found it. The whole sequence takes about half a second.
Fully open source (MIT), no ads, no analytics, no accounts. Everything the app does is documented below in Transparency and Permissions, explained, and inside the app itself under About, privacy & source code, so nobody has to take anyone's word for it.
New here, or sharing the app with someone? See the visual install & setup tutorial. It covers the two normal warnings (Play Protect and "restricted setting") with screenshots, and includes a short blurb you can forward to whoever you send the app to.
- Install Obtainium.
- Add this app: one-tap link
(or in Obtainium: Add App → paste
https://github.com/AgusRomeroL/video-boost-ao). - Obtainium installs the latest release and updates it automatically from now on.
- Download the APK from the latest release and install it (allow "install unknown apps").
Google Play Protect warns about any sideloaded app that declares an accessibility service (the same warning Tasker, MacroDroid, etc. get). It does not mean the app is unsafe. To proceed:
- Tap the APK again; on the "App blocked" dialog choose More details → Install anyway.
- If that option isn't offered: Play Store → profile → Play Protect → settings (⚙️) → turn off Scan apps with Play Protect, install, then turn it back on.
- Installing via Obtainium avoids most of this friction (session-based install), which is why it's the recommended method above.
The warning eases over time with reputation and by being listed on trusted sources; it can't be fully removed without Play Store distribution, which this app avoids on purpose (see Distribution notes).
- Open Video Boost AO → the app guides you: tap Open Accessibility settings (your service entry comes up highlighted) and enable Video Boost Always-On.
- If Android shows "Restricted setting" (normal for sideloaded apps on Android 13+): tap Open App info in the app → ⋮ menu (top right) → "Allow restricted settings" (confirm with fingerprint/PIN) → retry step 2.
- Open Pixel Camera in video mode: within ~0.5 s Video Boost turns on by itself (sparkle icon at the top left of the viewfinder). The app also has a Try it now button.
The app includes a master switch to pause/resume the automation without touching accessibility settings, and checks GitHub for updates on launch (a card appears when a new version is available).
| Activation modes | Sensitive apps | About & privacy |
|---|---|---|
| Always-on or only while the Camera is open. | Auto-off around banks, reminders, full-auto. | What it does exactly, every permission explained. |
Full walkthrough (install, both Android warnings, and every screen): install & setup tutorial.
Android does not let apps grant themselves this permission; you enable it once, by hand. The app guides you the whole way:
- In the app, open the Setup guide card and tap Open Accessibility settings. Android's Accessibility screen opens with Video Boost Always-On highlighted (see the middle screenshot above).
- Tap it, turn the switch on, and confirm.
- If you see "Restricted setting" (Android 13+ shows this for any app
installed outside the Play Store): go back to the app, tap Open App info,
then the ⋮ menu (top right) → Allow restricted settings → confirm
with your fingerprint/PIN. Now repeat step 1.
- If the ⋮ menu is missing: open the app once, swipe it away from Recents, then long-press its icon → App info; the menu appears there.
- Back in the app, the hero turns to "Always-on" and the master switch is enabled. You're done.
You can pause the feature anytime with the master switch inside the app; no need to disable accessibility.
- Re-enables Video Boost on every camera session, the thing Pixel Camera refuses to remember.
- Two activation modes: always on (works on any Pixel Pro, no special permissions) or only when the Camera opens, which keeps the accessibility service switched off the rest of the time. See Activation modes.
- Notification controls: a switch per notice, a silence-everything master, and shortcuts to the Android channel settings.
- 74 languages: the UI labels it looks for are not guessed; they are
extracted directly from the real Pixel Camera APK
(
CameraLabels.kt). - RTL-aware: in Arabic/Hebrew/Farsi/Urdu the on/off segmented buttons are mirrored; the service picks the correct one (verified against the live UI).
- Idempotent and safe: reads the toggle state before acting; never turns Video Boost off; gives up quietly after a few attempts if the UI changed.
- Grace period for sensitive apps: after you leave your banking app it waits a configurable 0–10 minutes (3 by default) before turning itself back on, so stepping out for five seconds and going back doesn't trip the bank's anti-fraud check. The countdown notification lets you wait longer or turn it on now, and opening the Camera turns it on immediately.
- Material 3 Expressive UI (Compose) with dynamic color and a layout built for first-time users: the main screen shows only status, the master switch and a short settings list; mode, sensitive apps, notifications, wireless ADB and the About screen each live one tap deeper. Before setup, the app shows only the guided steps.
- About, privacy & source code screen in the app: what it does exactly, what it never does, every permission explained, why it isn't on the Play Store, and a link to this repo, readable before you grant anything.
- No root and no analytics. Full-auto is optional and off by default; when you
want it, you can use either Shizuku or a built-in wireless-ADB mode (no
second app).
INTERNETpermission is used for the GitHub release check and, if you enable it, the local ADB connection to your own device.
Granting an accessibility service is a big ask: Android's own dialog says "full control of your device", and it should make you pause. So here is the complete, auditable answer, which the app also shows in About, privacy & source code:
What it does, exactly. It watches for Pixel Camera in video mode. When it
appears, it opens the Video Settings panel, reads the real state of the Video
Boost toggle, turns it on only if it is off, and closes the panel, all in
about half a second. That is all. It only reads and taps controls inside Pixel Camera;
accessibility events from other apps are used solely to notice that the Camera
left the screen or that a sensitive app opened, and are discarded on the spot
(VideoBoostService.kt).
What it never does. It never reads or stores what is on your screen, never
collects data, and has no analytics, no ads and no accounts. Nothing leaves
your phone: the only network use is checking GitHub for new versions
(UpdateChecker.kt,
plain HttpURLConnection, fails silently offline) and, only if you enable it,
the wireless-ADB connection to your own phone over localhost.
Don't take our word for it. The complete source is in this repository under
the MIT license; anyone can read it, audit it, or build the APK themselves with
./gradlew assembleRelease.
Everything the app declares or can be granted, and why:
| Permission | Required? | What it is for |
|---|---|---|
| Accessibility service | Yes | The only way to flip a switch inside another app without root. Only touches Pixel Camera; see Transparency. |
INTERNET |
Yes | One thing only: asking GitHub whether there is a newer release. No other traffic, ever. |
Notifications (POST_NOTIFICATIONS) |
Yes | The reminders and confirmations you control in the Notifications screen; every optional one can be switched off. |
| Foreground service | Yes | What Android requires while the app waits for a sensitive app to close, or for the Camera to open in on-demand mode. Its notification is system-required and can be silenced. |
| Usage access | Optional | Only for full-auto / on-demand mode: lets the app see which app is in the foreground, locally, so it knows when the Camera opens or a sensitive app closes. Nothing is recorded. |
WRITE_SECURE_SETTINGS |
Optional | Granted only by you, through wireless ADB or Shizuku: lets the app switch its own accessibility service on and off, the same settings command you would type over ADB, nothing else. |
About the Play Store. Play's policy forbids using accessibility to automate another app, which is this app's whole purpose, so it is not, and will not be, on the Play Store. That is also why Play Protect warns when you install the APK: it flags every sideloaded accessibility app (Tasker and MacroDroid users know the drill), and it does not mean something is wrong. See the install section for how to get past the warning, and Distribution notes below.
There are two ways to run it. You pick one in How it turns on, on the main screen, and you can switch back and forth at any time.
The accessibility service stays enabled and filters events in code. It works on any Pixel Pro with no special permissions, and it is the mode everything below about sensitive apps exists for: banks refuse to run while an accessibility service is active, so the app turns itself off for them and back on afterwards.
The accessibility service stays off. A small foreground watcher notices that Pixel Camera came to the front, switches the service on for that session, and switches it off again when you leave. A bank never sees it running, so there is nothing to turn off and nothing to re-enable.
It needs the two special permissions the app can already grant itself once through wireless ADB or Shizuku (see the full-auto sections below):
- Usage access: to know which app is in the foreground.
WRITE_SECURE_SETTINGS: to switch its own accessibility service on and off locally, with no ADB connection open at runtime.
If either one is missing, the app says so and keeps running in always-on mode until you grant them; it never silently does nothing.
How it detects the camera, since that part has to be both instant and cheap: the
system's CameraManager availability callback fires the moment any app
takes a camera (no polling), and the app then confirms with usage stats that the
foreground app really is Pixel Camera. Instagram or WhatsApp opening their own
camera switches nothing on. A slow backup poll runs only while the screen is on,
in case the callback does not arrive.
Grace period on exit (0–60 s, 15 by default): stepping out to the gallery and coming back does not switch the service off and on again. A sensitive app in the foreground cuts the grace short and switches off at once.
Notifications, on the main screen, has a switch for every optional notice (service turned off, sensitive app closed, Video Boost is back on) plus an optional silent "Video Boost activated" confirmation, off by default, that tells you the toggle really was flipped in the Camera.
There is also a Silence everything master switch, and a shortcut to each notification channel in Android settings for sound and importance.
Notifications that belong to a running foreground service (paused for a sensitive app, the re-enable countdown, the on-demand watcher) can be silenced but not hidden: Android requires them while the service runs, and the app does not pretend otherwise with a switch that would do nothing.
- A Pixel Pro model with Video Boost (Pixel 8 Pro and newer Pro models).
- Recent Pixel Camera (10.x line, Android 16).
Every release is tested end to end on a Pixel 10 Pro XL, which is the only device I own. The app is built to survive Pixel Camera changes (it looks for the Video Boost control by resource id and by localized label rather than by screen position), and there is no reason to expect it to behave differently on a Pixel 8 Pro or 9 Pro, but I cannot claim to have watched it happen there.
The Pixel 11 series is not verified. It shipped in August 2026 with a newer Pixel Camera and Video Boost up to 8K, and I have no access to one. It may work unchanged, or a Feature Drop may have moved the control. If you have a Pixel 11 Pro, telling me either way is genuinely the most useful thing you can do for this project: open an issue with your model, your Pixel Camera version (Settings, Apps, Pixel Camera), your system language, and whether Video Boost turned on by itself. That is what lets me fix it, and it is worth more to me than a donation.
Video Boost processes video in the cloud through Google Photos: each boosted video is uploaded and stored twice, using data and storage. Always-on means more of both.
| Symptom | Cause / Fix |
|---|---|
| "App blocked to protect your device" (Play Protect) | Expected for any sideloaded accessibility app; not a defect. Tap More details → Install anyway, or temporarily disable Play Protect scanning. Obtainium avoids most of this. See the install section. |
| Can't enable the service ("Restricted setting") | Normal for sideloaded apps on Android 13+. App info → ⋮ → Allow restricted settings → confirm, then enable it (see steps above). Installing via a session-based installer (SAI, or Obtainium) avoids this. |
| Service enabled, but Video Boost doesn't turn on | Make sure the camera is in Video mode (Video Boost only exists there) and your device actually has Video Boost (Pixel Pro, 8 Pro+). Confirm the sparkle icon appears top-left. Check logs: adb logcat -s VideoBoostAO. |
| It worked, then stopped after a Pixel Camera update | A Feature Drop changed the UI. See maintenance below: re-anchor the resource-id and regenerate the localized labels. Open an issue and I'll push a fix. |
| Nothing happens right after enabling | Android sometimes needs a moment to bind a freshly enabled service. Close the camera fully and reopen it once. |
| Boots but toggle looks off in my language | The labels cover 74 languages extracted from the camera APK. If yours regressed after an update, open an issue with your system language. |
| Turned it off by accident | Use the master switch in the app, or if you disabled the accessibility service, just re-enable it; your settings are kept. |
| Battery/data concern | Video Boost uploads every video to Google Photos and keeps two copies. Pause with the master switch when you don't need it. |
Found a bug or a language/Feature-Drop regression? Please
open an issue with
your Pixel model, Android version, Pixel Camera version, and adb logcat -s VideoBoostAO output if you can.
This section is about always-on mode. In on-demand mode the service only exists while the Camera is open, so none of this machinery is needed and the app hides it.
Banks and other sensitive apps refuse to run when any non-allowlisted accessibility service is enabled (an anti-fraud measure, since that API can read the screen). They can't tell that this app is harmless, so they show an "uninstall this app" block.
To avoid it, the app turns its own accessibility service off when it detects a
sensitive app in the foreground (disableSelf()), so you're never blocked.
By default (no extra setup) it posts a reminder notification the moment the app opens: tap it (once you're done) to turn Video Boost back on in one step.
The built-in list
(SensitiveApps.kt)
covers ~330 apps: the major banks of every country where the Pixel is officially
sold, plus global fintech, crypto wallets, authenticators, and password managers.
Every package is verified against its Google Play listing. In the app you can:
- Toggle the auto-off behavior on/off.
- Add your own apps ("Choose sensitive apps") if something isn't covered.
- Turn the service off on demand.
- Enable Full-auto or smart reminders (below).
A disabled accessibility service is blind: on its own it can't tell when you leave the sensitive app. Give the app a way to watch the foreground and it gets much nicer:
| Setup | While the app is open | When you close it |
|---|---|---|
| Default (nothing) | reminder fires immediately | nothing (you re-enable manually) |
| Usage access granted | silent "paused" notice | alerting reminder to re-enable |
| Shizuku (full-auto) | silent "paused" notice | re-enables itself + a "back on" notice |
| Wireless ADB (full-auto, no extra app) | silent "paused" notice | re-enables itself + a "back on" notice |
So the notification is only silent while you're actually in the bank app, and only alerts you once you're out, and with full-auto you don't even have to tap.
The grace period. With full-auto, turning the service back on the instant you leave is a problem of its own: step out of your bank for five seconds to check something, come back, and the bank now sees an active accessibility service and blocks you. So the re-enable waits: 3 minutes by default, adjustable from 0 to 10 under Sensitive apps → Wait before turning back on. During the wait:
-
Going back into any sensitive app cancels it and returns to the silent paused state.
-
Opening Pixel Camera re-enables immediately, so the delay never costs you Video Boost.
-
The countdown notification (the one that alerts) carries "Wait +N min" and "Turn on now"; when it finally re-enables, that same notification becomes "Video Boost is back on" without making a second sound.
-
Usage access is a standard Android permission (Settings → Special access → Usage access). It only lets the app see which app is in the foreground; nothing leaves the device.
-
Shizuku lets the app re-enable its own accessibility service without root, by running the same
settingscommand ADB would. Setup below. -
Wireless ADB does the same thing without any second app: Video Boost pairs with your phone's own "Wireless debugging" and runs those
settingscommands itself. Setup below.
Shizuku runs a small helper with shell (ADB-level) privileges that ordinary apps can talk to, with no root required. Video Boost uses it only to flip its own accessibility service back on after a sensitive app closes.
- Install Shizuku from the Play Store or https://shizuku.rikka.app/.
- Start Shizuku. Open it and start the service via wireless debugging (Android 11+), a computer with ADB, or root. Follow Shizuku's built-in instructions. Note it must be started again after each reboot (its own docs cover automating this).
- In Video Boost open Sensitive apps → Full-auto & reminders, turn on Full-auto (Shizuku), and allow the permission Shizuku prompts for.
That's it. From then on, opening a sensitive app pauses Video Boost silently and closing it turns Video Boost back on automatically. If Shizuku ever isn't running, the app quietly falls back to the reminder notification.
If you'd rather not install a second app, Video Boost can talk to your phone's
own Wireless debugging directly. It pairs once, over localhost, and from then
on it can turn its accessibility service on and re-enable it after a sensitive
app closes: the exact same settings commands, no root, no Shizuku.
Pairing works like Shizuku's: you never leave the pairing screen. Video Boost watches for the pairing dialog over mDNS and, the moment it appears, sends a notification with an inline reply where you type the code.
- Enable Wireless debugging. Settings → System → Developer options → Wireless debugging (unlock Developer options first by tapping the build number 7 times).
- Start pairing. In Video Boost open "No Shizuku? Use wireless ADB" and tap Start pairing.
- Open the pairing dialog. In Wireless debugging, tap "Pair device with a pairing code". A Video Boost notification pops up asking for the code. Type the 6-digit code into it right there, without leaving the screen (the IP and port are found automatically over mDNS). It pairs and turns full-auto on.
- Use Turn on Video Boost now to enable the accessibility service the first time (skips the sideload "Restricted setting" wall).
A manual entry (type the code, IP and port yourself) is also available under "Enter the code here instead (advanced)", but on most phones leaving the pairing screen ends the session; the notification flow above avoids that.
It only uses the connection once. When you turn full-auto on, the app spends
that one connection granting itself two permissions: Usage access (so it can
see which app is in the foreground locally) and WRITE_SECURE_SETTINGS (so it
can re-enable its own accessibility service with a local write). Both are granted
with the same pm/appops commands you'd type over ADB. From then on a
sensitive-app session opens no ADB connection at all, which is also why
Android's own "Wireless debugging" notification stops reappearing every few
seconds while your bank is open.
WRITE_SECURE_SETTINGS is a development-level permission: it can't be granted
by tapping something in Settings, only by a shell (pm grant), and it only lets
the app write settings it was already writing over ADB. It is not revoked when
you turn full-auto off (revoking needs another ADB connection, and the permission
grants no access to your data); uninstalling the app removes it.
After a reboot you have to re-enable the "Wireless debugging" toggle once (an Android limitation; Shizuku has the same one) and tap Reconnect, but only if the local permission above isn't granted yet. Once it is, full-auto keeps working after a reboot with wireless debugging switched off. No new pairing code is ever needed, because the paired key is kept.
This mode is built on the open-source libadb-android (Apache-2.0), which bundles spake2-android (LGPL-3.0) for the pairing handshake and BouncyCastle (MIT). Note that it is a community library that has not been independently security-audited, and it exercises the same shell-level privilege ADB has, so enable it only if you're comfortable with that. Nothing leaves the device: the connection is to your own phone over localhost.
Pixel Camera Feature Drops can change texts, ids or view hierarchy.
-
The panel-entry
resource-idlives inSelectors.kt; localized labels live inCameraLabels.kt. -
Re-anchor resource-ids with a live dump (camera in video mode, panel open):
adb exec-out uiautomator dump /dev/tty -
Regenerate localized labels from the real camera APK with
tools/gen-labels.ps1:adb shell pm path com.google.android.GoogleCamera # locate base.apk adb pull <base.apk> tools/gcam-base.apk aapt2 dump resources tools/gcam-base.apk > tools/gcam-resources.txt powershell tools/gen-labels.ps1Relevant resources:
string/sapphire_label(row label),string/mode_video(mode chip),string/sapphire_on_desc(on-button content description). "Sapphire" is Video Boost's internal codename.
Debug logs: adb logcat -s VideoBoostAO
Android SDK (platform 36) + JDK 17 (Android Studio's JBR works):
./gradlew assembleDebug # debug build
./gradlew assembleRelease # signed release (needs keystore.properties)
Release signing reads keystore.properties (repo root, gitignored) pointing
to a keystore outside the repo:
storeFile=PATH\\TO\\your-release.keystore
storePassword=...
keyAlias=...
keyPassword=...Release builds differ from debug in two ways worth knowing:
- They are shrunk with R8, so
app/proguard-rules.prois load-bearing. The embedded ADB client and the Shizuku user service are reached by reflection, by JNI, or from another process, so a missing keep rule breaks full-auto at runtime instead of failing at compile time. - They ship arm64-v8a only, since every Pixel with Video Boost is arm64. Debug builds still package all four ABIs, so the x86_64 emulator keeps working there.
Not on Google Play, on purpose. This app uses an AccessibilityService
for a non-accessibility purpose, automating another app's UI. Play's current
policy does not forbid that outright: it permits the API "for a wide range of
applications" and explicitly allows deterministic, rule-based automation that
follows a static, human-defined script, which is exactly what this app does.
What it does require is a permission declaration, a prominent in-app
disclosure, and giving up the isAccessibilityTool flag, since automation
tools do not qualify as accessibility tools. The reason to stay off Play is
therefore not the written rule but the discretionary one: this app exists to
undo a product decision in Google's own camera, and review outcomes there come
with account-level enforcement risk and no advance warning.
Distribution is via GitHub Releases (this repo), Obtainium, and F-Droid-compatible repos that ship the developer-signed APK. The friction this causes at install time (Play Protect, restricted settings) is covered in Permissions, explained and the tutorial.
Note that giving up isAccessibilityTool has a consequence beyond Play: on
Android 17, turning on Advanced Protection revokes accessibility access
from every app that does not declare that flag, and the permission cannot be
granted again by hand. That affects this app the same way it affects Tasker
and MacroDroid. Advanced Protection is opt-in, so it only applies if you turn
it on.
The app is free, open source, and has no ads or tracking, and will stay that way. If it saves you a daily tap, you can support development (it helps keep the app working after every Pixel Camera Feature Drop):
People run into this problem long before they know an app exists for it, and they describe it in their own words. If you got here from a search, one of these was probably it:
Video Boost won't stay turned on · Video Boost turns off every time I open the camera · Video Boost keeps turning off · Video Boost automatically disables itself · Video Boost not staying on · Video Boost resets after closing the app · keep Video Boost enabled · always-on Video Boost · persistent Video Boost · Video Boost has to be turned on for every recording
In Spanish, Google calls the feature Video mejorado, so: el Video mejorado se desactiva al salir de la cámara · hay que activar el Video mejorado cada vez · dejar el Video mejorado siempre activado · el Video Boost se apaga solo.
MIT © 2026 Agustín Romero López