第三课:获取系统设备的状态,以及系统设备状态改变事件处理
2014-07-25 14:56
691 查看
android提供了一个Configuration类,主要用来描述与能让应用程序获取的资源相关的所有硬件配置信息。包含用户指定的信息项(本地和缩放比例)和动态硬件配置(一系列的输入设备)。
Configuration 类中包含了很多种信息,例如系统字体大小,orientation,输入设备类型等等。
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:获取系统触摸屏的触摸方式。该属性值返回:TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式的触摸屏)、TOUCHSCREEN_FINGER(接受手指的触摸屏)。
注:必须在需要监控的activity中的标签写下用户监听标签:
例1.获取系统设备状态
ConfigurationTest.java
如果程序需要监听系统设置的更高,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法:当系统设置发生更改时,该方法会被自动触发。
例2:监听屏幕方向的改变
ChangeCfg.java
源代码下载
Configuration 类中包含了很多种信息,例如系统字体大小,orientation,输入设备类型等等。
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:获取系统触摸屏的触摸方式。该属性值返回:TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式的触摸屏)、TOUCHSCREEN_FINGER(接受手指的触摸屏)。
注:必须在需要监控的activity中的标签写下用户监听标签:
android:configChanges="orientation"
例1.获取系统设备状态
ConfigurationTest.java
public class ConfigurationTest extends Activity { EditText ori; EditText navigation; EditText touch; EditText mnc; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取应用界面中的界面组件 ori = (EditText)findViewById(R.id.ori); navigation = (EditText)findViewById(R.id.navigation); touch = (EditText)findViewById(R.id.touch); mnc = (EditText)findViewById(R.id.mnc); Button bn = (Button)findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener() { // 为按钮绑定事件监听器 @Override public void onClick(View source) { // 获取系统的Configuration对象 Configuration cfg = getResources().getConfiguration(); String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕": "竖向屏幕"; String mncCode = cfg.mnc + ""; String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "没有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滚轮控制方向" : cfg.orientation == Configuration.NAVIGATION_DPAD ? "方向键控制方向" : "轨迹球控制方向"; navigation.setText(naviName); String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH ? "无触摸屏" : "支持触摸屏"; ori.setText(screen); mnc.setText(mncCode); touch.setText(touchName); } }); } }
如果程序需要监听系统设置的更高,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法:当系统设置发生更改时,该方法会被自动触发。
例2:监听屏幕方向的改变
ChangeCfg.java
public class ChangeCfg extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn = (Button) findViewById(R.id.bn); // 为按钮绑定事件监听器 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); } } }); } // 重写该方法,用于监听系统设置的更改,主要是监控屏幕方向的更改 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕" : "竖向屏幕"; Toast.makeText(this, "系统的屏幕方向发生改变" + "\n修改后的屏幕方向为:" + screen, Toast.LENGTH_LONG).show(); } }
源代码下载
相关文章推荐
- 如何侦听iphone设备方向改变事件,以及如何添加事件的处理事件
- React-Native - 使用AppState获取App运行状态(以及监听状态改变事件)
- iPad Android系统下,平板设备判断横竖屏,以及横竖屏变化之后的事件触发(html + javascript)
- java的RIL框架处理modem网络状态改变事件的流程
- IOS 系统打电话事件的监听与状态获取
- 获取网络状态、WiFi 名以及跳转系统邮箱
- Datepicker和Timepicker简单使用与样式改变,以及系统时间获取
- select获取当前值,改变默认选项以及绑定onchange事件
- android学生管理系统,利用linerLayout,实现xml的读取和写入,以及按钮的事件处理
- 数据获取以及处理系统 --- 技术规格说明书
- 数据获取以及处理系统 --- 功能规格说明书
- 获得当前系统语言以及获取当前网络状态的类型
- Delphi编程获取系统当前进程、窗口句柄、文件属性以及程序运行状态(8种应用)
- JTable中获取鼠标移动、点击以及内容改变事件
- 获取系统当前打开的端口(tcp。udp)状态,以及连接方的ip。端口
- 设置屏幕的方向以及捕获系统设置的改变事件
- 使用delphi新建服务,停止系统服务,以及获取服务状态和新建系统服务器的方法
- 注册广播,监听网络状态的改变,时间戳,自动获取系统时间
- zTree之checkbox选中事件---获取状态改变的结点
- 动态获取权限, 以及事件处理