[Android Q&A, Help & Troubleshooting] SamsungPisser:
I now setup Asterisk as MediaProxy for the integrated SIP. This has two main advantages.

1. I use GSM Codec which uses (with overhead and so on) transmitting 4,48 KB/s (~36 KBit/s) and receiving 3,65 KB/s (~30 KBit/s), don't know why there is so much discrepance. With OpenVPN in between there is transmitting 6,13 KB/s (~50 KBit/s, Overhead 38 %) and receiving 5,5 KB/s (44 KBit/s, Overhead 46 %) on the line.

2. Android integrated SIP often uses wrong IP in the RTP header, so there is no audio. Asterisk corrects this.

With Asterisk I need no App on my Android device as I thought to correct the wrong IP issue.

My Asterisk is in my home network, not reachable from the Internet, only via VPN, so I did not take much measures to secure it. Please consider this when you copy my setup.

I made the effort to compile AMR into Asterisk because I hoped that it would use less bandwith than GSM. But you can save the effort. It uses exactly the same as GSM. Android integrated SIP support GSM and GSM-EFR. When you Wireshark you see that GSM and not GSM-EFR is selected/used. But the highest GSM profile is used, so I don't know if it is in fact GSM-EFR. GSM-EFR and AMR at this bitrate have the same quality http://en.wikipedia.org/wiki/Enhanced_full_rate

I use a Fritzbox where I register with asterisk as softphone, Fritzbox could also be your VOIP provider where you want to connect to.

Here the sip.conf

[ext1]
type=friend
context=meinKontext
host=dynamic ; Android SIP must register with Asterisk
nat=yes	; Even with VPN and no NAT present option needs to be set, corrects problem that integrated SIP chooses wrong IP in the RTP Stream
secret=YOURPASSWORD
dtmfmode=rfc2833
pedantic=no ; Offcially useless here, however needed here that calls can be terminated before other part has hung up, because Android integrated SIP does not correctly send cancel request
disallow=all ; Forces the usage of GSM Codec
allow=gsm ;

[fritzbox620]
type=peer
host=192.168.178.1
defaultuser=620
secret=YOURPASSWORD
insecure=invite,port ; Fritzbox has no password for Asterisk so invite must be allowed without credentials, port is needed because otherwise sometimes it will fail
dtmfmode = rfc2833
context=fritzbox620
nat=no ;Change to yes when you use an VOIP provider
fromdomain=fritz.box ; otherwise Asterisk would use its own domain
fromuser=620 ; otherwise asterisk would use the extension name
directmedia=no ; making transcoding possible

[general]
;Here are a lot of settings, please edit or add only the relevant
context=unauthenticated
register => 620:YOURPASSWORD@192.168.178.1
allowguest=no
pedantic=no
srvlookup=yes

And now extensions.conf for the dialplan

[meinKontext]
exten => _[0-9*].,1,Answer()
same =>n,Ringing()
same => n,Dial(SIP/${EXTEN}@fritzbox620)

;exten => _[0-9*].,1,Dial(SIP/${EXTEN}@fritzbox620) ;Would be better, because then you would see how long your call lastet, but integrated SIP in Android has a bug, when the called answers you hear for about 3 seconds another dial tone and now you have a delay of 3 seconds which makes talking very annonying, however this delay goes away within the first minute of the call, but still above solution avoids it. Compared to Bria VOIP client there is still a minimal delay on receiving site, but not on sending, but it is acceptable

[fritzbox620]
exten =>_[0-9*].,1,Dial(SIP/ext1)
exten => _[s],1,Dial(SIP/ext1) ;Accept calls where dialed number is unclear