/**
* 屏幕方向监听工具类
*/
public class OrientationUtil {
/* 方向事件监听器 */
private OrientationEventListener mOrientationEventListener;
/* 监测屏幕方向的监听器 */
private OnOrientationListener mOrientationListener;
/* 传感器等级 */
private int mRate;
private Context mContext;
private OrientationUtil() {
this.mContext = SUtils.getApp().getApplicationContext();
this.mRate = SensorManager.SENSOR_DELAY_NORMAL;
}
public static OrientationUtil getInstance() {
return OrientationUtilHolder.INSTANCE;
}
private static final class OrientationUtilHolder {
private static final OrientationUtil INSTANCE = new OrientationUtil();
}
/**
* 初始化
*/
private void init() {
mOrientationEventListener = new OrientationEventListener(mContext, mRate) {
@Override
public void onOrientationChanged(int orientation) {
if (mOrientationListener != null) {
mOrientationListener.orientationChanged(orientation);
}
}
};
}
/**
* 设置传感器的等级(默认为:SensorManager.SENSOR_DELAY_NORMAL)
*
* @param rate 传感器的等级
* <ul>
* <li>{@link SensorManager#SENSOR_DELAY_FASTEST}: 0</li>
* <li>{@link SensorManager#SENSOR_DELAY_GAME}: 1</li>
* <li>{@link SensorManager#SENSOR_DELAY_UI}: 2</li>
* <li>{@link SensorManager#SENSOR_DELAY_NORMAL}: 3</li>
* </ul>
* @return {@link OrientationUtil}
*/
public OrientationUtil rate(int rate) {
this.mRate = rate;
return this;
}
/**
* 设置屏幕方向监听方法
*
* @param listener
* @return {@link OrientationUtil}
*/
public OrientationUtil callback(OnOrientationListener listener) {
this.mOrientationListener = listener;
return this;
}
/**
* 开启屏幕方向监测
*/
public void start() {
if (mOrientationEventListener == null) {
init();
}
if (isEnabled()) {
mOrientationEventListener.enable();
} else {
mOrientationEventListener.disable();
}
}
/**
* 停止屏幕方向监测
*/
public void stop() {
if (mOrientationEventListener != null) {
mOrientationEventListener.disable();
}
mOrientationListener = null;
}
/**
* 判断屏幕方向监听是否可用
*
* @return {@code true}: 可用<br>{@code false}: 不可用
*/
public boolean isEnabled() {
if (mOrientationEventListener == null) return false;
return mOrientationEventListener.canDetectOrientation();
}
/**
* 获取方向事件监听器
*
* @return orientationEventListener
*/
public OrientationEventListener getOrientationEventListener() {
return mOrientationEventListener;
}
/**
* 监测屏幕方向的监听器
*/
public interface OnOrientationListener {
/**
* 监测屏幕方向监听
*
* @param orientation 屏幕角度(范围:0 - 360)
*/
void orientationChanged(int orientation);
}
}
屏幕方向监听工具类
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 运用螺旋仪运动模块监听实现,详细demo:https://github.com/oopsr/DeviceOrien...
- 程序可以调用 Activity 的如下方法来获取系统的 Configuration 对象: 我们可以通过 Conf...