Both bluetooth and web server was mentioned earlier.
I would first go the web-server route.
That way I could use any framework (like bootstrap or materialize css) to quickly create a web-gui that works in most modern browsers, on almost any screen size, on Windows, Android, iOS, MacOS, Linux etc. without much trouble.
Then I'd use server-side scripts (php/nodejs/python) to write a simple endpoint that translates between web-ui and the server-side shell.
I'd use jquery/ajax and html form-controls to submit requests, and to echo stdout/stderr to the web-gui without reloading the entire page every time.
This way the web-gui can control anything on the Pi, and thus, other gadgets over gpio/spi/i2c/etc.
I could even pipe scripts (shell/python/php/etc) or commands to IoT devices anywhere in the world over ssh.
Going this way I could even write platform-specific apps at a later time, that talks to the same endpoint that I wrote for the web-gui.
Like someone else mentioned, you should be sure you look at the different protocols used by all the devices you need to control.
Opto-isolators can easily be used to switch almost anything on/off with very simple scripts using gpio.
http://rpi's-ip-address/turn-on-the-light
and the rpi recieves that request and, for example, turns on the light. I infer from your question that you already know how to program an android app (correct me if I am wrong), so you'd only need to figure out how to continued in next comment