The problem with phone-based levelling apps is that the case of the phone is neither perfectly flat nor necessarily parallel with the internal gyroscope. It certainly isn't on my Moto Droid with its sliding keyboard and slightly bulged battery cover. ;)
The internal gyro may be "perfectly" level but that's of little use if the back of the phone is non-flat and/or non-parallel to the gyro.
I use a cheap but well made bubble level. The key is to use it properly. Check the spot you're interested in, then spin the level 180 degrees and check again. Reversing the level doubles the visibility of any error. Only when the bubble is centered with the level pointing in EITHER direction is the surface level (along that orientation). Never trust any level without doing this. A decent bubble level used this way (as machinists do) can produce pretty accurate results. Expensive tools are good, good technique is better. :)
The internal gyro may be "perfectly" level but that's of little use if the back of the phone is non-flat and/or non-parallel to the gyro.
I use a cheap but well made bubble level. The key is to use it properly. Check the spot you're interested in, then spin the level 180 degrees and check again. Reversing the level doubles the visibility of any error. Only when the bubble is centered with the level pointing in EITHER direction is the surface level (along that orientation). Never trust any level without doing this. A decent bubble level used this way (as machinists do) can produce pretty accurate results. Expensive tools are good, good technique is better. :)