开发Android app ,增加对系统的响应是非常有必要的,比如系统横竖屏切换,比如某个配置更改,比如wifi信号 ,3G信号等等,这个时候程序就需要一套完整的系统监控类,以便在系统变动的时候能够及时的应对..而在android开发中 能做到该监控功能的就是 Configuration 了
Configuration 类
通过 Configuration 类可以准确的获得系统的各种配置信息(用户配置和系统设置信息都能获得)
程序可调用Activity的如下方法来获取系统的Configuration对象:
Configuration cfg = getResources().getConfiguration();
一旦获得了系统的Configumtion对象,可通过如下的属性字段获得系统信息和配置项。
->public float fontScale:获取当前用户设置的字体的缩放因子。
->public int keyboard:获取当前设备所关联的键盘类型。该属性可能返回如下值.• KEYBOARD一NOKEYS、KEYBOARD.QWERTY (普通电脑键盘)、 KEYBOARD_12KEY (只有12个键的小键盘)。
->public int keyboardHidden:该属性返回一个boolean值用于标识当前键盘是否可 用。该属性不仅会判断系统的硬件键盘,也会判断系统的软键盘(位于屏幕上)。 如果该系统的硬件键盘不可用,但软键盘可用,该属性也会返回keyboardhidden_ NO;只有当两个键盘都不可用时才返回KEYBOARDHIDDEN_YES。
->public Locale locale:获取用户当前的 Locale。
->public int mcc:获取移动信号的国家码。
->public int mnc:获取移动信号的网络码。
->public int navigation:判断系统上方向导航设备的类型。该属性可能返回如
NAVIGATION_NONAV (无导航)、
NAVIGATION_DPAD (DPAD 导航)、
NAVIGATION— TRACKBALL (轨迹球导航)、
NAVIGATION一WHEEL (滚轮导航)等属性值。
->public int orientation:获取系统屏幕的方向,该属性可能返回
ORIENTATION_ LANDSCAPE (横向屏幕)、
ORIENTATION一PORTRAIT (竖向屏幕)、
ORIENTATION一SQUARE (方形屏幕)等属性值。
public int touchscreen:获取系统触摸屏的触摸方式。该属性可能返回
TOUCHSC- REEN_NOTOUCH (无触摸屏)、
TOUCHSCREEN一STYLUS (触摸笔式的触摸 屏)、
TOUCHSCREEN_FINGER (接受手指的触摸屏)。
代码实例:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mTextView = (TextView) findViewById(R.id.text);
Configuration configuration = getResources().getConfiguration();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("国家码:").append(configuration.mcc).append("\n")
.append("网络码:").append(configuration.mnc).append("\n");
if(configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
stringBuilder.append("竖屏");
}else {
stringBuilder.append("横屏");
}
stringBuilder.append("\n").append("字体的缩放因子:").append(configuration.fontScale).
append("\n").append("键盘类型:").append(configuration.keyboard);
if(configuration.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
stringBuilder.append("\n").append("键盘是否隐藏:").append(false);
}else {
stringBuilder.append("\n").append("键盘是否隐藏").append(true);
}
stringBuilder.append("\n").append("Local:").append(configuration.locale.getCountry()+configuration.locale.getLanguage()).append("\n");
switch (configuration.navigation) {
case Configuration.NAVIGATION_NONAV:
stringBuilder.append("无导航");
break;
case Configuration.NAVIGATION_DPAD:
stringBuilder.append("DPAD 导航");
break;
case Configuration.NAVIGATION_TRACKBALL:
stringBuilder.append("轨迹球导航");
break;
case Configuration.NAVIGATION_WHEEL:
stringBuilder.append("滚轮导航");
case Configuration.NAVIGATION_UNDEFINED:
stringBuilder.append("没有定义的导航");
}
stringBuilder.append("\n");
switch (configuration.touchscreen) {
case Configuration.TOUCHSCREEN_FINGER:
stringBuilder.append("手指的触摸屏");
break;
case Configuration.TOUCHSCREEN_NOTOUCH:
stringBuilder.append("无触摸屏");
break;
case Configuration.TOUCHSCREEN_UNDEFINED:
stringBuilder.append("没有定义");
break;
}
mTextView.setText(stringBuilder);
}
}