Learn AAOS · Interactive
Cockpit zones and displays
Almost every multi-display bug in automotive comes from code that says “the display”, “the user” or “the current Activity” as though there were one of each. Here there are five displays, four zones and four users, and you can watch the assumption break.
Occupant zones
A zone ties a seat to its displays and to a user. Nothing here is “the” display or “the” user.
SEAT_ROW_1_LEFT
Driver profile
display 1 · display 0
SEAT_ROW_1_RIGHT
vacant
display 2
SEAT_ROW_2_LEFT
vacant
display 3
SEAT_ROW_2_RIGHT
vacant
display 4
What each display is showing
parked · nothing restrictedCluster view
distractionOptimized — allowed while driving
Navigation
distractionOptimized — allowed while driving
Video player
not distraction-optimised
Nothing running
Nothing running
Restrictions police the driver-facing displays only. A rear passenger keeps watching whatever they were watching, which is why SEAT_OCCUPANCY and the zone graph matter as much as the speed does.
Where does the Activity land?
with a launch display
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(0);
startActivity(intent, options.toBundle());lands on
Centre screen · display 0
Exactly where you asked.
Display ids here follow the usual convention — 0 is the default display. On a real product they come from the occupant zone configuration, not from a constant.
Things worth trying
- Put a video on the centre screen, then drive. It is blocked. Put the same video on a rear display and drive — it keeps playing. Restrictions police the driver, not the vehicle.
- Turn off “name a launch display”. Every Activity lands on display 0, in front of the driver, whoever you meant it for. This is the single most common multi-display bug.
- Give each zone a different user. “The current user” now has four different answers depending on which screen you are asking about — which is why storage, preferences and accounts all differ per display.
- Switch the foreground user. The driver’s screens change; user 0 keeps running headless underneath, holding the vehicle services. It does not restart.
- Set Settings running on the cluster and drive. Blocked — because it is not marked
distractionOptimized, not because of anything about Settings itself.
What this models, and what it does not
The zone-to-seat-to-display-to-user mapping, the driver-facing distinction, and the way UX restrictions follow driving state are all real, and they are the parts people get wrong. Display ids follow the usual convention, with 0 as the default; on a real product they come from the occupant zone configuration rather than a constant.
The full detail lives in occupant zones and multi-display, the headless system user model and UX restrictions.

