android提供了一个Configuration类,主要用来描述与能让应用程序获取的资源相关的所有硬件配置信息。包含用户指定的信息项(本地和缩放比例)和动态硬件配置(一系列的输入设备)。
Configuration 类中包含了很多种信息,例如系统字体大小,orientation,输入设备类型等等.
fontScale -- 来源于system.prop中 sys.font.scale配置项
输入设备类型配置:系统加入的任何输入device必须拥有输入属性:现在android中仅支持touchscreen(触摸),keyboard(键盘),navigation(滚动球)
orientation -- 屏幕方位
keyboardHidden -- 如果是划盖或开盖手机并且没有软键盘支持,这个设成true
hardKeyboardHidden -- 如果是划盖或开盖手机,这个设成true
locale -- 用户选择的location信息
theme -- 皮肤,资源等等
有时候,就需要从Configuration中读取相关的数据,比如本地语言等。通过什么方式来实现呢?
这里使用ActivityManagerNative.getDefault()获取IActivityManager对象,然后调用IActivityManager对象的
getConfiguration方法获得Configuratin。实现如下:
IActivityManager am = ActivityManagerNative.getDefault();
Configuration conf = am.getConfiguration();
如果需要修改Configuratin,先改变数据,然后调用IActivityManager对象的updateConfiguration方法。
ps:这里的IActivityManager其实就是aidl的使用,android系统的IPC机制,有兴趣的童鞋可以google看看,这里没有去整理,只是把项目中遇到的写出来而已,比较懒! 哈哈哈。。
本文参考http://blog.csdn.net/dafeifly/archive/2009/10/30/4746936.aspx,并做相应的整理。