I have only tested it with a Samsung Galaxy S2, and am not sure if it will work or be safe with any other models, although I have reason to believe it should work with many Android based phones, as the operating system should be looking for the same commands, assuming that the hardware supports it (that the phone has a 4 pole connection in its headphone socket).
Since upgrading my phone to the latest version of Android (Ice Cream Sandwich, v4.0.3) the controls have changed! My cord now does nothing when the button is pressed, volume up on skip track back, volume down on track forward. If anyone else finds this problem with their phone please leave a comment below with the phone version and operating system version. I am working on a new cable, but I have to try to find the new values to perform the desired functions!
I have tried resistance values from 0 ohm to 1200 ohms and have only been able to increase or decrease the volume on my Samsung Galaxy S2 running Android 4.0.3.
Decreasing volume occurs between 300 - 720 ohms
Increasing volume occurs between 150 - 290 ohms
The original values (used in this Instructable) should still work with earlier versions of Android, and possibly on other phones.
I don't think that this it will work with iPhones, as they look for a series of impulses rather than varied resistance as inline media controls.
I also need to give credit to WideBread.com and author Rich Kappmeier for doing the leg work on this one. Without his article
I would not have been able to get very far with my idea (which as it turns out wasn't very original, at least in this phase).
At one point I forgot to take photos so I made a second cable to get photos of the final steps, thus the different cord colour.
1 x 3.5mm 4 pole headphone jack
1 x 3.5mm stereo headphone jack
4 core cable
1 x 220 ohm resistor
1 x 620 ohm resistor
1 x push button (Play/Pause)
1 x 2 way switch (Skip Forward/Back)
Short length of wire
Sugru or other joining/finishing product
Step 1: Striping the wire
My cable was very well insulated against chemical corrosion, far more than it needed to be for this purpose, which meant it was fairly hard to strip.
The outer jacket was a rubbery plastic which my wire stripper had trouble getting through without destroying the wire inside. After a few attempts I ended up using a sharp blade and bending the cable away from the cut and using the extra tension on the side facing up to make careful cuts till I got to the inner wires.
Only strip one end of your wire at this point. if you make a mistake you will need to cut it off and start again, making your cable shorter each time. Make sure you have plenty of excess cable and cut to length when you need to strip the other end.
This first end is going to be used for the 4 pole 3.5mm jack as it is the most tricky end of the cable, but more on that in the next step.