After being inspired by this project to make a remote control for a Nexus One using three resistance values across pins 3 and 4 of the headset plug - 0 ohms for play/pause, 220 ohms for skip back, and 600 ohms for skip forward, I set out to make something similar. Since inline remotes are very common for Apple devices, I looked into modifying one to work with my Galaxy Nexus and came across this project.
Apple remotes have three buttons, volume up, play/pause, and volume down. While play/pause uses the same 0 ohms as Android, volume up and down use complicated signals. Fortunately for me, the method they use didn't look like it would interfere with the resistances for Android, and if it did, I could probably cut the traces.
I bought a cheap iLuv iEA15BLK inline remote from Amazon for $5.48 and cracked it open. It is ideal for this project with three discrete, surface-mount, pushbutton switches with just the right amount of room between them for two 0603 size surface-mount resistors. I ordered both from mouser.com for 5 cents each, not counting shipping. I used CR0603-FX-2200ELF and CR0603-FX-5900ELF.
With the resistors in the right places, the remote now works with my Galaxy Nexus to play/pause, skip forward, and skip back, as demonstrated in the video below. I also use JAYS Headset Control to add volume up and down using multiple taps of play/pause.
I've tested and confirmed it works on the Unlocked Galaxy Nexus, Verizon Galaxy Nexus, and original HTC EVO.
It also works on the Galaxy Note except that the fwd and back buttons actually make the volume go down and up, respectively. So if you build it for the Note, reverse the resistors and use a headset utility, like JAYS, to control fwd and back.
It doesn't work on the Xperia Play, HTC Incredible 2, Samsung Droid Charge, and Samsung Galaxy S Vibrant. It also no longer works on Apple devices...excellent.
(1) iLuv iEA15BLK
Things you will need:
Soldering iron and accessories
Something to hold the circuit board
Magnifying glass (optional, but those resistors are tiny)
This remote doesn't work with newer Android devices like the Nexus 6, 5X, or 6P. It turns out Google has created a specification: https://source.android.com/accessories/headset/spe... that has different resistance values and different functions. The resistor values are now 240 ohm and 470 ohm and they control volume rather than forward and back. The procedure is the same, just use the new resistance values in the correct places.
Spec v1.1 Parts: