안드로이드 개발 질문/답변
(글 수 45,052)
ㅠㅠ
계속 찾는데; 제가 바보인지 잘 모르겠네요
보시면 알겠지만 onSensorChanged 에서 받은 정보중 방향 x 값을 test 라는 전역변수에 넣어서 create 에서 불러서 쓰고싶습니다.
현재 create에서 불러들이면 0.0 으로만 인식되더라고요 ㅠㅠ
제가 굳이 이것을 하는 이유가 저렇게 해서 자신의 방향을 알고 이것을 다른 메소드에 보내서 자신과 물체의 방향과 카메라의 방향을 서로 비교해서 같을 시에 화면에 무언가 보이게 할려고합니다 ㅠㅠ (즉 증강현실. 대구쪽에 핸드폰을 갔다대면 대구라고 핸드폰에 보이도록.)
너무 어렵습니다 ㅠㅠ 조금이라도 돠주신다면 저도 반드시 나중에 다른분들을 도와드릴께요!! 실력이 는다면;;
계속 찾는데; 제가 바보인지 잘 모르겠네요
public class ProximitySensorTestActivity extends Activity implements SensorEventListener {
SensorManager sensorManager = null;
//for accelerometer values
TextView outputX;
TextView outputY;
TextView outputZ;
//for orientation values
TextView outputX2;
TextView outputY2;
TextView outputZ2;
TextView ee;
static float test;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
//just some textviews, for data output
outputX = (TextView) findViewById(R.id.TextView01);
outputY = (TextView) findViewById(R.id.TextView02);
outputZ = (TextView) findViewById(R.id.TextView03);
outputX2 = (TextView) findViewById(R.id.TextView04);
outputY2 = (TextView) findViewById(R.id.TextView05);
outputZ2 = (TextView) findViewById(R.id.TextView06);
ee = (TextView) findViewById(R.id.TextView00);
ee.setText(Float.toString(test));
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
super.onStop();
sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION));
}
public void onSensorChanged(SensorEvent event) {
synchronized (this) {
switch (event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
outputX.setText("가속x : "+Float.toString(event.values[0]));
outputY.setText("가속y : "+Float.toString(event.values[1]));
outputZ.setText("가속z : "+Float.toString(event.values[2]));
break;
case Sensor.TYPE_ORIENTATION:
outputX2.setText("방향x : "+Float.toString(event.values[0]));
outputY2.setText("방향y : "+Float.toString(event.values[1]));
outputZ2.setText("방향z : "+Float.toString(event.values[2]));
test=event.values[0];
Log.d("test","test"+ Float.toString(test));
break;
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
}보시면 알겠지만 onSensorChanged 에서 받은 정보중 방향 x 값을 test 라는 전역변수에 넣어서 create 에서 불러서 쓰고싶습니다.
현재 create에서 불러들이면 0.0 으로만 인식되더라고요 ㅠㅠ
제가 굳이 이것을 하는 이유가 저렇게 해서 자신의 방향을 알고 이것을 다른 메소드에 보내서 자신과 물체의 방향과 카메라의 방향을 서로 비교해서 같을 시에 화면에 무언가 보이게 할려고합니다 ㅠㅠ (즉 증강현실. 대구쪽에 핸드폰을 갔다대면 대구라고 핸드폰에 보이도록.)
너무 어렵습니다 ㅠㅠ 조금이라도 돠주신다면 저도 반드시 나중에 다른분들을 도와드릴께요!! 실력이 는다면;;




짧은 제 생각엔.. OnResume() 에서 SensorManager에 Listener를 등록하고있습니다. Accelerometer, Orientation 센서를..
근데 Activity의 생명주기를 보면 OnCreate 다음에 OnResume가 오기때문에
test라는 전역변수에는 OnCreate시에는 초기화 값인 0.0 밖에 들어가지 않고.. OnResume 이후 Listener 등록후에 SensorChanged 가 오고
값이 test에 저장될것으로 보입니다~~