Wear SIP: audio routing, stock-style dialer, DTMF, incoming-call handling, telecom scaffold

- AudioRouteManager: route to onboard speaker when no BT headset is
  connected, BT SCO when one is; set MODE_IN_COMMUNICATION + focus.
- aaudio: build with AAUDIO_PERFORMANCE_MODE_NONE so Android routing
  (speakerphone) is honoured instead of being bypassed by low-latency.
- DialerScreen: restyled to a stock-dialer layout (large number display,
  3x4 keypad with sub-letters, green call FAB, backspace, recent chips).
- InCallScreen: added DTMF keypad (sendDigit) for voicemail/IVR.
- WearBaresipService: on incoming call, wake screen + vibrate + bring
  activity to foreground so Answer/Decline is visible.
- Fixed dial normalization (bare extension -> full SIP URI with domain)
  and the uap parse in uaEvent so defaultUap is set and calls connect.
- config.static: load g711/opus codecs to resolve 488 Not Acceptable Here.
- Telecom scaffold (experiment): PhoneAccount + ConnectionService handed
  incoming calls via addNewIncomingCall to test stock Wear dialer pickup.
- Submodule libbaresip-android rebuilt with g711/opus/aaudio changes.

Verified: assembleDebug green, installs and registers on Galaxy Watch,
incoming call event fires and is handled without crashing.
This commit is contained in:
2026-08-20 22:06:15 +01:00
parent a849d98b5e
commit 15e266cb43
16 changed files with 1599 additions and 136 deletions

View File

@ -5,7 +5,7 @@ composeBom = "2026.06.01"
coreKtx = "1.19.0"
exifinterface = "1.4.2"
fragmentKtx = "1.8.9"
gradleVersion = "9.3.1"
gradleVersion = "9.1.0"
kotlin = "2.4.10"
kotlinStdlibJdk8 = "2.4.0"
android = "2.4.10"