원본데이터:http://cafe418.daum.net/_c21_/bbs_search_read?grpid=ygGb&fldid=JgGj&contentval=0000xzzzzzzzzzzzzzzzzzzzzzzzzz&nenc=&fenc=&q=%C0%CF%C1%A4%B0%FC%B8%AE&nil_profile=cafetop&nil_menu=sch_updw
◆ SensorManager 인스턴스 이용 : 시스템 서비스이므로 getSystemService() 메서드 이용해서 얻을 수 있다. - SensorManager sensor = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
◆ Sensor 클래스에는 기기에 장착가능한 여러 센서들의 종류가 정의되어 있다. - TYPE_ACCELEROMETER : 3차원 중력 가속도를 측정하는 가속도 센서 - TYPE_GYROSCOPE : 회전운동 센서 - TYPE_LIGHT : 빛의 밝기를 측정하는 조도 센서 - TYPE_MAGNETIC_FIELD : 3차원 자기장 세기를 측정하는 지자기 센서(나침반) - TYPE_ORIENTATION : 다른 장치들과 결합해 기기의 현재 방향결정 - TYPE_PRESSURE : 압력 센서 - TYPE_PROXIMITY : 어떠 물체와의 거리를 측정하는 근접 센서 - TYPE_TEMPERATURE : 온도를 측정하는 온도 센서 - TYPE_ALL : 모든 센서
◆ 참조할 센서의 Listener 등록 - sensor.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); - 센서가 존재하고 활성화 가능하면 true 리턴
◆ 측정값 참조 - Listener등록 후 센서의 측정값을 참고하기 위해서는 SnesorEventListener 인터페이스의 주요 메서드를 구현해야 한다. - onSensorChanged(SensorEvent event) : 측정값이 변경될 때 호출 - onAccuracyChanged(Sensor sensor, int accuracy) : 센서의 정확도가 변경될 때 호출 */
ProximitySensorEx.java -------------
package aa.test; import android.app.Activity; import android.graphics.*; import android.hardware.*; import android.os.Bundle; import android.widget.*;
public class ProximitySensorEx extends Activity implements SensorEventListener { private SensorManager sensorManager; private Sensor ProximitySensor; private TextView txt1, txt2; 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 [안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonStart() { // TODO Auto-generated method stub super.[안내]태그제한으로등록되지않습니다-xx[안내]태그제한으로등록되지않습니다-xxonStart(); if(ProximitySensor != null) { sensorManager.registerListener(this, ProximitySensor,SensorManager.SENSOR_DELAY_FASTEST); } } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); if(sensorManager != null) { sensorManager.unregisterListener(this); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub
} @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub if(event.sensor.getType() == Sensor.TYPE_PROXIMITY) { long currentTime = System.currentTimeMillis(); long gabOfTime = (currentTime - lastTime); //Toast.makeText(this, currentTime + " " + lastTime, 4000).show(); if (gabOfTime > 100) { lastTime = currentTime; testNum = event.values[0]; //(int)proSensor.getMaximumRange(); txt1.setText("반환값 : " + testNum);
if(testNum == 0.0){ ...
}else if(testNum == 1.0){ ...
} } } } } |