Ps3 sixaxis dual shock.
You can charge them with your computer or dock/USB. You'll need a PC to get the controller's ID initially but doesn't have to be paired ever again. The controller can be recognized as a native android/Bluetooth controller by most devices, otherwise the sixaxis app is able to force it to work, and it also simulates touch controls through the controller for games that don't have gamepad support.
When I used six axis app I noticed the button mappings were incorrect, button_a and button_b are supposed to be cross/circle. By default a/b were square/triangle which is upside down for games like fpse. Switching them once in sixaxis fixes fpse/emu without having to remap each game.
The controller also does well in most n64 games with mupen64. Obviously KIGold and some other games which used the c-pad buttons for their logical positions will be an adjustment, but that's what the extra triggers are for!
And finally and most importantly, because the ps3 controllers are just so well built over many years of optimisations, its got a standard layout and as many buttons as you could ask for. It can also be used on your PC... all with a built-in rechargeable battery! I HATE SWAPPING BATTERIES!