# androidsip
androidsip is a small SIP softphone for Android. The native SIP engine is baresip, built as Android static libraries and linked into the app with CMake, with a modern UI in Kotlin and Jetpack Compose on top.
It does the classic softphone things: register a SIP account, make and receive calls over UDP, TCP or TLS, mute, hold, speaker, DTMF tones, and also call transfer. It handles sip:, sips: and tel: links directly, so tapping a phone number can go straight into the app. There’s a recent-calls history, your SIP password gets stored encrypted through the Android Keystore, and when you walk out of wifi range it re-registers itself on mobile data. That last one sounds like a small thing, it was not.
Under the hood it’s layers: the Compose UI on top, a Kotlin wrapper around the SIP logic in the middle, and a JNI bridge down to the native C libraries (baresip, libre, librem, OpenSSL). The scope is narrow on purpose, one account, make calls, receive calls. I’m not trying to build a whole phone system here, just a phone.
To be honest about the limits: incoming calls only work while the foreground service is running, there’s no Android Telecom integration yet, and it doesn’t start itself after a reboot. So it won’t replace your normal dialer, but for a work SIP account or a home PBX it does the job fine.
It’s still an early personal project and I won’t pretend it’s polished. But the core calling works, and if you want to experiment with baresip on Android or need a small SIP client that’s easy to understand, it’s a good base to start from. Code is on my forge.
~$