Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pixel Double Tap Wake — Infinity-X / Android 16 build

A small LSPosed/Xposed module that converts the Pixel 8 Pro's stock single tap to wake/check phone behavior into double tap to wake.

This revision is targeted at the user's tested environment:

  • Pixel 8 Pro (husky)
  • Infinity-X custom ROM
  • Android 16 / SDK 36
  • Android security patch: 2026-07-05
  • Reported fingerprint: google/husky/husky:16/BP4A.260205.001/14624666:user/release-keys
  • doze_tap_gesture=1
  • doze_pulse_on_pick_up=0

The module is a standalone reimplementation of the DT2W behavior studied in PixelXpert's ScreenGestures code. It contains no PixelXpert UI or unrelated hooks.

Android 16 behavior

There are two relevant SystemUI paths.

1. True screen-off / doze sensor

A screen-off tap reaches DozeTriggers.onSensor() with tap reason 9.

The module:

  1. Captures the DozeSensors.TriggerSensor whose mPulseReason is 9.
  2. On tap #1, calls updateListening() to re-arm the native tap sensor.
  3. Only if re-arming succeeds, suppresses tap #1 and opens a 400 ms window.
  4. Tap #2 inside that window is allowed through untouched.
  5. Stock SystemUI performs the actual wake.

This path is fail-open. If the expected private class/field/method is missing, the module leaves stock single-tap wake intact rather than swallowing touches.

2. Pulsing / AoD transition

Android 16's com.android.systemui.shade.PulsingGestureListener has separate onSingleTapUp() and onDoubleTapEvent() handlers.

The module directly suppresses only onSingleTapUp(). It deliberately does not hook onDoubleTapEvent(), so SystemUI retains its own proximity checks, falsing checks, and wake call for the double tap.

A legacy NotificationShadeWindowViewController listener fallback is retained only in case Infinity-X contains a mixed/custom SystemUI merge where the direct PulsingGestureListener class is absent.

Requirements

  • Pixel 8 Pro / Android 16 recommended for this revision.
  • Root.
  • LSPosed or a compatible Xposed implementation.
  • Tap to check phone must remain enabled.

Install

  1. Build and install the APK.
  2. Enable Pixel Double Tap Wake in LSPosed.
  3. Scope it only to com.android.systemui (System UI).
  4. Reboot.
  5. Leave Tap to check phone enabled.

There is no launcher activity or settings screen.

Build

Android Studio: open the project and build the app module.

Command line with Gradle 8.11.1:

gradle :app:assembleDebug

Output:

app/build/outputs/apk/debug/app-debug.apk

The included GitHub Actions workflow can also build the APK.

Diagnostics

Filter LSPosed/logcat for PixelDT2W.

On startup, useful lines include:

PixelDT2W: DozeSensors$TriggerSensor=true
PixelDT2W: DozeTriggers=true
PixelDT2W: PulsingGestureListener=true
PixelDT2W: native PulsingGestureListener.onDoubleTapEvent present=true

Typical screen-off sequence:

PixelDT2W: captured tap TriggerSensor, class=...
PixelDT2W: first doze tap suppressed; 400 ms window opened
PixelDT2W: second doze tap accepted; stock SystemUI wake continues

Typical pulsing/AoD-transition sequence:

PixelDT2W: pulsing single tap suppressed

If you see:

PixelDT2W: tap event received but TriggerSensor not captured; fail-open

or:

PixelDT2W: tap TriggerSensor re-arm failed; fail-open

then that Infinity-X build has diverged from the expected Pixel doze implementation. Stock single-tap behavior should remain available, and the log tells us what to investigate next.

Useful ADB log command

Windows:

adb logcat | findstr PixelDT2W

Clear the log first if desired:

adb logcat -c
adb logcat | findstr PixelDT2W

License / credit

GPL-3.0-or-later. PixelXpert by Siavash is credited as the reference implementation for the DT2W approach; PixelXpert itself credits nijel8/XDA for the original double-tap-to-wake technique.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages