It sounds like your question is, how do you go from a UART device to something that can be plugged into a microphone jack.
What protocol does a headphone jack use? should help you understand what is being done on the existing device that you are talking about.
There is still a link missing for you though, that is the ability of turning UART into the audio itself. The easiest way to do this is to buy a microcontroller that you will place between the UART device and the Android device. All the microcontroller will do is read in any UART data and then convert it to what ever form you want the headphone jack to receive. You may also need to implement some handshaking between the microcontroller and the phone in order to know that the device you think is plugged in.
There is also the issue of getting power to the device. A headphone jack is in no way designed to be used as a power source. The easiest method would be to just slap a battery on the device. If you wanted to, you could potentially do some clever tricks with playing audio at full volume for some period of time and have your device charge up a capacitor. You could then run your device off of the power stored in the capacitor. This sounds rather tricky to me though and would personally just go with a battery.
I don't know if there is a formal definition. But consider this:
An RS232 character is about 10 symbols long (start, 8 bits, stop ).
If you start decoding halfway through a symbol, and your clock is 5% off, after 10 symbols you will have drifted off target by 50% of a symbol width; i.e. 5% is the maximum possible tolerable error. And that assumes the other end is clocked correctly; if it had an error in the other direction, you would decode it incorrectly.
So a 2.5% error in opposite directions at each end would also be on the edge of failing.
Signal integrity problems caused by cable length will only make this worse.
So practically, an error below 5% will work with a "good" clock at the other end and a very short cable; for robust communications you want a clock error below 2%, and better than that to support long cables.
Now find out what your ATTiny is capable of, at different baud rates and CPU clocks...
Best Answer
No, UART and RS-232 are not the same.
UART is responsible for sending and receiving a sequence of bits. At the output of a UART these bits are usually represented by logic level voltages. These bits can become RS-232, RS-422, RS-485, or perhaps some proprietary spec.
RS-232 specifies voltage levels. Notice that some of these voltage levels are negative, and they can also reach ±15V. Larger voltage swing makes RS-232 more resistant to interference (albeit only to some extent).
A microcontroller UART can not generate such voltages levels by itself. This is done with help of an additional component: RS-232 line driver. A classic example of an RS-232 line driver is MAX232. If you go through the datasheet, you'll notice that this IC has a charge pump, which generates ±10V from +5V.
(source)