To crudely summarise, say you've got an accelerometer and it outputs integer values from 0 to 255. You have some calibration that turns that into physical units, say m/s^2. You still only have 256 possible values. Maybe they cover -20 to 20m/s^2, so they're about 0.156m/s^2 apart (-20m/s^2, -19.844m/s^2...). Look at the values you've collected over some set of samples and take the difference between close ones, you'll see +/0.156, +/-0.312 etc. On a calibrated device that 0.312 will not be exact, say it's 0.312445, this value will be different between phones. With the gyroscope you've got a slightly more complex scenario with 6 (I think, guessing it's symmetric) independent calibration values that can be extracted in a similar way. Because the devices are accelerometers the method works equally well stationary (values zero with noise), in steady motion (values zero with noise again) and constant acceleration (constant value with noise), but a bit of changing acceleration, unless incredibly jerky, is not a problem.