0
背後に使用されているこれは、私が電話の揺れをキャプチャするために使用していたコードです:がどのようなロジック、この加速度センサーリスナー
public void onSensorChanged(SensorEvent event) {
Sensor mySensor = event.sensor;
if (mySensor.getType() == SensorManager.SENSOR_ACCELEROMETER) {
long curTime = System.currentTimeMillis();
// only allow one update every 100ms.
if ((curTime - lastUpdate) > 100) {
long diffTime = (curTime - lastUpdate);
lastUpdate = curTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
float speed = Math.abs(x+y+z - last_x - last_y - last_z)/ diffTime * 10000;
if (speed > SHAKE_THRESHOLD_HIGH) {
// yes, this is a shake action! Do something about it!
handshake_score.setText(String.valueOf(speed));
new AlertDialog.Builder(Handshake.this)
.setCancelable(true)
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle("noo")
.setMessage("too much")
.setPositiveButton("OK!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
})
.show();
last_x = x;
last_y = y;
last_z = z;
} else if (speed > SHAKE_THRESHOLD_PASS) {
// yes, this is a shake action! Do something about it!
handshake_score.setText(String.valueOf(speed));
sensorMgr.unregisterListener(this);
new AlertDialog.Builder(Handshake.this)
.setCancelable(true)
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle("HAHAA!")
.setMessage("good")
.setPositiveButton("OK!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
})
.show();
finish();
} else if (speed > SHAKE_THRESHOLD_SMALL) {
// yes, this is a shake action! Do something about it!
handshake_score.setText(String.valueOf(speed));
new AlertDialog.Builder(Handshake.this)
.setCancelable(true)
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle("boo")
.setMessage("not enough")
.setPositiveButton("OK!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
})
.show();
last_x = x;
last_y = y;
last_z = z;
}
last_x = x;
last_y = y;
last_z = z;
}
}
}
私は何をしたいのか、それは持ち上げに応答するように、ハンドシェイクを真似ていますあなたが横のスクリーンに直面しているかのようにそれを上下に動かしているときに電話を上下に動かす。
このコードは、長さ軸を中心に電話を回すように電話機をねじることに反します。
このコードで使用されている座標x、y、zの背後にある論理を説明する人がいますか?携帯電話の場所の点でこれらはどこですか?そして、手でそれをねじるのではなく "ハンドシェイク" 。
このようなコードのアイデアですか?