
Bubble is a free virtual bubble level for the Android platform.
Hold any of your phone's four sides against a vertical or horizontal object to test it for plumb/level, or lay it down on a flat surface to see a 360° level. Bubble automatically switches its orientation based on how you hold your phone. It measures angles up to 60°, accurate to within about 1 degree.

Use it to hang a poster, level a table, straighten a picture, check a wall for plumb, setup a tripod. Wherever you might need it, you can now have an accurate level with you.
Bubble can also do things that a traditional level can't do. If you need to hold it in an awkward position where you can't see the screen, turn on the beeper or the vibrate mode and you'll know when it's level. Or turn on voice mode and it will speak the angle to you.
Settings:- Show Angle: Displays the numeric value of the angle. If the phone is held flat then two angles are shown, one for the horizontal value and one for the vertical.
- Enable Voice: Speaks the angle out loud using the Text-to-Speech library, also available for free on the Android Market. (Not available when in 360° level mode.)
- Enable Beep/Buzzer/Light: All of these can be used to indicate when the phone is exactly level.
- Calibration: Independent calibration for each side of the phone.
Calibration:Every phone is slightly different. To compensate for this, Bubble can calibrate each side of the phone independently. Hold your phone up against a real bubble level, tip them together so they are both level, and choose Menu> Calibrate. Hold still for a moment and that side of the phone will become calibrated and read zero degrees.
Calibration can be reset to its defaults in the Settings menu.
Accelerometer Problems
Bubble uses your phone's accelerometer to determine the current angle. Dropping your phone can cause its accelerometer to malfunction, suddenly becoming extremely inaccurate or even stuck in one position. (I had this happen to me after I dropped my phone on pavement.) Luckily this does not necessarily mean your accelerometer is permanently damaged. A factory reset was able to correct this problem for me and for a number of other people who contacted me with similar problems.
If your angle is off by a large amount (mine was off by about 30 degrees) or stuck in one position with little or no change in value no matter how you hold it, your accelerometer is probably malfunctioning. Try testing other apps that use your phone's orientation, like Amazed, Wikitude, or Google Street View with compass mode enabled. If you find similar problems with other apps, you should definitely try performing a factory reset on your phone to correct the problem. T-Mobile support will walk you through this process.
Calibration API:If you are authoring an Android app that needs to know the device's exact orientation, you can use the calibration values mesaured by Bubble rather than having to build a similar calibration feature yourself.
Bubble uses a content provider to share its calibration values with other apps. It provides a single result set containing six values: pitch offsets for the left and right edges, roll offsets for the top and bottom edges, and both a roll and a pitch offset for the back of the device.
Sample Code:
Uri CONTENT_URI = Uri.parse(
"content://bz.ktk.bubble.orientationcalibrationprovider" );
Cursor cursor = managedQuery( CONTENT_URI, null, null, null, null );
if ( cursor == null )
return;
cursor.moveToFirst();
// Use these when the device is lying flat:
int basePitch = cursor.getColumnIndex( "base_pitch_delta" );
int baseRoll = cursor.getColumnIndex( "base_roll_delta" );
// Use these when the device is on an edge:
int left = cursor.getColumnIndex( "left_pitch_delta" );
int right = cursor.getColumnIndex( "right_pitch_delta" );
int top = cursor.getColumnIndex( "top_roll_delta" );
int bottom = cursor.getColumnIndex( "bottom_roll_delta" );
// Finally, apply these offsets to the reported angles:
if ( on_back ) {
pitch += cursor.getFloat( basePitch );
roll += cursor.getFloat( baseRoll );
} else if ( on_left_edge ) {
pitch += cursor.getFloat( left );
} else if ( on_right_edge ) {
pitch += cursor.getFloat( right );
} else if ( on_bottom_edge ) {
roll += cursor.getFloat( bottom );
} else if ( on_top_edge ) {
roll += cursor.getFloat( top );
}
Availability:Bubble is available for free on the Android Market.
Name: | Bubble |
Category: | Applications: Tools |
Price: | Free |
Scan this with the Barcode Scanner app on your Android phone and it will take you directly to Bubble on the Market.