Improve Android app UI and controller flows

This commit is contained in:
2026-10-09 16:43:58 +08:00
parent c0e26b97fe
commit 608229a497
90 changed files with 8103 additions and 1133 deletions
@@ -0,0 +1,130 @@
annotated_types-0.8.0-py3-none-any.whl: OK
anyio-4.14.2-py3-none-any.whl: OK
certifi-2026.7.22-py3-none-any.whl: OK
cffi-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl: OK
click-8.4.2-py3-none-any.whl: OK
colorama-0.4.6-py2.py3-none-any.whl: OK
cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl: OK
dbus_next-0.2.3-py3-none-any.whl: OK
fastapi-0.116.1-py3-none-any.whl: OK
fonttools-4.63.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl: OK
h11-0.16.0-py3-none-any.whl: OK
httpcore-1.0.9-py3-none-any.whl: OK
httptools-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl: OK
httpx-0.28.1-py3-none-any.whl: OK
idna-3.18-py3-none-any.whl: OK
iniconfig-2.3.0-py3-none-any.whl: OK
packaging-26.3-py3-none-any.whl: OK
pillow-12.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl: OK
pluggy-1.6.0-py3-none-any.whl: OK
pycparser-3.0-py3-none-any.whl: OK
pydantic-2.13.4-py3-none-any.whl: OK
pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl: OK
pygments-2.20.0-py3-none-any.whl: OK
pytest-8.4.1-py3-none-any.whl: OK
python_dotenv-1.2.2-py3-none-any.whl: OK
pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl: OK
starlette-0.47.3-py3-none-any.whl: OK
typing_extensions-4.16.0-py3-none-any.whl: OK
typing_inspection-0.4.2-py3-none-any.whl: OK
uvicorn-0.35.0-py3-none-any.whl: OK
uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl: OK
watchfiles-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl: OK
websockets-17.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl: OK
Looking in links: /run/[private]-screen-controller-layers-20261009/wheels
Processing /run/[private]-screen-controller-layers-20261009/wheels/fastapi-0.116.1-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/uvicorn-0.35.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pillow-12.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/fonttools-4.63.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/dbus_next-0.2.3-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pytest-8.4.1-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/httpx-0.28.1-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/starlette-0.47.3-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pydantic-2.13.4-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/typing_extensions-4.16.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/click-8.4.2-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/h11-0.16.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/httptools-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/python_dotenv-1.2.2-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/websockets-17.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/cffi-2.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/iniconfig-2.3.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/packaging-26.3-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pluggy-1.6.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pygments-2.20.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/anyio-4.14.2-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/certifi-2026.7.22-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/httpcore-1.0.9-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/idna-3.18-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pycparser-3.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/annotated_types-0.8.0-py3-none-any.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Processing /run/[private]-screen-controller-layers-20261009/wheels/typing_inspection-0.4.2-py3-none-any.whl
Installing collected packages: websockets, uvloop, typing-extensions, pyyaml, python-dotenv, pygments, pycparser, pluggy, pillow, packaging, iniconfig, idna, httptools, h11, fonttools, dbus-next, click, certifi, annotated-types, uvicorn, typing-inspection, pytest, pydantic-core, httpcore, cffi, anyio, watchfiles, starlette, pydantic, httpx, cryptography, fastapi
Successfully installed annotated-types-0.8.0 anyio-4.14.2 certifi-2026.7.22 cffi-2.1.1 click-8.4.2 cryptography-46.0.5 dbus-next-0.2.3 fastapi-0.116.1 fonttools-4.63.0 h11-0.16.0 httpcore-1.0.9 httptools-0.8.0 httpx-0.28.1 idna-3.18 iniconfig-2.3.0 packaging-26.3 pillow-12.3.0 pluggy-1.6.0 pycparser-3.0 pydantic-2.13.4 pydantic-core-2.46.4 pygments-2.20.0 pytest-8.4.1 python-dotenv-1.2.2 pyyaml-6.0.3 starlette-0.47.3 typing-extensions-4.16.0 typing-inspection-0.4.2 uvicorn-0.35.0 uvloop-0.22.1 watchfiles-1.2.0 websockets-17.0.1
make: Entering directory '/opt/[private]-screen-controller.stage.1.1.3-layers-20261009-ready/app/display/native'
rm -f -- libh618_hub75.so hub75_benchmark hub75_native_test hub75_safeoff
cc -O3 -std=c11 -Wall -Wextra -Werror -fPIC -pthread -shared h618_hub75.c -o libh618_hub75.so -pthread
cc -O3 -std=c11 -Wall -Wextra -Werror -fPIC -pthread benchmark.c h618_hub75.c -o hub75_benchmark -pthread
cc -O3 -std=c11 -Wall -Wextra -Werror -fPIC -pthread native_test.c h618_hub75.c -o hub75_native_test -pthread
cc -O3 -std=c11 -Wall -Wextra -Werror -fPIC -pthread safeoff.c h618_hub75.c -o hub75_safeoff -pthread
./hub75_native_test
native_bitplane_tests=PASS
./hub75_safeoff --fake
HUB75 safeoff complete
make: Leaving directory '/opt/[private]-screen-controller.stage.1.1.3-layers-20261009-ready/app/display/native'
........................................................................ [ 14%]
........................................................................ [ 28%]
.............................................................s.......... [ 42%]
........................................................................ [ 56%]
........................................................................ [ 70%]
.......s.......................................................s........ [ 84%]
........................................................................ [ 98%]
.......sss [100%]
508 passed, 7 skipped, 389 warnings in 401.84s (0:06:41)
PASS: H618 PI pinctrl: allwinner,sun50i-h616-pinctrl
PASS: /dev/mem accessible: /dev/mem
PASS: /dev/i2c-1 present: /dev/i2c-1
PASS: CPU3 present: /sys/devices/system/cpu/cpu3
PASS: native HUB75 library: /opt/[private]-screen-controller.stage.1.1.3-layers-20261009-ready/app/display/native/libh618_hub75.so
PASS: AArch64 userspace: aarch64
PASS: default network route: default via <设备网络地址> dev wlan0 proto static metric 600
PASS: NetworkManager active: active
PASS: lightdm.service inactive: inactive
PASS: gpioc-server.service inactive: inactive
PASS: map_device.service inactive: inactive
Persistent data prepared successfully: schema=config.json
frpc: OK
LICENSE: OK
frpc binary already verified; skipped
frpc 0.71.0 installed as a system component
● [private]-screen-controller.service - WalnutPi H618 Matrix Screen Controller
Loaded: loaded (/etc/systemd/system/[private]-screen-controller.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-10-09 07:36:54 UTC; 9s ago
Process: 292616 ExecStartPre=/bin/sh -c cat /proc/sys/kernel/sched_rt_runtime_us > /run/[private]-screen-controller/sched_rt_runtime_us.original && printf "%s
" -1 > /proc/sys/kernel/sched_rt_runtime_us (code=exited, status=0/SUCCESS)
Process: 292618 ExecStartPre=/opt/[private]-screen-controller/.venv/bin/python /opt/[private]-screen-controller/scripts/dedicated_host.py check --service (code=exited, status=0/SUCCESS)
Process: 292624 ExecStartPre=/opt/[private]-screen-controller/app/display/native/hub75_safeoff (code=exited, status=0/SUCCESS)
Main PID: 292625 (python)
Tasks: 14 (limit: 1021)
Memory: 137.5M
CPU: 11.644s
CGroup: /system.slice/[private]-screen-controller.service
└─292625 /opt/[private]-screen-controller/.venv/bin/python -m uvicorn app.main:app --host 0.0.0.0 --port 8080
Oct 09 07:37:01 [private] python[292625]: File "/opt/[private]-screen-controller/.venv/lib/python3.11/site-packages/dbus_next/message_bus.py", line 712, in _process_message
Oct 09 07:37:01 [private] python[292625]: handler(msg, send_reply)
Oct 09 07:37:01 [private] python[292625]: File "/opt/[private]-screen-controller/.venv/lib/python3.11/site-packages/dbus_next/message_bus.py", line 898, in _default_properties_handler
Oct 09 07:37:01 [private] python[292625]: raise DBusError(
Oct 09 07:37:01 [private] python[292625]: dbus_next.errors.DBusError: interface "org.bluez.LEAdvertisement1" does not have property "TxPower"
Oct 09 07:37:01 [private] python[292625]: 2026-10-09 07:37:01,456 INFO app.power.voltage: Screen voltage sensor is available
Oct 09 07:37:01 [private] python[292625]: 2026-10-09 07:37:01,489 INFO app.monitoring.resources: System resource monitor is available
Oct 09 07:37:02 [private] python[292625]: INFO: Application startup complete.
Oct 09 07:37:02 [private] python[292625]: INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
Oct 09 07:37:02 [private] python[292625]: INFO: 127.0.0.1:47456 - "GET /api/status HTTP/1.1" 200 OK
WalnutPi Matrix Screen Controller updated successfully: 1.1.3-layers-20261009-ready
WARNING: The directory '/home/[private]/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.