안드로이드 개발 질문/답변
(글 수 45,052)
package Proximity.Sensor;
import android.app.Activity; import android.hardware.*; import android.os.Bundle;
public class ProximitySensorActivity extends Activity implements SensorEventListener { private SensorManager sensorManager; private Sensor ProximitySensor; private long lastTime; private float testNum;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); // TYPE_PROXIMITY 접근 센서 ProximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); }
@Override protected void onStart() { super.onStart(); if(ProximitySensor != null) { sensorManager.registerListener(this, ProximitySensor,SensorManager.SENSOR_DELAY_FASTEST); } }
@Override protected void onStop() { super.onStop(); if(sensorManager != null) { sensorManager.unregisterListener(this); } }
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) { if(event.sensor.getType() == Sensor.TYPE_PROXIMITY) { long currentTime = System.currentTimeMillis(); long gabOfTime = (currentTime - lastTime); if (gabOfTime > 100) { lastTime = currentTime; testNum = event.values[0]; if(testNum == 0.0){
이곳에서 실행
} else if(testNum == 5.0){
이곳에서 실행
} } } } }
안드로이드 개발 처음으로 시작해보고자 하는 학생입니다.
위의 소스는 근접센서 오픈 소스 입니다.
제가 궁금한 점은
바로 위에 빨간색 글씨로 쓰여있는 "이곳에서 실행"에 관한 문의입니다.
같은 패키지 파일안에 있는 mainTest.java 파일을 실행하려고 합니다.
mainTest.java 파일은 단순하게 이미지 뷰를 겹쳐서 두개 띄어 놓은 소스입니다.
결국은 모션이 동작하면 mainTest.java 첫번째 이미지 뷰만 보이고
또 동작하면 mainTest.java 두번째 이미지 뷰만 보이게 하려 합니다.
어떤 명령어를 써넣어야 할까요?
굉장히 어이없는 질문을 해서 죄송합니다. ㅡㅡ;;
2012.01.03 13:15:23
stratActivity(Intent intent) 로 호출하면 또 다시 센서 정보는 어케 불러오면 될까여?
-> startActiviy를 호출하면.. mainTest Activity가 호출되겠죠?
mainTest Activity의 onStart() 혹은 onResume() 에서
위의 샘플코드와 같이
sensorManager.registerListener(
this
, ProximitySensor,SensorManager.SENSOR_DELAY_FASTEST);
Listener 등록해주시고... onSensorChanged() 에서 원하시는 UI작업을 해주시면 되겠네요.
mainTest 클래스가 activity 를 superclass로 가지는 클래스인가요?
맞다고 가정을 하면.. stratActivity(Intent intent) 로 호출은 해줄수 있겠네요.
하지만, 호출된 액티비티에서또한 센서에 대한 정보를 받아와야 그다음 액티비티의 실행여부를 알수 있겠네요.
질문하신 내용이 특정상황(센서)에따라 특정화면을 보여주는 것이라면
ProximitySensorActivity에서 처리하는 방법이 조금 더 나아 보입니다.