Android之響應的系統設置的事件

 

1、Configuration類專門用於描述手機設備上的配置信息,這些配置信息既包括用戶特定的也包括系統的動態設備配置。

程序可調用Activity的如下方法來獲取 系統的Configuration對象:

Configuration cfg=getResources().getConfiguration();

String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE? "橫向屏幕": "豎向屏幕";
String mncCode = cfg.mnc + "";//獲取系統屏幕的方向,ORIENTATION_LANDSCAPE 是橫向,ORIENTATION_PORTRAIT是豎向屏幕,
ORIENTATION_SQUARE是方形屏幕;

String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "沒有方向控制" :cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滾輪控制方向" :cfg.orientation == Configuration.NAVIGATION_DPAD
? "方向鍵控制方向" : "軌跡球控制方向";//判斷系統上方向導航設備的類型。NAVIGATION_NONAV無導航,NAVIGATION_DPAD(DPAD導航),NAVIGATION_TRACKBALL軌跡球導航,NAVIGATION_WHEEL滾輪導航;


String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH? "無觸摸屏" :cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS? "觸摸筆式觸摸屏" : "接受手指的觸摸屏";//獲取系統觸摸屏蔽的觸摸方式,TOUCHSCREEN_NOTOUCH 無觸摸屏TOUCHSCREEN_STYLUS觸摸筆式觸摸屏,TOUCHSCREEN_FINGERR接受手指的觸摸屏;

String mncCode = cfg.mnc+" ";獲取移動信號的網絡碼

String mncCode = cfg.mcc+" "獲取移動信號的國家碼;


2、如果程序需要監聽系統設置的更改,則可以考慮重寫Activity的onConfigurationChanged方法,該方法是一個基於回調的事件處理方法:當系統設置發生 更改時,該方法會被自動觸發;

接下來以一個簡單程序說明:

界面很簡單一個普通的按鈕來更改屏幕方向,so 界面文件不寫了;

爲按鈕綁定監聽事件:

  1. bn.setOnClickListener(new OnClickListener()  
  2. {  
  3. @Override  
  4. public void onClick(View source)  
  5. {  
  6. Configuration config = getResources().getConfiguration();  
  7. //如果當前是橫屏   
  8. if (config.orientation   
  9. == Configuration.ORIENTATION_LANDSCAPE)  
  10. {  
  11. //設爲豎屏   
  12. ChangeCfg.this.setRequestedOrientation(  
  13. ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
  14. }  
  15. //如果當前是豎屏   
  16. if (config.orientation   
  17. == Configuration.ORIENTATION_PORTRAIT)  
  18. {  
  19. //設爲橫屏   
  20. ChangeCfg.this.setRequestedOrientation(  
  21. ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE );  
  22. }   
  23. }  
  24. });   


重寫Activity的onConfigurationChanged方法:public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
String screen = newConfig.orientation == 
Configuration.ORIENTATION_LANDSCAPE ? "橫向屏幕": "豎向屏幕";
Toast.makeText(this, "系統的屏幕方向發生改變"
+ "\n修改後的屏幕方向爲:" + screen
, Toast.LENGTH_LONG)
.show();
}

由於程序需要動態地更改系統設置,因此需要在androidManifest.xml文件中授予誚程序更改系統設置的權限,並設置Activity運行動態修改的系統設置是屏幕方向;

<!-- 授予應用程序修改系統設置的權限 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章