Skip to content

Releases: loreste/palephone

Android 0.1.6 — video backend wired

Choose a tag to compare

@loreste loreste released this 12 Jul 14:30

Full Android media wiring (emulator validated)

What works now

  • Install + launch (no crash)
  • PJSIP JavaVM + ClassLoader (worker-thread safe)
  • org.pjsip.PjCamera2 camera backend
  • Camera enumeration (Back camera on emulator)
  • SurfaceView overlays for local/remote video (PaleVideoOverlay)
  • Linked mediandk / EGL / GLESv2

Commits

  • Video JNI + ClassLoader + camera classes on main (a074a6b and parents)

Download

Still device-dependent

  • Real camera/video call on physical phones (grant CAMERA + RECORD_AUDIO)
  • Remote video surface binding during live calls (overlay is ready; end-to-end call not exercised on emulator)

Android 0.1.6 — full video call path

Choose a tag to compare

@loreste loreste released this 12 Jul 15:04

Full Android video call path (emulator validated)

What works now

  • Install + launch (no crash)
  • PJSIP JavaVM + ClassLoader (worker-thread safe)
  • org.pjsip.PjCamera2 camera backend
  • Camera enumeration (Back camera on emulator)
  • SurfaceView overlays for local/remote video (PaleVideoOverlay)
  • Remote/local window bind path in media state (bind_call_video)
  • Local preview start on outbound video calls
  • Answer with vid_cnt=1 for video-capable inbound calls
  • Linked mediandk / EGL / GLESv2 / OpenGL renderer
  • Android MediaCodec H.264 / VP8 / VP9 encode+decode

Commits

  • Full surface bind + preview + answer video (d7c49d5)
  • AtomicPtr Send/Sync fix for ANativeWindow (655cb0d)

CI

Emulator validation (API 34 AVD pale_api34)

  • adb install -r Pale.apk → Success
  • Launch: MainActivity displayed, process stays up
  • Logs: CameraManager registered, JavaVM + ClassLoader, video overlay attached
  • Android video capture initialized with 1 device(s): Back camera
  • Codecs: H.264 / VP8 / VP9 via AMediaCodec
  • PJSIP initialized successfully

Download

SHA256:

c82fa201639b94d55827f64a472b063237bd43ae99dd983cf7d9b18bde7317f1  Pale.apk

Still device-dependent / needs human validation

  • End-to-end video call on a physical phone (grant CAMERA + RECORD_AUDIO)
  • Two-party remote video frames during a live SIP session
  • Issue #1 stays open until @insxa confirms sideload works on their device

Android sideload APK 0.1.6 (launch fix)

Choose a tag to compare

Emulator-validated launch fix

Fixes crash-on-open found during Android emulator validation.

Changes (commit fe73a26)

  • Link libmediandk, libEGL, libGLESv2 (fixes UnsatisfiedLinkError)
  • Disable broken Android OpenGL video factory at PJSIP init (fixes SIGSEGV in and_factory_init)

Validation

  • Device: Android Emulator Pixel 6 / API 34
  • adb install success
  • Launch: process stays up, MainActivity focused, no FATAL after 20s+

Download

Please uninstall any older Pale build first if install is blocked (cert change may not apply; same sideload keystore).

Android sideload APK 0.1.6 (signed)

Choose a tag to compare

@loreste loreste released this 12 Jul 12:16

Signed Android APK for sideload

Resolves install failures when only unsigned APKs were published.

Download

  • Pale.apk (stable name) — install this file
  • Pale_0.1.6_android-signed.apk — same binary, versioned name
  • SHA256SUMS.txt — checksums

Why this exists

The CI/website builds were shipping unsigned release APKs. Modern Android (including Android 16 on Honor) refuses to install them. These artifacts are signed with the public Pale sideload certificate (v2/v3).

Install

  1. Uninstall any older Pale build that used a different signing cert.
  2. Enable Install unknown apps for your browser/Files.
  3. Open Pale.apk and install.
  4. Optional: adb install -r Pale.apk

Not for Play Store

This uses the public sideload keystore in packaging/android/. Production Play/MDM builds need a private keystore via CI secrets.

See ANDROID_SETUP.md and packaging/android/README.md.