Android 之响应的系统设置的事件

1、Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的也包括系统的动态设备配置。
程序可调用Activity的如下方法来获取 系统的Configuration对象:
Configuration cfg=getResources().getConfiguration();
String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕": "竖向屏幕";
String
screen = cfg.orientation + "";//获取系统屏幕的方向,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 界面文件不写了;
为按钮绑定监听事件:

  • bn.setOnClickListener(new OnClickListener()  
  • {  

  • @Override

  • public
    void onClick(View source)  
  • {  
  • Configuration 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 );  
  • }   
  • }  
  • });   


view plain

  • bn.setOnClickListener(new OnClickListener()  
  • {  
  • @Override
  • public
    void onClick(View source)  
  • {  
  • Configuration 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 );  
  • }   
  • }  
  • });   



重写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" />v
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值