Android コードがあり、ボタンが押されたときに電話から加速度計データを取得しようとしています。ここに私のコード:
public class MainActivity extends Activity implements SensorEventListener{
private SensorManager aSensorManager;
private TextView ax;
private TextView ay;
private TextView az;
private float xa ;
private float ya ;
private float za ;
public Vector<Float> vecA_x;
private Vibrator v;
long[] pattern = { 0, 200, 500 };
long cap = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// dataBase = DataBaseManager;
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
ax = (TextView) findViewById(R.id.textView4);
ay = (TextView) findViewById(R.id.textView5);
az = (TextView) findViewById(R.id.textView6);
aSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
findViewById(R.id.button1).setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
start();
return true;
}
if(event.getAction() == MotionEvent.ACTION_UP){
//vibe(pattern);
onPause();
return true;
}
return false;
}
});
}
public void onSensorChanged(SensorEvent event){
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
float x=event.values[0];
vecA_x.addElement(x); // here the error
runAcce(event);
}
}
}
private void vibe(long[] p){
v.vibrate(p, -1);
}
private void runAcce(SensorEvent event){
float[] values = event.values;
xa = values[0]; gx.setText((xa) + "");
ya = values[1]; gy.setText((ya) + "");
za = values[2]; gz.setText((za) + "");
}
public void onAccuracyChanged(Sensor sensor, int accuracy){
}
private void start(){
aSensorManager.registerListener(this, aSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected void onResume(){
super.onResume();
}
@Override
protected void onPause(){
super.onPause();
aSensorManager.unregisterListener(this);
}
}
デバイスで実行すると、ボタンを押すと強制的に閉じられます。ここにエラーコードがあります:
float x=event.values[0];
vecA_x.addElement(x); // here the error
どうすればいいのかわかりません。つまり、ベクトルは動的に配列され、値をキャッチできるということです。私の質問: コードでベクトル化するセンサー データを取得する方法は? 何を書けばいいですか?私を助けてください。