Wednesday, February 25, 2009

Preschooler Updated

A minor update to Preschooler is now available on the Android Market.

Changes in Preschooler v1.0.2:
  • Now prevents the same side (left vs. right) from being chosen more than 3 times in a row.
  • Now less likely to change orientation unexpectedly, especially when the phone is held flat.
  • Improved touch feedback.
  • Release notes now available in the app's Help.

Thursday, February 19, 2009

Preschooler Released

Screenshot: Preschooler splash screen
Preschooler is a talking, educational flashcard game for Android that helps you teach your child the letters of the alphabet. It features text-to-speech and includes 26 photographs (mainly of animals) to represent each letter of the alphabet.


Two randomly-selected letters appear on the screen and the name of one of them is spoken out loud. Touch the correct letter and you will see a picture of an animal or object whose name begins with that letter. Touch the wrong one and you will hear that letter's name spoken.

Play the game together with your child, saying the letters and tapping the correct answers for them at first and encouraging them to do it themselves as they learn.

Click the trackball to make it say the current letter again. Type on the keyboard to jump directly to a letter and see its photo.

Designed to be toddler-friendly, the game works with the phone held in any direction. Hold it sideways — even upside down — and it will always spin around to face the right way.

Preschooler also uses visual and tactile feedback to help your child understand when and where they've touched the screen.


Preschooler uses Android's Text-to-Speech (TTS) library to provide all of its speech. This library is available for free from the Android Marketplace. If you don't already have it installed, Preschooler will help you download it the first time you start the game.


Preschooler has lots of configurable settings:
  • Five Difficulty Levels (NEW): Choose between 2, 4, 9, 16, or 25 letters visible at a time.
  • Button Lock (NEW): Disables the front buttons (Call, Home, Back, and Menu).
  • Voice selection: male or female voice
  • Letter mode: uppercase or lowercase
  • Background color: white or black
  • Volume override: allows you turn up the volume in the game without permanently changing your phone's volume.
  • Vibrate on Touch: option to give tactile feedback when the screen is touched.
  • Speak the Answer: option to speak the name of the object in the picture.
  • Play a Chime: option to play a sound as a reward when the right answer is chosen.


Screenshot: letters
Choosing a letter

Screenshot: touch feedback
Visual touchscreen feedback

Screenshot: photo of jellyfish
After picking the right answer

Screenshot: settings panel

Screenshot: photo credits
Photo credits


Preschooler is available for purchase on the Android Market now.

Name: Preschooler
Category: Games: Brain & Puzzle
Price: 99 cents

Scan this with the Barcode Scanner app on your Android phone and it will take you directly to Preschooler on the Market.

Wednesday, February 18, 2009


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.

  • 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.


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 )


// 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 );


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.