android Configuration系統設置

Configuration類是專門用來描述手機設備上的配置信息。這些配置信息包括用戶特定的配置項,也包括系統的動態設備配置。html

程序中可調用Activity的以下方法來獲取Configuration對象android

//獲取系統的Configuration對象
Configuration cfg = getResources().getConfiguration();
網絡

其中如下的參數表明的配置信息app

fontScale:獲取當前用戶設置的字體的縮放因子。ide

keyboard:獲取當前設備所關聯的鍵盤類型。該屬性的返回值:KEYBOARD_12KEY(只有12個鍵的小鍵盤)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通鍵盤)字體

keyboardHidden:該屬性返回一個boolean值用於標識當前鍵盤是否可用。該屬性不只會判斷系統的硬件鍵盤,也會判斷系統的軟鍵盤(位於屏幕)。this

locale:獲取用戶當前的Locale.spa

mcc:獲取移動信號的國家碼.net

mnc:獲取移動信號的網絡碼code

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 plaincopy在CODE上查看代碼片派生到個人代碼片

  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 plaincopy在CODE上查看代碼片派生到個人代碼片

  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 plaincopy在CODE上查看代碼片派生到個人代碼片

  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.     }  

相關文章
相關標籤/搜索