好记性不如烂笔头(一)
2015-03-14 10:39
435 查看
获取系统设置状态
我们可以通过Settings.System类来获取到一些系统设置的状态,所以我们可以通过以下代码来获取系统的状态,比如ACCELEROMETER_ROTATION
等,不过有一点要注意的就是,Android的ROM太多了,不同的厂商可能会直接改掉Android的实现,然后自己实现一套,然后,就崩了。
所以在真正处理的时候,我们需要去捕获异常,保证代码的健壮性。
监控系统设置“锁定方向”或者“自动旋转”按钮改变
我们都知道ContentObserver监控的Content是指Android本身提供的一些底层数据库,比如短信,电话等,当然,也包括我们的设置项,
所以,通过上面的方法,我们可以获取到系统设置的状态,但是如何在状态改变的时候,也第一时间知道呢,那就要求我们去注册一个
Observer了,也就是观察者,具体代码如下。
1、创建Observer
2、 注册Observer
上面只是创建一个对Content的Observer,但是具体需要去监听哪个内容呢,这就由我们在注册的时候来决定了。
在之前的博文中,有写过一篇文章,是对短信收件箱进行监听的,大家有兴趣的话可以看一下那一篇文章,就会更好地了解关于这个ContentObserver的使用了。
Android学习小Demo(13)Android中关于ContentObserver的使用
3、撤消Observer
监听手机屏幕方向改变
可通过继承OrientationEventListener来自定义一个类,其中onOrientationChanged方法会在屏幕方向发生变化的时候被调用。
参数orientation的值为0-359,表明屏幕此时旋转的角度。
我们可以通过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; }
监控系统设置“锁定方向”或者“自动旋转”按钮改变
我们都知道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) { }
相关文章推荐
- 好记性不如烂笔头——WebService与Remoting
- 好记性不如烂笔头 label自适应
- ios工作笔记1(好记性不如烂笔头)
- 好记性不如烂笔头5-JAVA快速文件拷贝
- 好记性不如烂笔头23-数据库事务(1)
- 好记性不如烂笔头39-javaWeb应用中的监听器(1)
- 好记性不如烂笔头(零)
- 好记性不如烂笔头87-spring3学习(8)-IoC的理解和比喻
- 好记性不如烂笔头71-获得当前的方法名,类名,路径等当前信息
- SQL-LINQ-Lambda语法对照,好记性不如烂笔头
- 好记性不如烂笔头之1(setsockopt)
- 好记性不如烂笔头,记我在用友ERP重装IIS服务碰到的一些问题和心得。
- 好记性不如烂笔头(char * p字符串定义)
- 好记性不如烂笔头(ubuntu1404自带中文输入法修正)
- 好记性不如烂笔头---YARN作业运行机制
- 记性不如烂笔头
- 好记性不如烂笔头之 ——CP命令
- 好记性不如烂笔头- linux 下rpm软件的安装和卸载 rpm --force -ivh ...
- 好记性不如烂笔头——WebService与Remoting
- 好记性不如烂笔头