Back to project page ShootEmOff.
The source code is released under:
Copyright (c) 2011 Andrey Moiseev, http://o2genum.ru Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),...
If you think the Android project ShootEmOff listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.shootemoff.framework.impl; /*w ww . j a va 2 s . c o m*/ import android.hardware.*; import android.content.Context; public class AndroidOrientationHandler implements OrientationHandler, SensorEventListener { SensorManager manager; Sensor sensor; float azimuth = 0.0F; public AndroidOrientationHandler(Context context) { manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME); } public void onAccuracyChanged(Sensor sensor, int accuracy) { // Nothing to do } public void onSensorChanged(SensorEvent event) { /* Now it works using accelerometer, not orientation * sensor. Because: * * Fivos Asimakop wrote: * * Try an alternative of the controls with the azimuth. In my * experience most devices lose their calibration easily and the azimuth * is not to be trusted. Especially after deprecating the orientation * sensor. How about using an accelerometer reading? Or the rotation * vector when android version is 2.3 and above? */ azimuth = (float) (Math.atan2((double) event.values[1], (double) event.values[0]) / (Math.PI *2) * 360); } @Override public float getAzimuth() { return azimuth; } }