2011년 3월 24일 목요일

Pencil - an android app for kids

Kids like to write letters on the phone using their finger.
They are also enjoy listening their voice from machine.
The kids learning letters can study and enjoy at the same time.

[feature]

select letter : alphabet(capital) / alphabet(small) / numbers / korean
writing : watching the order of letters writing first.
               writing by finger(color and size can be changed by user)
               listening native pronunciation, recording user's
               Praise stamp will come out after writing
watching : watching the order of letters, listening pronunciation
               changing the playing speed(fast/normal/slow)
playing : searching for the pronunciation listening
               setting order ( sequential / random )


2011년 3월 10일 목요일

Android ACCELEROMETER sensor sample

public class ShakeActivity extends Activity implements SensorEventListener {

private static final int SHAKE_THRESHOLD = 800;
private long lastTime;
private float speed;
private float lastX;
private float lastY;
private float lastZ;
private float x, y, z;

private SensorManager sensorManager;
private Sensor accelerormeterSensor;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerormeterSensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

}


@Override
public void onStart() {
super.onStart();

if (accelerormeterSensor != null)
sensorManager.registerListener(this, accelerormeterSensor,
SensorManager.SENSOR_DELAY_GAME);
}


@Override
public void onStop() {
super.onStop();

if (sensorManager != null)
sensorManager.unregisterListener(this);
}


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}


@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
long currentTime = System.currentTimeMillis();
long gabOfTime = (currentTime - lastTime);

if (gabOfTime > 100) {
lastTime = currentTime;


x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];


speed = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime * 10000;

if (speed > SHAKE_THRESHOLD) {
Log.d("TAG","##################### shaked #####################");

}
lastX = event.values[SensorManager.DATA_X];
lastY = event.values[SensorManager.DATA_Y];
lastZ = event.values[SensorManager.DATA_Z];
}
}
}

}