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

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

Configuration cfg=getResources().getConfiguration();

一旦获得了系统的Configuration对象,该对象提供了如下常用属性来获取系统的配置信息。

  • public  float fontScale:获取当前用户设置的字体的缩放因子。
  • public  int  keyboard:获取当前设备所关联的键盘类型。该属性可能返回如下值:KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通电脑键盘)、KEYBOARD_12KEY(只有12个键的小键盘)。
  • public  int keyboardHidden:该属性返回一个boolean值用于标识当前键盘是否可用。该属性不仅会判断系统的硬键盘,也会判断系统的软键盘(位于屏幕上)。如果系统的硬键盘不可用,但软键盘可用,该属性也会返回KEYBOARDHIDDEN_NO;只有当两个键盘都可用时才返回KEYBOARDHIDDEN_YES。
  • public Locale locale:获取用户当前的Locale。
  • public int mcc:获取移动信号的国家码。
  • public int mnc:获取移动信号的网络码。
  • public int navigation:判断系统上方向导航设备的类型。该属性可能返回如NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD导航)、NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮导航)等属性值。
  • public int orientation:获取系统屏幕的方向,该属性可能返回ORIENTATION_LANDSCAPE(横向屏幕)、ORIENTATION_PORTRAIT(竖向屏幕)、ORIENTATION_SQUARE(方形屏幕)等属性值。
  • public int touchscreen:获取系统触摸屏的触摸方式。该属性可能返回TOUCHSC_REEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式的触摸屏)、TOUCHSCREEN_FINGER(接受手指的触摸屏)。

下面以一个实例来介绍Configuration的用法,该程序可以获取系统的屏幕方向、触摸屏方式等。

  实例:获取系统设备状态

         该程序的界面布局比较简单,程序只是提供了4个文本框来显示系统的屏幕方向、触摸屏方式等状态,故此处不再给出界面布局文件。

该程序的Java代码主要可分为两步:

①获取屏幕的Configuration对象。

②调用Configuration对象的属性来获取设备状态。

该程序的界面布局文件如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="vertical"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:gravity="center_horizontal"
  6. >
  7. <EditText
  8. android:id="@+id/ori"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:editable="false"
  12. android:cursorVisible="false"
  13. android:hint="显示屏幕方向"
  14. />
  15. <EditText
  16. android:id="@+id/navigation"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:editable="false"
  20. android:cursorVisible="false"
  21. android:hint="显示手机方向控制设备"
  22. />
  23. <EditText
  24. android:id="@+id/touch"
  25. android:layout_width="fill_parent"
  26. android:layout_height="wrap_content"
  27. android:editable="false"
  28. android:cursorVisible="false"
  29. android:hint="显示触摸屏状态"
  30. />
  31. <EditText
  32. android:id="@+id/mnc"
  33. android:layout_width="fill_parent"
  34. android:layout_height="wrap_content"
  35. android:editable="false"
  36. android:cursorVisible="false"
  37. android:hint="显示移动网络代号"
  38. />
  39. <Button
  40. android:id="@+id/bn"
  41. android:layout_width="wrap_content"
  42. android:layout_height="wrap_content"
  43. android:text="获取手机信息"
  44. />
  45. </LinearLayout>

下面是该程序的Java代码。

  1. package com.example.studyevent;
  2.  
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.content.res.Configuration;
  6. import android.view.Menu;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11.  
  12. public class ConfigurationTest extends Activity {
  13. EditText ori;
  14. EditText navigation;
  15. EditText touch;
  16. EditText mnc;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_configuration_test);
  21. //获取应用界面中的界面组件
  22. ori=(EditText)findViewById(R.id.ori);
  23. navigation=(EditText)findViewById(R.id.navigation);
  24. touch=(EditText)findViewById(R.id.touch);
  25. mnc=(EditText)findViewById(R.id.mnc);
  26. Button bn=(Button)findViewById(R.id.bn);
  27. bn.setOnClickListener(new OnClickListener(){
  28. //为按钮绑定事件监听器
  29. @Override
  30. public void onClick(View v) {
  31. // TODO Auto-generated method stub
  32. //获取系统的Configuration对象
  33. Configuration cfg=getResources().getConfiguration();
  34. String screen=cfg.orientation==Configuration.ORIENTATION_LANDSCAPE?
  35. "横向屏幕":"竖向屏幕";
  36. String mncCode=cfg.mnc+"";
  37. String naviName=cfg.orientation==Configuration.NAVIGATION_NONAV?
  38. "没有方向控制":cfg.orientation==Configuration.NAVIGATION_WHEEL?
  39. "滚轮控制方向":cfg.orientation==Configuration.NAVIGATION_DPAD?
  40. "方向键控制方向":"轨迹球控制方向";
  41. navigation.setText(naviName);
  42. String touchName=cfg.touchscreen==Configuration.TOUCHSCREEN_NOTOUCH?
  43. "无触摸屏":"支持触摸屏";
  44. ori.setText(screen);
  45. mnc.setText(mncCode);
  46. touch.setText(touchName);
  47.  
  48. }
  49. });
  50.  
  51. }
  52.  
  53. @Override
  54. public boolean onCreateOptionsMenu(Menu menu) {
  55. // Inflate the menu; this adds items to the action bar if it is present.
  56. getMenuInflater().inflate(R.menu.configuration_test, menu);
  57. return true;
  58. }
  59.  
  60. }

