Normalize values from different MEMS 3-axis accelerometers
You can use a few measurements to get that answer. To get +1 and -1, have the user set the phone on its back and face for a few seconds. To get 0, have the user drop it a foot or two (hold it in one hand and catch it with the other) or toss it in the air briefly. As long as there isn't much rotation, the accelerometers should zero out while it's in free-fall.

In general, if A is the measurement at 1G, B is the measurement at 0G, and X is the new measurement, the scaling factor would be:

$$\left(\frac{X-B}{A-B}\right) * 1G = G_{output}$$

Edit, adding rationale for formula:

We need to take one range of values, and stretch it onto another. We can do that with a scaling function. Additionally, we are not assuming that the value of 0 is necessarily going to be measured as a numerical 0. The readable values might be between 0 and 255, covering both positive and negative sensor values, for example. We deal with that using a translation function.

It might make more sense if you imagine it on a number line.

If B is your zero value, if you subtract that from your measured value, your new value (say Y) is now centered around the 'zero' value B.

$$X-B=Y$$

Now, you need to scale that into a range that you want. We measure the range of values that represents one unit in our new scale, "1 G". This is simply the measurement at 1G (sitting on the table) and 0G (freefall). You might call the units of this new number "counts per G".

$$A-B=\frac{counts}{G}$$

If you now take your translated value Y and scale it (units included as subscripts this time)

$$\frac{Y_{counts}}{(A-B)_{\frac{counts}{G}}}=\frac{Y_{counts} \times G}{(A-B)_{counts}}=\frac{Y}{(A-B)}G=\frac{(X-B)}{(A-B)}G$$

If the units help you analyze it then great, but like I said, I was just thinking about it like moving and stretching a number line.