Configuration类是专门用来描述手机设备上的配置信息。这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。

程序中可调用Activity的如下方法来获取Configuration对象

//获取系统的Configuration对象
Configuration cfg = getResources().getConfiguration();

其中以下的参数代表的配置信息

fontScale:获取当前用户设置的字体的缩放因子。

keyboard:获取当前设备所关联的键盘类型。该属性的返回值:KEYBOARD_12KEY(只有12个键的小键盘)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通键盘)

keyboardHidden:该属性返回一个boolean值用于标识当前键盘是否可用。该属性不仅会判断系统的硬件键盘,也会判断系统的软键盘(位于屏幕)。

locale:获取用户当前的Locale.

mcc:获取移动信号的国家码

mnc:获取移动信号的网络码

navigation:判断系统上方向导航设备的类型。该属性的返回值:NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD导航)

、NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮导航)

orientation:获取系统屏幕的方向。该属性的返回值:ORIENTATION_LANDSCAPE(横向屏幕)、ORIENTATION_PORTRAIT(竖向屏幕)

touchscreen:获取系统触摸屏的触摸方式。该属性的返回值:TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式触摸屏)、

TOUCHSCREEN_FINGER(接收手指的触摸屏)

案例:获取手机系统的设备状态

XML代码:

<?xml version="1.0" encoding="UTF-8"?>                        
Java代码:

package com.demo.configuration;import com.example.demo.R;import android.app.Activity;import android.content.res.Configuration;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class configurationTest extends Activity{private EditText ori;private EditText navigation;private EditText touch;private EditText mnc;private Button bn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.configurationtest);//获取应用界面中的界面组件ori = (EditText)findViewById(R.id.conori);navigation = (EditText)findViewById(R.id.connavigation);touch = (EditText)findViewById(R.id.contouch);mnc = (EditText)findViewById(R.id.conmnc);bn = (Button)findViewById(R.id.conbu);bn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//获取系统的Configuration对象Configuration cfg = getResources().getConfiguration();String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕" : "竖向屏幕";ori.setText(screen);String mncCode = cfg.mcc + "";mnc.setText(mncCode);String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV? "没有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL? "滚轮方向控制" : cfg.orientation == Configuration.NAVIGATION_DPAD? "方向键控制方向" : "轨迹球控制方向";navigation.setText(naviName);String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH? "无触摸屏" : cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS? "触摸笔式触摸屏" : "接收手指的触摸屏";touch.setText(touchName);}});}}

如果程序需要监听系统设置的更改,可以考虑重写Activity的onConfigurationChanged方法,该方法时一个基于回调的事件处理方法.

下面案例:点击按钮改变系统屏幕的方向

public class changeCfg extends Activity{private Button bu1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.changcfg);bu1 = (Button)findViewById(R.id.changcfgbu);bu1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubConfiguration config = getResources().getConfiguration();//如果当前为横屏if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){//设置为竖屏changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}//如果当前为竖屏if(config.orientation == Configuration.ORIENTATION_PORTRAIT){//设置为横屏changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}});}//重写该方法,用于监听系统设置的更改@Overridepublic void onConfigurationChanged(Configuration newConfig){super.onConfigurationChanged(newConfig);String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ?"横屏":"竖屏";Toast.makeText(this, screen, Toast.LENGTH_LONG).show();}



更多相关文章

  1. Android获取屏幕宽高
  2. Android滑动组件----RecyclerView并且实现点击事件(2)
  3. Android权限系统(一):开机获取权限信息
  4. Android特点
  5. Android(安卓)- 判断当前网络环境、隐藏软键盘、动态监测及获取
  6. Android图形显示系统——上层显示2:硬件加速实现
  7. Android获取系统cpu信息,内存,版本,电量等信息
  8. ActionBar简单使用介绍和Tab切换的应用
  9. Android通过包名获取应用信息

随机推荐

  1. Android(安卓)Studio插件-自动根据布局生
  2. 谷歌官方流海适配方案
  3. Android音频相关(一)插入耳机后调节音量(安
  4. 从原理上粗略认知Android线程池(ThreadPoo
  5. 外部应用跳转到 其他activity, 或本应用启
  6. 从魅族腰圆键看国产手机厂商的创新能力
  7. android root权限破解分析
  8. 我的从Android交易市场一天赚到250美元的
  9. Androd 添加新键值
  10. 我理解的 iOS 与 Android(安卓)的区别