안드로이드 기기 회전각도 구하기

안드로이드 센서값을 읽어서 회전정도를 구하는게 필요해서 방법을 찾았는데
검색해서 나오는 결과 꽤 많은게 구버전이라 4.4에서 쓸려고 하니
depress 뜨길래 요즘꺼(?)에 맞는 방법으로 찾아서 쓴거 정리 해둠

public class Activity_Main extends Activity  implements SensorEventListener{
 
    private SensorManager mSensorManager;
    private Sensor accelerometer;
    private Sensor magnetometer;
 	private float[] mGravity = null;
	private float[] mGeomagnetic= null;
	private float R[] = new float[9];
	private float I[] = new float[9];
    
    //-----------------------------------------------------------
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
	}
	
 
	
	@Override
	protected void onPause() {
		super.onPause();
		mSensorManager.unregisterListener(this);
	}

    @Override
    protected void onResume() {
    	super.onResume();
    	mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI);
    	mSensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_UI);
    }
 
	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
			mGravity = event.values;
		if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
			mGeomagnetic = event.values;
		if (mGravity != null && mGeomagnetic != null) {
			boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
			if (success) {
				float orientation[] = new float[3];
				SensorManager.getOrientation(R, orientation);
				double degreeY =  Math.toDegrees(orientation[2]);
			}
		}
	}
}
크리에이티브 커먼즈 라이선스 Linsoo 의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.