Introducing Ceilingbounce - flashlight testing and runtime graphs for Android

Hi Zak,

Been tinkering a bit with your app in my rooted good ol' Moto G 2013. Nice it is despite its simplicity, though I have to remember avoiding my usual screen auto-rotate setting because the app resets if the screen rotates, ?

I'm trying to get some valid throw values for a Sofirn C8T, the thing does up to 6+A at the tailcap, but I guess I need to make some more table room, it's a small spot at just 0.75m. Already got 102.4Kcd.

0K, here's the main question I came here for, ¿do you think a PWM detector functionality could be implemented in the app? I believe this can be possible by polling the light sensor at two non-multiple useful frequencies with custom selectable polling frequency up to whatever limit please (this is just in case we start polling at exactly the PWM frequency LoL!), looking up for noticeable variations in the measurements over a very brief lapse. Any non-PWM beam values would be nearly identical, and it would just take a second of polling or much less. Graph time of up to half or 1s would be plenty, I believe.

Cheers ^:)

The maximum sample rate of the sensor on my Nexus 5 seems to be 0.2 seconds. That’s not a viable way to detect PWM.

What could work is to use the camera. At a high shutter speed with the electronic rolling shutters used in most smartphones, ripple and PWM look something like this. That kind of pattern should be detectable with an algorithm and it may even be possible to estimate frequency.

Sound like the flicker tester app from visosystems.


It says it’s for both android and iPhone but I can only make it to work on iPhones. On android I only get the “not enough light” message.

I have sent them a mail but got a message back that he won’t be at the office until sometime in December.

Would be great if you could figure out how they do for the iPhone app and try to replicate it to your app on android.

Saw that post of yours yesterday, EagleShield. That is the reason I asked Zak, I thought it would be a nice addition to his application.

The Viso Systems Flicker Tester application is also not working on my Android, guess they definitively have bugs to sort out in it.


P.S.: C8T runtime graph coming in.

Thanks for the app. Just installed it on my Nexus 5X.

My biggest challenge is finding some known/verified lumen outputs for the flashlights that I own so that I can calibrate it. Is there a database of such info somewhere? I’ve been searching through various reviews on BLF and not getting what I need. Some of the common lights I own:

Convoy S2+ 4x7135 3B XML2
Convoy S2+ 8x7135 3A XPL HI
DQG Tiny 4th NW
Jetbeam Jet-1 MK

Seems the situation is pretty bleak. Even if you calibrate you can have factors of 3 errors across the dynamic range. And if you think establishing detailed calibration curves for various devices will help, nope.. they found no consistency across identical devices. I'd strongly suspect there are wild variations depending on the color distribution of the source too. Seems like these smartphone meters are kind of toys.

Oh didn't notice the OP is the writer. Ok great, maybe you can dispute that then?

I can’t dispute it. I have two smartphones and no real calibrated light sources. I have a couple lights that maukka also has, and maukka has a real integrating sphere.

I do note in the readme that “lux” readings from the phone’s light sensor are absolutely not lux. It is necessary to calibrate using lights with known lumen and candela values. No attempt is made to calibrate the raw sensor “lux” value to real lux, but I may add the ability. As the article notes, there’s no difference from one app to another in terms of the reported lux value; we all just report what the sensor says.

I wish the testers you linked had tried multiple samples of the same Android device like they did for iPhones. As the article notes, iPhone apps are using the camera rather than the light sensor because some jerk at Apple decided apps can’t use the light sensor. There’s bound to be some variation in that approach.

Somewhat problematic is that the test shows a non-linear ratio of lux to sensor values in all the devices tested. With most devices, it’s not huge, but the Samsung S5 at 500 lux is an exception. Everyone needs to test their own device with different lights on different modes for which there’s reasonably reliable data in order to have a reasonable calibration. If it jumps around as much as the S5, it may be impossible to calibrate accurately.

would it help you if the app users were able to submit different light source values to you some how?

I would think something along the lines of phone type. light value and light source, the light source would need to be entered manually?

i’m sure there would be a number of people on this board willing to test all there lights to create a sort of reference database

I’m planning to make a database website and integrate it with the app. Just haven’t gotten to it.

For this to be even remotely comparable, wouldn’t it require that everyone uses the same measuring environment/integrating device?

If my shoebox is different from your shoebox… :slight_smile:

I wouldn’t say it is all that unaccurate.I originally made a shoebox and used my sony z3 to measure with.I have since gotten a luxmeter and built and calibrated a pvc pipe measuring device and the reading i get from the phone app is always very close to what readings i get.

Having consistency across poor light boxes doesn't help. The point of the shoebox is to make sure that one beam profile of 100 lumens reads the same as another beam profile of 100 lumens. If that's not the case everyone having the same shoebox will still not get comparable readings across different types of lights. Consistency fixes overall calibration, not profile dependence, but that can be fixed just by dividing by some determined value, possibly by using a standard light as a rough calibration. Could be a GE 36watt halogen even, something everyone can buy for a couple of bucks at a hardware store.

Hi Zak, this is a very useful APK, thanks a lot for the app again.
Only one thing. I think it would be useful and cost very little to add a quantity to know how many lumens over time the flashlight/battery has produced.
For example:
Average lumens x seconds÷10.000
This can give info about efficiency.

Thank you very much for creating and sharing this app. I find it super useful to quickly analyze how a specific light steps down from the highest setting and great for evaluating relative output over runtime.


Good ,work.Thanks!

Thanks for this App.

It turned out it’s not easy to find the apk for first time github visitors.

Please add this in your README, under FAQ as second bullet point:

• You find the *.apk in the releases section of github:

And you have “CPF and BLF” in your text. My pal didn’t know what that means.
I would change this in “the flashlight forums Candle Power Forum (CPF) and Budget Light Forum (BLF)”.


I saw this thread when it was first started, but never thought I’d use the app, so just now downloaded it. I have to agree, you need a direct link to the /releases folder in your Readme file.

Also, just saw this in the OP:

If you’re serious about that, I may have to take you up on it in the future. :wink:

I’ll seriously code for money. As for payment in literal food or lights, I might consider it if the value was high enough.

Bump for this thread... I'm using it for my runtime graphs!