HideMyAndroid Light Sensor Spoofing: Realistic Ambient Light Test

What a sensor test app reads from the ambient light sensor on an Android 16 emulator with HideMyAndroid 1.6.4's Light sensor option off and on, in lux.

Last updated: September 11, 2026

What the Light sensor option does

With the Light sensor option on, a HideMyAndroid profile replaces an idle device’s frozen ambient light reading with one that behaves like real room or street light. Off, apps see the raw hardware again.

Added in app 1.6.4, it is the third checkbox under the Realistic Sensor switch, after Accelerometer and Gyroscope, Premium like them. Ticking it opens a Light environment picker with four presets, Indoor by default.

Key facts

  • Light sensor is a Premium, per-profile option in app 1.6.4 or newer, beside Accelerometer and Gyroscope under Realistic Sensor.
  • Only the ambient light sensor is rewritten; every other sensor passes through unchanged.
  • Four presets set the band: Indoor, On the move, Outdoors, Night / dark. None follows the clock.
  • Light runs on its own engine; a jolt on the accelerometer does not move the lux.
  • Sensor name, vendor, range, and resolution stay as reported; values never leave the real range.
  • ADB can set the flag hook_sensor_light through the Headless API; the preset can only be picked in the app.

How we tested it

Sensor Test (ru.andr7e.sensortest 1.6.9) on an Android emulator, sdk_gphone64_arm64, Google Play image, Android 16 / API 36, rooted with Magisk plus an Xposed framework loading HideMyAndroid 1.6.4, on a Premium license. One profile targeted only Sensor Test, with Realistic Sensor on and all three sensors ticked.

We captured six states from one boot, force-stopping Sensor Test before every capture because the module decides once per launch whether to hook a process: no profile; profile active with Light sensor off; Light sensor on with Indoor, then Outdoors, then Night / dark; profile deactivated again.

The emulator’s light sensor reports only when its value changes, so for the three spoofed states we pushed a new value from the emulator console about every half second, ten frames each; the plain states were eight screenshots (six for the last) about 0.7 seconds apart, nothing pushed. Every number comes from a screenshot.

Light sensor: before and after

With no profile active, the emulator reports 0.0 lx on every sample. Push a value from the emulator console and the app shows it: 137.0 lx, then 742.0 lx.

Sensor Test light sensor screen on the emulator: Profile off: the app shows the 137 lx we pushed to the emulator
Profile off: the app shows the 137 lx we pushed to the emulator
Sensor Test light sensor screen on the emulator: Profile on, Light sensor with Indoor: 202.0 lx from the engine; the pushed values are ignored
Profile on, Light sensor with Indoor: 202.0 lx from the engine; the pushed values are ignored

With Light sensor on, the pushes are ignored and the reading follows the engine, changing frame to frame inside the chosen preset:

PresetProfile offProfile on: min / max / mean (lux)
Indoor0.0190 / 503 / 234
Outdoors0.05,092 / 40,000 / 17,465
Night / dark0.05 / 8 / 6.4

Indoor sat between 190 and 229 lx with one brighter moment at 503. Outdoors swung from 5,092 to 40,000 lx, the sensor’s declared maximum, so the clamp to the real range is visible. Night / dark wandered between 5 and 8 lx.

State 2, Light sensor off, read 0.0 like state 1, and the last state went back to 0.0: the change comes from this option alone.

The four presets

Each preset is a band the value wanders through, with occasional jumps and spikes:

PresetUsual bandNow and then
Indoor50 to 800 lux2,000 to 15,000 lux
On the move100 to 500 lux indoors, 3,000 to 40,000 outdoors, switching often
Outdoors3,000 to 50,000 luxshade, 200 to 800 lux
Night / dark0.5 to 25 luxa lamp, 50 to 200 lux

The preset ignores the clock, so Night / dark reports darkness at noon; pick the one that fits the profile.

What does not change

The Sensor Test info screen is identical in every state: still “Goldfish Light sensor” by “The Android Open Source Project”, max range 40000, resolution 1.0, and still 17 sensors. HideMyAndroid rewrites the value inside each light event; it does not invent a light sensor on a device without one, and it rounds to the real resolution and caps at the real range, hence the whole numbers above. As with the motion sensors, only the Java sensor API is covered; native code sees the real value.

Sensor Test light sensor info screen on the emulator: Profile off: Goldfish Light sensor, range 40000, resolution 1.0
Profile off: Goldfish Light sensor, range 40000, resolution 1.0
Sensor Test light sensor info screen on the emulator: Profile on: same name, vendor, range, and resolution
Profile on: same name, vendor, range, and resolution

How to turn it on

In the New Profile or Edit Profile screen, find Realistic Sensor in the Premium section, turn on the switch, tick Light sensor, and choose a Light environment. Save, activate, and relaunch the target app; a running app keeps its old reading until restarted. It needs app 1.6.4 or newer from the home page.

Edit Profile screen: Realistic Sensor on with Accelerometer, Gyroscope and Light sensor ticked, and the Light environment picker showing Indoor, On the move, Outdoors and Night / dark
Edit Profile: the three checkboxes and the four Light environment presets

From ADB, the Headless API sets the flag through the hookFlags parameter of profile.update, key hook_sensor_light beside the accelerometer and gyroscope keys. Use the broadcast form and send the full map, as the accelerometer and gyroscope post explains. The preset has no headless field: a profile created from ADB uses Indoor; open it in the app to pick another.

adb shell am broadcast -a com.wowsoftware.hidemyandroid.HEADLESS_UPDATE -p com.wowsoftware.hidemyandroid -e token <your_access_token> -e id <profile_id> -e hookFlags '{"hook_realistic_sensor":true,"hook_sensor_accelerometer":true,"hook_sensor_gyroscope":true,"hook_sensor_light":true,...}'

What it does not promise

No tool can guarantee zero detection forever. The Light sensor option removes one tell, a light reading that never changes, and keeps it in a believable band; it does not rename an emulator’s sensors, and platforms keep changing their checks. Under the Terms of Service, you remain responsible for following the laws and platform rules that apply to you.

Next steps

Download