It depends on the actions you need, personally I don't think there's a solution that will let you make a solid platformer with intuitive controls using touch controls, it will never be like using a keyboard or a gamepad.
You must strip down your controls, for example a run button is very messy to use especially if you need to press another action button with it like jump.
For movement, I think positioning a low opacity circle with a knob in the center to the start touch position, then moving the character in the angle and velocity according to the knob position, in any case, if you're going for a virtual pad or just buttons, my advice is to capture the touch start of a button and release the state on touch end and not using is touching object, because you'll be limited to the buttons image area and a slight nudge outside of it will stop the character's movement and that is very annoying.
I think you can also you the drag behavior and cancel both X/Y dragging, then using the is dragging condition will keep it's state when dragging outside of the image bounds.
I also recommend giving up on the up/down direction for movement or actions, not very intuitive.
Slower moving speed for the character, for a wider user input time-frame.
Most mobile platformer games are using auto-move for the character, the main reason is crappy touch control, but that's a way to go.
I'm making a platformer game for PC, I didn't even consider porting it to android/ios just because of the touch limitation, that and lots of optimizations, but mostly the touch
This is my game, Bad Pad,
I did though make another platform based android game recently, based on Bad Pad but with limited controls and different gameplay.
I used auto-run in one directions, jump and double jump are triggered by touching anywhere on the screen (except for other UI buttons), Air diving and Jetpack have designated buttons on the bottom left and right, appears only after purchasing the upgrade.
There are shooting sequences where I spawn fireballs at the direction of the touch.x.y, again touch anywhere on the screen, in this sequences the player can't move the character, it is locked in on a predefined path, diving and jetpack are also not use-able and the buttons are hidden.
The boss levels are little bit less intuitive, you press anywhere on the screen to move there and press on the boss the shot at it, the problem is that your hand can sometime cover crucial parts of the screen while touching, so I had to make the boss levels a bit easier.
You can see it here,
It's still marked as beta, I'm releasing in a few days, just missing a few buttons graphics.