Skip to content
One hundred milliseconds guaranteed: where long exposure ends on a phone (Image generated with AI)
Image generated with AI

One hundred milliseconds guaranteed: where long exposure ends on a phone

You open a manual camera app, reach for the shutter dial, and it stops. On your phone it stops at half a second. On the phone belonging to the friend who talked you into buying a tripod it goes to thirty, and on a third handset the control is greyed out altogether. That number lives a long way below the app, in a property the operating system reads off the hardware and hands to anyone who asks for it. The two platforms describe it differently enough to be worth half an hour with the documentation.

A tenth of a second, and nothing else is promised

On Android the value is called SENSOR_INFO_EXPOSURE_TIME_RANGE, and the Camera2 documentation introduces it as «the range of image exposure times for android.sensor.exposureTime supported by this camera device». Units: nanoseconds. So far, so procedural. Then comes the line about valid values, and it repays a second reading: «the minimum exposure time will be less than 100 us. For FULL capability devices (android.info.supportedHardwareLevel == FULL), the maximum exposure time will be greater than 100ms».

A tenth of a second. That is the whole of the platform’s guarantee, and it only applies to cameras that declare the FULL hardware level. Everything you have beyond that tenth (the two seconds, the ten, the thirty) is a gift from whoever built the phone, not a promise from the standard. The key is also marked «Optional», with the footnote that «the value for this key may be null on some devices». Where it is null, exposure time stops being something you can request.

Who gets to request it at all is settled by the MANUAL_SENSOR capability, the one the documentation says guarantees «manual exposure control» alongside sensitivity and frame duration. FULL devices always declare it. LIMITED devices may or may not, and for LEGACY hardware the matter is closed before it opens, because «a LEGACY device does not support per-frame control, manual sensor control, manual post-processing». Google adds a consolation with a date on it: «devices that initially shipped with Android version Q or newer will not include any LEGACY-level devices». The problem simply moved sideways. Your phone’s main camera and its companions are separate devices, each declaring its own level and its own exposure range, and whether the ultra-wide reaches as far as the main camera is something to check indoors. Check it alongside the other lens question, the one about which camera actually works after dark.

On iOS the ceiling belongs to the format

AVFoundation files the same limit somewhere else in the tree. It does not sit on the device: it sits inside every individual AVCaptureDevice.Format, the object describing one combination of resolution, frame rate and sensor operating mode. The properties are minExposureDuration and maxExposureDuration, and Apple defines each in a single line: «a time value that indicates the maximum supported exposure duration», and the mirror image for the minimum. An iPhone exposes dozens of formats. Each carries its own ceiling.

The field consequence is immediate. Changing resolution can change your maximum shutter speed. If your app lets you pick between the binned format and full resolution, the choice you should already be making a certain way after dark may quietly hand you a different set of shutter speeds as well. There is nothing capricious about it. A format is a sensor readout mode, and different readout modes have different timings.

Then there is activeMaxExposureDuration, routinely mistaken for the real ceiling while describing something else entirely. Apple calls it «the maximum exposure duration, in seconds, defined in the autoexposure algorithm»: when exposure is automatic, the system «picks a default maximum exposure duration that’s tuned for the current configuration, balancing low light image quality with motion preservation». You can raise it as far as the format’s maxExposureDuration. Just know that it undoes itself, because «when the device’s activeFormat or the capture session’s sessionPreset changes, this property resets to the default max exposure duration for the new format or session preset». Raise the ceiling, then touch the resolution, and you are back where you started without being told.

The exposure you chose can be taken back mid-capture

The single most useful paragraph in either documentation set sits under setExposureModeCustom, the method an app uses to lock shutter and ISO at explicit values. Apple’s warning: «when using AVCapturePhotoOutput to capture photos, the photoQualityPrioritization property of AVCapturePhotoSettings defaults to balanced, which allows photo capture to temporarily override the capture device’s exposure duration and ISO if the scene is dark enough to require multi-image fusion to improve quality».

Read that again with yourself in it, outdoors, tripod already levelled. You have dialled in eight seconds at a gain you chose deliberately, and the scene is dark by definition, so the condition that authorises the system to overrule you is met on every single frame. The fix is in the next sentence and there is only one of it: to make the system honour your exposure duration and ISO in custom or locked mode, the app must set photo quality prioritization to speed. An app written for astrophotography does this. A general-purpose camera app that grew a manual mode may well not, and then you go home with a run of frames that no longer carry equal weight, which is the quietest way there is to spoil a stack.

Night mode is not part of this conversation

The obvious objection is that the stock camera, in night mode, holds the shutter open for ten seconds without asking anyone’s permission. That is a different machine. Android files it under extensions, a branch of the API kept apart from the sensor controls, and EXTENSION_NIGHT is defined as a «device-specific extension implementation that aims to suppress noise and improve the overall image quality under low light conditions». Look at what is missing from that sentence. A time. The extension promises an outcome and keeps the method to itself, and that method might be a stacked burst or a single long frame, and it might change between two firmware updates with nobody telling you.

On iOS the public lever nearest to it is photoQualityPrioritization, which trades quality against speed of delivery. The documentation lists the techniques involved, «reducing noise, preserving detail in low light, and freezing motion», and never once promises a duration. A developer can ask for quality. How long the shutter stayed open is something they find out afterwards.

Ten minutes to learn what yours allows

The test is trivial and you can do it indoors with the lights on. Open the manual app you actually use, note where the shutter dial stops, then repeat for every lens and every selectable resolution. What you end up with is a table of four or five numbers that describes your phone better than any spec sheet does.

Then check that those numbers are honoured. Shoot ten frames at the maximum, open the EXIF of all ten and compare the exposure field. If the values disagree, something upstream is deciding on your behalf, and you now know exactly who.

Why the ceiling stings less than it looks

There is a reason this hurts less than it reads, and it lives in another limit, a lower one, that you already carry. The sky moves, and on a 24 mm equivalent lens it gives you a handful of seconds before the stars turn into commas: exactly how many depends on focal length and on the declination of your target. If your phone stops at thirty seconds, you will never once touch the API ceiling. If it stops at two, the cage is yours, and it is made of silicon.

Between those two cases is where the argument actually matters, and it is also why accumulating frames beats lengthening them on a phone. You want to sit as close as you can to whatever ceiling your handset genuinely offers, rather than chase a number the app displays and the sensor never honours. The summing takes care of the rest, and live stacking has already had its say on that. Knowing your own maximum by heart means one fewer decision to make in the cold, and decisions made in the cold are rarely the good ones.

#astrophotography#smartphone#exposure#technique#sensor

3SIGNUM newsroom, edited by Stefano Monticciolo. How we work →

Keep reading