I liked Nikolaus answer.
I think the best way to connect is writing a TCP/IP server in the Arduino (Example can be found easily on the internet), and using or the Ethernet Shield (~10U$S) or the Wifi Shield(~10U$S). The TCP/IP server for both solutions uses the same code, the only difference is the INIT.
Mobility: If you need you Arduino to be on the move, buy the Wifi shield.
Static: IF you are static, and only want to control from the Android phone, use the ETH shield (Lower cost).
Adrian