I did something similar to this recently - I had an Android app talking to a Windows PC (C# app). I used Websockets myself, I would recommend looking down this avenue - far more efficient/faster for bi-directional communication than HTTP.
If you chose this approach look for a Java Websocket implementation (perhaps this) and have the Raspberry Pi running a server that the Android app can connect and send messages to.