Is there a compass sensor or a software emulating a compass in each Android device?

Or maybe is there a solution for it problem starting from 4.0 on?