上面的程序中粗体字代码用于获取系统的Configuration对象,一旦获得了系统的Configuration之后,程序就可以通过它来了解系统的设备状态了。运行上面的程序将看到下图所示效果:

响应的系统设置的事件——Configuration类简介的更多相关文章

  1. 响应系统设置的事件(Configuration类)

    1.Configuration给我们提供的方法列表 densityDpi:屏幕密度 fontScale:当前用户设置的字体的缩放因子 hardKeyboardHidden:判断硬键盘是否可见,有两个可 ...

  2. 响应的系统设置的事件——重写onConfigurationChanged响应系统设置更改

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

  3. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  4. C#基础-事件 继承类无法直接引发基类的事件

    An event can be raised only from the declaration space in which it is declared. Therefore, a class c ...

  5. UITextView: 响应键盘的 return 事件(收回键盘)

    UITextView: 响应键盘的 return 事件(收回键盘) 此篇文章将要介绍UITextView: 响应键盘的 return 事件(收回键盘)的相关介绍,具体实例请看下文 UITextView ...

  6. 3 EventTime 事件时间类和TimeNow函数——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第三个部分,也是最后一个部分. EventTime 事件时间类 这个类和Dela ...

  7. [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Hibernate中的Configuration类

    Configuration类用来管理我们的配置文件的信息的,通过它,我们可以通过创建一个configuration实例来管理相应的配置文档,但是通常我们只创建一个configuration实例. 下面 ...

  9. ASP.NET中定制自己的委托和事件参数类

    本文笔记选自<庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术>一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的 ...

随机推荐

  1. 总结自己的Git常用命令

    总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考. 目录: 最基本的命令: git clone 拷贝并跟踪远程的master分支. ...

  2. Android - Get Bluetooth UUID for this device

    Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join th ...

  3. 使用PowerDesigner画ER图详细教程

    转:http://www.360doc.com/content/11/0624/15/2617151_129276457.shtml 一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应 ...

  4. Java谜题心得

    1,二进制浮点数的运算是对实际算数的一种近似运算. 2,IEEE 754浮点算术保留了一个特殊的值用来表示一个不是数字的数量[IEEE 754].这个值就是NaN(“不是一个数字(Not a Numb ...

  5. Cocos2dx 学习笔记整理----在项目中使用图片(一)

    cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资 ...

  6. XML&AJAX

    AJAX: Asynchronous Javascript and XML 1. 客户端触发异步操作 2. 创建新的XMLHttpRequest, 是重要的js对象,通过它提起对服务器端的请求 3. ...

  7. window环境变量

    首先Window中有很多乱七八糟的路径变量之类的,归类下来有几类,主要是为了我们分清楚概念,以免搞的糊涂了. 1. Window系统的环境变量:顾名思义,就是系统级别的变量,或者利用我们编程的角度来讲 ...

  8. lpc1788IO口模拟IIC

    #ifndef __MYIIC_H_ #define __MYIIC_H_ #include "common.h" #include "delay.h" #in ...

  9. 10.8.5如何升级(app store 出错 请稍后重试 100)

    出现问题:苹果以前的老版本,OS X 10.8或是10.8.5在当年提示你升级,你又任性没升级的时候,拖过那阵,你再想升级,就是各种报复.进app store下载或是更新东西都是弹出app stpre ...

  10. Oracle行转列的3种方法

    测试表为A3 , 有5个字段:ID1, ID2, ID3, ID4, ID5 测试数据如下: ID1 ID2 ID3 ID4 ID5 1 2 3 4 5 11 22 33 44 55 111 222 ...