Android Configuration系统设置

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代码:

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <LinearLayout  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical"  
  6.     xmlns:android="http://schemas.android.com/apk/res/android">  
  7.       
  8.     <EditText   
  9.         android:id="@+id/conori"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         />  
  13.     <EditText   
  14.         android:id="@+id/connavigation"  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="wrap_content"  
  17.         />  
  18.     <EditText   
  19.         android:id="@+id/contouch"  
  20.         android:layout_width="match_parent"  
  21.         android:layout_height="wrap_content"  
  22.         />  
  23.     <EditText   
  24.         android:id="@+id/conmnc"  
  25.         android:layout_width="match_parent"  
  26.         android:layout_height="wrap_content"  
  27.         />  
  28.   
  29.     <Button  
  30.         android:id="@+id/conbu"  
  31.         android:layout_width="wrap_content"  
  32.         android:layout_height="wrap_content"   
  33.         android:layout_marginLeft="70dp"  
  34.         android:text="获取手机信息"  
  35.         />  
  36.   
  37. </LinearLayout>  
Java代码:

[html]  view plain copy
  1. package com.demo.configuration;  
  2.   
  3.   
  4. import com.example.demo.R;  
  5.   
  6. import android.app.Activity;  
  7. import android.content.res.Configuration;  
  8. import android.os.Bundle;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.widget.Button;  
  12. import android.widget.EditText;  
  13.   
  14. public class configurationTest extends Activity{  
  15.     private EditText ori;  
  16.     private EditText navigation;  
  17.     private EditText touch;  
  18.     private EditText mnc;  
  19.     private Button bn;  
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.configurationtest);  
  24.         //获取应用界面中的界面组件  
  25.         ori = (EditText)findViewById(R.id.conori);  
  26.         navigation = (EditText)findViewById(R.id.connavigation);  
  27.         touch = (EditText)findViewById(R.id.contouch);  
  28.         mnc = (EditText)findViewById(R.id.conmnc);  
  29.         bn = (Button)findViewById(R.id.conbu);  
  30.         bn.setOnClickListener(new OnClickListener(){  
  31.   
  32.             @Override  
  33.             public void onClick(View v) {  
  34.                 // TODO Auto-generated method stub  
  35.                 //获取系统的Configuration对象  
  36.                 Configuration cfg = getResources().getConfiguration();  
  37.                 String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕" : "竖向屏幕";  
  38.                 ori.setText(screen);  
  39.                 String mncCode = cfg.mcc + "";  
  40.                 mnc.setText(mncCode);  
  41.                 String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV  
  42.                 ? "没有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL  
  43.                         ? "滚轮方向控制" : cfg.orientation == Configuration.NAVIGATION_DPAD  
  44.                                 ? "方向键控制方向" : "轨迹球控制方向";  
  45.                 navigation.setText(naviName);  
  46.                 String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH  
  47.                 ? "无触摸屏" : cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS  
  48.                         ? "触摸笔式触摸屏" : "接收手指的触摸屏";  
  49.                 touch.setText(touchName);  
  50.             }});  
  51.     }  
  52. }  

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

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

[html]  view plain copy
  1. public class changeCfg extends Activity{  
  2.     private Button bu1;  
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.changcfg);  
  7.         bu1 = (Button)findViewById(R.id.changcfgbu);  
  8.         bu1.setOnClickListener(new OnClickListener(){  
  9.   
  10.             @Override  
  11.             public void onClick(View v) {  
  12.                 // TODO Auto-generated method stub  
  13.                 Configuration config = getResources().getConfiguration();  
  14.                 //如果当前为横屏  
  15.                 if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){  
  16.                     //设置为竖屏  
  17.                     changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
  18.                 }  
  19.                 //如果当前为竖屏  
  20.                 if(config.orientation == Configuration.ORIENTATION_PORTRAIT){  
  21.                     //设置为横屏  
  22.                     changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
  23.                 }  
  24.             }  
  25.               
  26.         });  
  27.     }  
  28.     //重写该方法,用于监听系统设置的更改  
  29.     @Override  
  30.     public void onConfigurationChanged(Configuration newConfig){  
  31.         super.onConfigurationChanged(newConfig);  
  32.         String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ?"横屏":"竖屏";  
  33.         Toast.makeText(this, screen, Toast.LENGTH_LONG).show();  
  34.     }  

你可能感兴趣的:(android,Configuratio)