본문 바로가기
개발/android

오로지 기울기 센서로만 가로세로 모드 체크하기

by 매몰 2015. 2. 23.

 

 

 

단말기를 가로 또는 세로모드로 고정시키고도 

현재 가로로 눞여있는지 세로로 서있는지 알아봐야 할때가 있다.

 

이럴 때는 기울기 센서라고도 불리는 가속도 센서(Accelerometer Sensor)를 이용하면 간단하다.

 

아래는 세로모드에서 카메라로 사진을 찍었을 경우

단말기 상황(각도)에 맞게 사진을 회전시키는 예의 일부이다.

mDegrees 각도로 사진을 회전시키면 된다. 

 

 

 

private SensorManager mSensorManager;

 

private Sensor mAccSensor;

private float mDegrees;

 

@Override

 

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 

setContentView(R.layout.

main

);

 

mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

 

mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

 

mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_UI);

 

mDegrees = 0;

}

 

@Override

protected void onDestroy() {

super.onDestroy();

 

mSensorManager.unregisterListener(this);

 

}

 

@Override

public void onSensorChanged(SensorEvent event) {

switch(event.sensor.getType()) {

case Sensor.TYPE_ACCELEROMETER:

float x = event.values[0];

float y = event.values[1];

 

//회전시킬 각도 저장

//단말기마다 x,y 기준 수치는 다를 수 있음

if(x > 5 && y < 5)

mDegrees = 0;    //세로로 슴

else if(x < -5 && y > -5)

mDegrees = 180;  //세로로 뒤집힘

else if(x > -5 && y > 5)

mDegrees = -90;  //가로 왼쪽으로 눞힘

else if(x < 5 && y < -5)

mDegrees = 90;   //가로 오른쪽으로 눞힘

 

break;

}

 

}

 

 

 

 

사업자 정보 표시
주식회사 머리말 | 고영진 | 서울특별시 송파구 중대로 135 서관 10층 (가락동, 아이티벤처타워) | 사업자 등록번호 : 524-88-00727 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2017-서울강남-03941호 | 사이버몰의 이용약관 바로가기