好记性不如烂笔头(一)
获取系统设置状态
我们能够通过Settings.System类来获取到一些系统设置的状态,所以我们能够通过下面代码来获取系统的状态,比方ACCELEROMETER_ROTATION
等。只是有一点要注意的就是,Android的ROM太多了,不同的厂商可能会直接改掉Android的实现,然后自己实现一套。然后。就崩了。
所以在真正处理的时候。我们须要去捕获异常,保证代码的健壮性。
/**
* 获取系统屏幕方向是否被锁定的状态
* @return
*/
public static boolean isLock(Context context){
int lock = Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, -1);
return lock != 1;
}
return false;
}
监控系统设置“锁定方向”或者“自己主动旋转”button改变
我们都知道ContentObserver监控的Content是指Android本身提供的一些底层数据库,比方短信,电话等,当然,也包含我们的设置项,
所以,通过上面的方法。我们能够获取到系统设置的状态,可是怎样在状态改变的时候,也第一时间知道呢,那就要求我们去注冊一个
Observer了。也就是观察者。详细代码例如以下。
1、创建Observer
private ContentObserver mRotationLockObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
// 能够进入到这个函数,就说明相应的Content的内容已经发生变化了,也即设置项的值已经被改变了。
// 而 selfChange在这里表明是否当前App改变设置的值的
}
};
2、 注冊Observer
上面仅仅是创建一个对Content的Observer。可是详细须要去监听哪个内容呢,这就由我们在注冊的时候来决定了。
在之前的博文中。有写过一篇文章,是对短信收件箱进行监听的。大家有兴趣的话能够看一下那一篇文章。就会更好地了解关于这个ContentObserver的使用了。
Android学习小Demo(13)Android中关于ContentObserver的使用
getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),
true, mRotationLockObserver);
3、撤消Observer
getContentResolver().unregisterContentObserver(mRotationLockObserver);
监听手机屏幕方向改变
可通过继承OrientationEventListener来自己定义一个类,当中onOrientationChanged方法会在屏幕方向发生变化的时候被调用。
參数orientation的值为0-359,表明屏幕此时旋转的角度。
public class OrientationDetector extends OrientationEventListener {
public OrientationDetector(Context context) {
super(context);
}
@Override
public void onOrientationChanged(int orientation) {
if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {
}
相关文章
- 临渊慕鱼,不如退而结网!
- Python fire官方文档教学(自动生成命令行,个人觉得意义不大,不如argparse)
- 兢兢业业的资深测试开发工程师,开始焦炉了,我到底是做什么的?就业形势就已经不如以往
- 测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
- 科技云报道:安全脱管不如托管
- 初级软件测试工程师就别出口喊15K了,连自动化测试都不会,还不如应届生
- 多线程频繁上锁同步还不如用单线程
- 应急响应工作苦干不如巧干 警报驱动的安全运营该淘汰了
- 好记性不如烂笔头88-spring3学习(9)-schema的配置的解读和说明
- 使用NPOI 转换Excel TO HTML (导出格式不如原生Excel好看)
- 读万卷书不如行万里路