The APRSdroid application provides APRS functionality for Android Phones. An installable .apk as well as the source code are freely available from the developer's site.
The app enables sending and receiving APRS beacons and messages via a data (internet) connection to the APRS-IS network. Map data is also downloaded from the internet. (This mode requires that you have cellular data coverage.)
The app can also generate AFSK tones for sending ARPS beacons and messages via a connection from your phone's earphone jack to your HT's microphone. Note VOX capability is needed. The ability to decode AFSK tones isn't implemented yet, so it's not a complete software TNC replacement. However, it's on the requested feature list.
I was successful in making a straight-through connection from my Samsung Galaxy Nexus to my Wouxun KG-UV2D. My Yaesu VX-8DR had no problems decoding the packets from APRSdroid via the Wouxun. I need to go out to some open spaces to test how well it will be picked up by actual APRS digitpeaters. It can be pretty hard to get APRS beacons out on NYC streets. In general 2 meters can be pretty spotty on the streets in NYC. 70cm does a much better job of being reflected off of buildings, which is expected.
An alternate version of the application that uses pre-downloaded offline maps is available. This can be handy in places where there is no cellular coverage. I was able to get APRSdroid loaded and running on the Kindle Fire using the offline maps version (OSM). The Kindle Fire is really too limited of a device to be useful for APRS since it doesn't have GPS or cellular data service. However, it does have a 7" screen which would be useful for
iPhone users: I've seen similar apps listed in the app store, but I have no experience with them.