screentinker/android/app/src/main/java/com/remotedisplay/player
ScreenTinker 275e1683b8 Report the screen's own IP, and make the Wi-Fi name an honest optional
A customer read the device page's IP as their screen's address and reported it as wrong.
It was not wrong, it was a different thing: devices.ip_address is the PUBLIC address the
server sees the connection arrive from. Both are useful — you want the public one to
recognise a site, and the local one to actually reach the panel — so the page now shows
each, labelled.

The player already computed its own address for the connectivity report; it just never
reported it. Read straight off the interfaces, so Ethernet panels get it too, and it needs
no permission. Stored on device_telemetry beside wifi_ssid/wifi_rssi, where the
per-heartbeat network facts already live, rather than as another devices column.

The same customer saw "Unknown" for the Wi-Fi name and assumed it needed device-owner
access. It needs LOCATION: Android 8.1+ returns the literal "<unknown ssid>" to an app
without it. So "Unknown" was us reporting a permission gap as if the network had no name.

The player now distinguishes not-allowed-to-know from genuinely-no-Wi-Fi, and the page says
"Needs location permission" instead of a blank. The permission is declared but NEVER
requested at startup and nothing else uses it — a signage player demanding location to
display a network name is a bad trade. It is an opt-in row on the setup screen, using the
same Enable/Manage pattern, and refusing it changes that one field and nothing else.

Also caught by the test suite, and worth recording: the first version of this dropped the
comma in the device SELECT list ("t.uptime_seconds t.local_ip"), which 500'd the endpoint
and failed seven tests that never mention telemetry. Verified end to end afterwards —
public and local addresses both returned, distinct, from a real request.
2026-07-29 21:57:59 -05:00
..
admin Add an operator override for self-update on MDM-managed panels 2026-07-28 23:07:30 -05:00
data Resume the playlist where it was after an Activity rebuild (#234) 2026-07-29 09:13:30 -05:00
player Resume the playlist where it was after an Activity rebuild (#234) 2026-07-29 09:13:30 -05:00
remote feat(device-owner): tier foundation + QR provisioning + content-expiry & device enhancements (#168) 2026-07-12 19:41:07 -05:00
service Make unblock stick, and say so when a device is refused 2026-07-29 18:44:11 -05:00
system feat(system-control): Tier 0/1 controls with no device-owner dependency (#160) (#169) 2026-07-12 20:48:47 -05:00
telemetry Report the screen's own IP, and make the Wi-Fi name an honest optional 2026-07-29 21:57:59 -05:00
util fix(content): render YouTube Shorts in 9:16 instead of a landscape frame (#184) (#189) 2026-07-15 08:41:43 -05:00
MainActivity.kt Make unblock stick, and say so when a device is refused 2026-07-29 18:44:11 -05:00
OwnerAccessibilityActivity.kt feat(device-owner): tier foundation + QR provisioning + content-expiry & device enhancements (#168) 2026-07-12 19:41:07 -05:00
ProvisioningActivity.kt Clear ProvisioningActivity's service callbacks (the white-flash relaunch loop) 2026-07-29 18:01:34 -05:00
RemoteDisplayApp.kt feat: app-ending signal (exit-signal contract v1) — server + APK + .wgt + /player 2026-07-08 15:32:40 -05:00
ScreenCapturePermissionActivity.kt fix(android): Android 14+ MediaProjection / foreground-service compliance (#5) 2026-06-08 17:19:56 -05:00
SetupActivity.kt Report the screen's own IP, and make the Wi-Fi name an honest optional 2026-07-29 21:57:59 -05:00