



public class AcSensor implements SensorEventListener {
private SensorManager _sensorManager = null;
private float _x, _y, _z;
public void onCreate(Context c) {
_sensorManager = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE);//センサーマネージャを取得
onResume();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//今回は使用しません。
}
//アクティビティが動き始めたらリスナーを登録する
public void onResume() {
List<Sensor> sensorList = _sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);//センサーリストを取得
if (sensorList != null && !sensorList.isEmpty()) {
Sensor sensor = sensorList.get(0);
_sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);//リスナー登録
}
}
//アクティビティがポーズになったらリスナーを止める
public void onPause() {
if( _sensorManager == null ){
return;
}
_sensorManager.unregisterListener(this);
}
//センサーの値に変化があった時呼ばれる
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
_x = event.values[SensorManager.DATA_X]; // X軸
_y = event.values[SensorManager.DATA_Y]; // Y軸
_z = event.values[SensorManager.DATA_Z]; // Z軸
}
}
public float getX(){
return _x;
}
public float getY(){
return _y;
}
public float getZ(){
return _z;
}
//シングルトン
private static AcSensor _instance = new AcSensor();
private AcSensor() {
_x = _y = _z = 0;
}
public static AcSensor Inst() {
return _instance;
}
}
public class Player extends Task {
private final static float SIZE = 20; //自機の大きさ
private Circle _cir = null; //自機の円
private Paint _paint = new Paint(); //描画設定
private Vec _vec = new Vec(); //自機の移動ベクトル
public Player(){
_cir = new Circle( 240, 0, SIZE ); //(240,0)の位置にSIZEの大きさの円を作る
_paint.setColor(Color.BLUE); //色を青に設定
_paint.setAntiAlias(true); //エイリアスをオン
_vec._y = 2; //移動ベクトルを下に向ける
}
@Override
public boolean onUpdate(){
_vec._x = -AcSensor.Inst().getX(); //加速度センサーの情報を取得
_vec._y = AcSensor.Inst().getY();
_cir._x += _vec._x; //移動ベクトル_vecが指す方向に移動させる
_cir._y += _vec._y;
return true;
}
@Override
public void onDraw( Canvas c ){
c.drawCircle(_cir._x, _cir._y, _cir._r, _paint);
}
}
public class IrairaBarActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameSurfaceView(this));
AcSensor.Inst().onCreate(this); // センサー初期化
}
@Override
protected void onResume() { // アクティビティが動き始める時呼ばれる
super.onResume();
AcSensor.Inst().onResume();// 開始時にセンサーを動かし始める
}
@Override
protected void onPause() { // アクティビティの動きが止まる時呼ばれる
super.onPause();
AcSensor.Inst().onPause();// 中断時にセンサーを止める
}
}

Portions of this page are modifications
based on work created and shared by Google and used according to terms
described in the Creative Commons 3.0 Attribution License.
- Remical Soft -