EVKphone is an Android app that connects Prophesee EVK5-series event cameras (EVK3/EVK4 also supported) directly to your phone — no root required — for live event preview, synchronized multi-modal recording, and playback.
The moment a camera is connected you see the event stream: red = ON events, blue = OFF events on a black background, with old traces fading out. Both orientations are supported (landscape uses a two-pane layout with the preview dominating); rotating the phone does not interrupt the stream.
One recording produces four files sharing the same name prefix:
| File | Content |
|---|---|
rec_<time>.raw |
Event-camera data (standard EVT3; opens directly in Metavision software on PC) |
rec_<time>_imu.csv |
Phone IMU data (accelerometer + gyroscope + rotation vector, ~990 Hz, hardware timestamps) |
rec_<time>.mp4 |
Phone rear-camera video (1080p 30 fps, no audio) |
rec_<time>_metadata.json |
Time-synchronization information (see Section 4) |
IMU and RGB video are optional modalities you can toggle before each recording; IMU is on by default.
Put .raw files into /sdcard/evk_data/ on the phone and the app plays them
back smoothly at exactly 1× real time, with pause / resume / replay /
progress-bar seeking. Files recorded by this app and by Metavision on PC both
work.
Faulty/hot pixels are blocked inside the sensor itself — masked pixels never generate data, so recordings, preview, and statistics are clean at the source (this is not post-hoc filtering).
- 3 measured hot-pixel coordinates are built in and enabled out of the box;
- You can add coordinates (
x,y), delete individual points, restore the defaults, or clear the list; - Changes take effect immediately and are saved automatically. When switching to a different camera body, re-derive the hot-pixel coordinates and edit the list accordingly.
Pinch on the preview or drag the slider for digital zoom (magnification shown live). Zoom applies to both the preview and the recorded video. After changing the event camera lens, use zoom to align the RGB and event-camera fields of view.
Four presets: 2M / 10M / 30M / 100M ev/s. On phones with a USB 2 port keep ERC enabled (default 10M), or data overflows in dynamic scenes; USB 3 phones can raise it or turn it off.
| Item | Requirement |
|---|---|
| Phone | 64-bit ARM Android device (arm64-v8a), Android 11 or newer |
| Port | USB OTG/Host (for the camera); not needed for file playback only |
| Camera | Prophesee EVK series (EVK2/EVK3/EVK4/EVK5, via the Treuzell board protocol) |
| Permissions | "All files access" (for the evk_data folder); camera permission (RGB modality only) |
Connection tip: connecting the camera directly to the phone often fails to enumerate — use a USB 3 hub / dock (the tested, stable setup). If the camera repeatedly disconnects and re-appears, check the dock's power supply first. On USB 2 phones, keep ERC enabled.
- Install the APK (allow "install from unknown sources" when prompted);
- Grant permissions: on first launch tap the license row on the status card → "Grant file access" → allow in system settings;
- Connect the camera: plug in via OTG cable/dock → the camera appears in the "USB devices" card → tap "Connect VID xxxx" → grant USB access → the status shows "streaming" and the preview comes alive;
- Record: choose modalities (IMU / camera) in "Capture controls" → tap "Start recording" → "Stop recording";
- Get your files: open
/sdcard/evk_data/in any file manager or via MTP from a PC — all recordings are there; - Play back: in the "Event files" card, tap "Play" on any
.raw.
The three data streams are aligned through anchors in metadata.json
(the same scheme as the PC-side recording script, so existing processing
pipelines work unchanged):
time_base.unix_minus_monotonic_ns— fixed offset between the phone's boot clock and Unix time;event_camera.record_start_ns / record_start_monotonic_ns— recording start in both time bases;event_camera.first_event_ts_us / last_event_ts_us— first/last event timestamps on the event clock (event-level precision);event_camera.masked_hotpixels— hot pixels masked during this recording;imu.samples / estimated_rate_hz— IMU sample count and measured rate;video.start_monotonic_ns / duration_ns— video start and duration.
Alignment method: IMU and video already live on the phone clock; the event
clock maps linearly onto it via record_start + first_event_ts_us. The IMU
CSV column names match the PC script record_event_imu_session.py exactly
(one extra sensor column notes each row's source), so your existing
processing scripts need no changes.
- 14-day full-feature trial: For research data acquisition. 14-day trial available; activation coming soon.
Q: The camera doesn't show up in the USB device list? Make sure OTG is enabled and the dock is powered; try a USB 3 hub (direct connection succeeds rarely).
Q: The camera appears then disappears repeatedly? Insufficient power or a loose connection. Check the dock's independent power supply; if the camera stops responding entirely, power-cycle it by unplugging/replugging.
Q: What to watch out for when installing an update? Always tap "Stop & disconnect camera" inside the app before installing. Killing the app while the camera is streaming can hang the camera firmware (it stops responding until physically power-cycled).
Q: Recordings are huge. At 10M ev/s expect ~37 MB/s (≈2.2 GB per minute) — that's normal; lower the ERC preset to reduce data volume.
Q: IMU rate is only 200 Hz? Some phone builds cap sensor rates. The app declares the high-sampling-rate permission; most devices reach ~990 Hz.
Q: The RGB video isn't 1080p? On some phones the camera falls back automatically; trust the actual video file (a note field in the metadata says the same).
© 2026 the author. All rights reserved. Redistribution or modification without permission is prohibited.
Open-source components bundled with the app (with thanks):
| Component | License | Role |
|---|---|---|
| OpenEB 5.2.0 | Apache License 2.0 | Event-camera HAL/driver layer |
| libusb 1.0.30 | GNU LGPL 2.1 | USB communication (dynamically linked) |
| AndroidX / CameraX / Jetpack Compose | Apache License 2.0 | Google UI/camera frameworks |
Full license texts are included in the corresponding directories of the project.
