가속도센서값 중 Z축값을 배열에 하나하나 저장하고싶습니다.
예를들어 배열을 a[]로 지정했으면
a[1] = 9.621 a[2]=9.801 a[3]= 10.256 a[4] = 8.514 .....
이런식으로 저장하려합니다.
그런데 가속도센서값을 받아오는 코드는
itt = event.values[2]; 이런식이라
배열에 하나하나 저장 되는것이 아니라 x축은 v[0], y축은 v[1], z축은 v[2]
이렇게 값이 계속 그곳에 바뀌어 들어오네요
z축 가속도 센서값을 하나의 선언된 배열에 한칸한칸 계속 저장되는 방법이 궁금합니다.
float[] a = new float[???];
int cur=0;
//받는부분
a[cur++] = event.values[2];
음.. 배열도 모르시는 것인지.. 기본이 안되신거 같다고 생각되는데
제가 난독증일까요..?
implements SensorEventListener{
센서 리스너 콜백으로 주셨을 것이 아닙니까..
그럼 일정 시간 간격으로 event에 xyz 축 센서 값을 담아서 함수를 호출해 줍니다.
그러니
public void onSensorChanged(SensorEvent sensorEvent) {
해당 함수 안에서 원하는 배열에 저장을 하면 됩니다.
지역변수 말고 클래스에 변수를 만들어 놓고 쓰시던가 하세요..
public class act extends Activity implements SensorEventListener{
float[] a;
int cur;
protected void onCreate(Bundle savedInstanceState){
a = new float[1000000];
cur = 0;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) { }
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
a[cur++] = event.values[2];
}
}
요런식으로요..
시간을 정하시면 됩니다. 타이머를 두고 몇초마다 한번씩 값을 읽어봐서 저장하면 되는 것이죠. 시스템 타이머 쓰시면 0.몇초 단위로도 할 수 있겠고요. 지정된 시간이 되면 배열에 집어넣고 인덱스 변수를 하나 증가시키고, 또 다음 시간이 되면 그 과정을 반복하는거죠.