There are several ways to connect your Smartphone with Arduino. You can use Wi-Fi shield, Bluetooth module or IOIO board. All these option need a cost. If you need simple one way wireless communication between Arduino and Android at no cost and speed isn’t an issue, this magnetic data transfer project is worth to try. Joe Desbonnet has built and implemented a very low bandwidth one way communication channel between an Arduino and an Android device using a meter of magnet wire, a resistor and diode. He was able to send data at 7 bits per second rate.
To build this project you need an Android phone or device which features a magnetometer (electronic compass), Arduino, 1 meter of enameled copper wire (magnet wire), Android ‘Tricorder’ app to detect magnetic fields from magnetometer, a 120 ohm resistor, and a diode (optional). Transmitting coil is attached to Arduino digital pin along with flyback diode and current limiting resistor. Arduino firmware uses digitalWrite() function to send data bits.
For encoding, the project uses NRZ (non return to zero) with a bit period of 140ms (about 7 bps). Since Arduino’s UART lower limit is 300bps and can not generate the signal, the system ‘bit banging‘ the signal in software. To decode the signal, you need Android app here.