900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android 监听重力感应方向传感器改变屏幕方向

Android 监听重力感应方向传感器改变屏幕方向

时间:2020-02-03 07:09:28

相关推荐

Android 监听重力感应方向传感器改变屏幕方向

重力感应方向传感器监听事件

/*** @Description: 重力感应方向传感器监听*/public class OrientationListener implements SensorEventListener {private int mOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;private OnOrientationChangeListener mListener;public OrientationListener(OnOrientationChangeListener listener) {mListener = listener;}@Overridepublic void onSensorChanged(SensorEvent event) {if (Sensor.TYPE_ACCELEROMETER != event.sensor.getType()) {return;}float[] values = event.values;float x = values[0];float y = values[1];int newOrientation;if (x < 4.5 && x >= -4.5 && y >= 4.5) {//纵向显示newOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;} else if (x >= 4.5 && y < 4.5 && y >= -4.5) {//横向显示newOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;} else if (x <= -4.5 && y < 4.5 && y >= -4.5) {//与正常的横向方向相反显示newOrientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;} else {//与正常的纵向方向相反显示newOrientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;}if (mOrientation != newOrientation) {if (mListener != null) {mListener.orientationChanged(newOrientation);}mOrientation = newOrientation;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}public interface OnOrientationChangeListener {void orientationChanged(int newOrientation);}}

调用方式

public abstract class MyActivity extends AppCompatActivity{private SensorManager mSensorManager;private OrientationListener mOrientationListener;protected abstract boolean canSwipe();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mOrientationListener = new OrientationListener(newOrientation -> {//设置屏幕显示方向setRequestedOrientation(newOrientation);});mSensorManager.registerListener(mOrientationListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onDestroy() {super.onDestroy();if (mSensorManager != null) {mSensorManager.unregisterListener(mOrientationListener);}}}

转载地址:/bobcat_kay/article/details/82794657

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。