가속도센서값을 배열로 받아서 함수를 써서 속도 거리 등으로 바꾸는 프로그램을 짜려고합니다.
현재는 OnCreate안에 각종 연산이나 함수로 나갓다 들어오게 하고있고
센서값이 저장된 배열이 OnCreate로 불러와져야 하는데 그부분이 잘 안되고 있습니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
az = new float[100000];
cur =0;
mSm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mTxtAccel2 =(TextView)findViewById(R.id.accel2);
mTxtAccel2.setText("가속2 = " + + az[1] + "\n ");
}
...
public void onSensorChanged(SensorEvent event) {
az[cur++] = event.values[2];
}
...
간단히 이런식의 소스코드입니다.
OnSensorChanged에서 az값을 출력하면 가속도센서값이 나오는데
OnCreate에서 az값을 출력하면 0.0값이 나옵니다.
OnCreate에서 az배열을 불러 쓰려면 어떻게 해야하나요 ?
넵.. OnSensorChanged에 넣어서 해보고 있는데 생각대로 잘 안되네요ㅠㅠ
05-04 19:21:42.000: E/AndroidRuntime(4452): java.lang.ArrayIndexOutOfBoundsException
05-04 19:21:42.000: E/AndroidRuntime(4452): at exam.xxg0503.Xxg0503Activity.onSensorChanged(Xxg0503Activity.java:207)
05-04 19:21:42.000: E/AndroidRuntime(4452): at android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:538)
05-04 19:21:42.000: E/AndroidRuntime(4452): at android.os.Handler.dispatchMessage(Handler.java:99)
05-04 19:21:42.000: E/AndroidRuntime(4452): at android.os.Looper.loop(Looper.java:130)
05-04 19:21:42.000: E/AndroidRuntime(4452): at android.app.ActivityThread.main(ActivityThread.java:3687)
05-04 19:21:42.000: E/AndroidRuntime(4452): at java.lang.reflect.Method.invokeNative(Native Method)
05-04 19:21:42.000: E/AndroidRuntime(4452): at java.lang.reflect.Method.invoke(Method.java:507)
05-04 19:21:42.000: E/AndroidRuntime(4452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
05-04 19:21:42.000: E/AndroidRuntime(4452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-04 19:21:42.000: E/AndroidRuntime(4452): at dalvik.system.NativeStart.main(Native Method)
이런오류가 떠버리네요 ㅠㅠ
... 왜 onCreate에서 setText를 하시려는건지 이해가 잘 안되네요.
그냥 onSensorChanged에서 setText하시고 onCreate에서는 그냥 mTxtAccel2를 생성만 하면 안되나요.
저렇게 하면 반드시 0.0밖에 나오지않습니다. 저 코드대로라면 onCreate상태에서 이미 초기화된 az배열값의 값을 가져오는거지 sensor값을 가져오는것도 아닙니다.
센서값을 가져오는건 onSensorChanged에 진입했을 경우에만 받아오기때문에 사실상 onCreate에서 가속2 = ~~~~~부분에서는 그냥 초기화된 배열값을 가져와서 엑티비티를 실행시킨것 그 이상도 이하도 아닙니다.