androidで加速度センサーの値を取得
値の位置による意味を理解しないといけない
ものすごい速度の値が変化したのはいいのですが、値のどれがどの方向とかを上手く理解しないと何もできない感がある
勉強してないからこのへんはよくわからない
実装
Activity
package jp.mshige1979.app.samapleappsensor2; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener{ private SensorManager manager; // 加速度センサー private Sensor accessSensor; // 表示用 private TextView textview; private TextView textview2; private TextView textview3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //センサーマネージャを取得 manager = (SensorManager) getSystemService(SENSOR_SERVICE); //センサマネージャから加速度センサーを指定 accessSensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); textview = (TextView)findViewById(R.id.textview); textview2 = (TextView)findViewById(R.id.textview2); textview3 = (TextView)findViewById(R.id.textview3); textview.setText("加速度センサー1 = "); textview.setText("加速度センサー2 = "); textview.setText("加速度センサー3 = "); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // accuracy に変更があった時の処理 } @Override public void onSensorChanged(SensorEvent event) { Sensor sensor = event.sensor; float[] values = event.values; long timestamp = event.timestamp; // 温度センサー if(sensor.getType() == Sensor.TYPE_ACCELEROMETER){ // 温度 Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER1 = " + String.valueOf(values[0])); Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER2 = " + String.valueOf(values[1])); Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER3 = " + String.valueOf(values[2])); textview.setText("加速度センサー1 = " + String.valueOf(values[0])); textview2.setText("加速度センサー2 = " + String.valueOf(values[1])); textview3.setText("家族土センサー3 = " + String.valueOf(values[2])); } } @Override protected void onResume() { super.onResume(); // リスナー設定 manager.registerListener (this, accessSensor, SensorManager.SENSOR_DELAY_FASTEST); } @Override protected void onPause() { super.onPause(); // リスナー解除 manager.unregisterListener(this,accessSensor); } }
結果
※3つ目は見逃してwwwくださいm(_ _)m
所感
値の取得が速いのでゲームアプリなどを利用するのに使える感はある。
その前に加速度の値の意味を理解しないといけない
最初は参考書とかを見ながら見よう見まねでゲームを作ってから意味を理解してみるのもいいかも…