I use Endomondo, and you can create custom interval workouts using either distance-based or time-based intervals, for 3 different levels of intensity. I do have the Pro version of the phone app though, so I'm not sure if this function is on the free version or not, but the Pro version goes on sale quite often.