screencap-check.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env bash
  2. # Capture l'écran d'une montre connectée en adb et indique la part de pixels
  3. # non-noirs. Un écran noir uniforme (0 %) alors que l'app est au premier plan
  4. # trahit un problème de rendu Compose (voir AGENTS.md).
  5. #
  6. # Usage : scripts/screencap-check.sh [ip:port]
  7. set -euo pipefail
  8. ADB="${ANDROID_HOME:-$HOME/Android/Sdk}/platform-tools/adb"
  9. SERIAL="${1:-${WATCH_SERIAL:-}}"
  10. [ -n "$SERIAL" ] || { echo "Usage: $0 <ip:port> (ou WATCH_SERIAL=ip:port)"; exit 1; }
  11. OUT="$(mktemp --suffix=.png)"
  12. "$ADB" -s "$SERIAL" exec-out screencap -p > "$OUT"
  13. python3 - "$OUT" <<'PY'
  14. import sys
  15. from PIL import Image
  16. path = sys.argv[1]
  17. im = Image.open(path).convert("RGB")
  18. px = im.load()
  19. w, h = im.size
  20. total = nonblack = 0
  21. for y in range(0, h, 2):
  22. for x in range(0, w, 2):
  23. total += 1
  24. if px[x, y] != (0, 0, 0):
  25. nonblack += 1
  26. ratio = 100.0 * nonblack / total if total else 0.0
  27. print(f"capture {path} {w}x{h} : {ratio:.1f}% de pixels non-noirs ({nonblack}/{total})")
  28. if ratio == 0.0:
  29. print("-> écran entièrement noir : suspect (veille ? rendu Compose cassé ?)")
  30. PY