달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
728x90
반응형
안드로이드 - 근접센서 간단 예제
 

원본데이터: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){
...

}
}
}
}
}

728x90
반응형
:
Posted by mapagilove