您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 全《Android平台开发之旅》第15章
第十五章系统信息管理本章对Android平台所提供的系统信息管理接口进行全面介绍,包括对各个系统服务接口(Activity管理、警报管理、通知管理等)以及用于获取系统信息的几个工具类的使用方式。通过这些接口和工具类,读者几乎可以获取所有的系统信息。15.1系统服务这里的系统服务和读者平常理解的服务程序有所不同。这里的系统服务不仅指服务组件,而且还包括Android系统提供的服务功能。所以它们的使用方式不能与服务组件的调用一概而论,而必须使用系统提供的特定方式来获取希望得到的服务功能接口,通过这些接口与系统的核心组件“打交道”。这些核心组件有:对系统中所有Activity组件进行管理的管理器、音量管理器、电源管理器、系统剪贴板管理器……总而言之,通过上述的系统服务接口,开发者就可以方便地获取系统信息,对系统功能进行应用集成。15.1.1Android系统服务介绍从1.5版本开始,AndroidSDK将所有的服务接口都统一成由上下文类(Context)来提供。通过上下文类的“getSystemService”方法,开发者就可以通过指定的服务字符串标识来获取对应的服务接口。表15-1是Android平台所定义的服务字符串标识说明。表15-1服务字符串标识说明服务字符串标识说明ACTIVITY_SERVICE对系统所有Activity组件进行管理的服务接口ALARM_SERVICE警报服务(闹钟)接口AUDIO_SERVICE音量控制服务接口CLIPBOARD_SERVICE剪贴板服务接口CONNECTIVITY_SERVICE连接管理服务接口INPUT_METHOD_SERVICE输入法服务接口KEYGUARD_SERVICE键盘锁定服务接口LAYOUT_INFLATER_SERVICE布局填充服务接口LOCATION_SERVICE定位服务接口NOTIFICATION_SERVICE通知服务接口POWER_SERVICE电源管理服务接口SEARCH_SERVICE搜索服务接口SENSOR_SERVICE传感器服务接口TELEPHONY_SERVICE电话信息服务接口VIBRATOR_SERVICE振动器服务接口WALLPAPER_SERVICE墙纸服务接口WIFI_SERVICEWI—FI服务接口WINDOW_SERVICE窗体管理服务接口15.1.2Activity管理Activity管理器(ActivityManager)用于对所有运行中的Activity组件进行管理,其定义于android.app包中。通过Activity管理器可以获取当前设备的配置信息、内存信息、进程错误状态、近期任务、运行中进程、运行中服务和运行中任务信息。图15-1是通过Activity管理器获取Activity组件信息的程序界面。图15-1Activity信息1.Activity管理器接口获取Activity管理器接口的代码如下所示。-ActivityManagerservice=(ActivityManager)(this.getSystemService(Context.ACTIVITY_SERVICE));2.获取配置信息接口通过Activity管理器接口的“getDeviceConfigurationInfo”方法可以获取当前设备的配置信息接口(ConfigurationInfo),代码如下所示。-ConfigurationInfocfgInfo=service.getDeviceConfigurationInfo();(1)输入方式类型通过设备配置信息接口的“reqInputFeatures”属性就可以获知当前设备的输入方式,输入方式的类型在ConfigurationInfo接口定义,见表15-2。表15-2输入方式类型定义及说明类型定义说明INPUT_FEATURE_FIVE_WAY_NAV五向导航键输入INPUT_FEATURE_HARD_DEYBOARD硬键盘输入(2)键盘类型通过设备配置信息接口的“reqKeyboardType”属性就可以获知当前设备的键盘类型,键盘类型在Configurtion接口中定义,见表15-3。表15-3键盘类型定义及说明类型定义说明KEYBOARD_UNDEFINED未定义键盘KEYBOARD_NOKEYS无键键盘KEYBOARD_QWERTY打字机键盘KEYBOARD_12KEY十二键盘(3)导航方式类型通过设备配置信息接口的“reqNavigation”属性就可以获知当前设备的导航方式,导航方式的类型在Configuration接口中定义,见表15-4。表15-4导航方式类型定义及说明类型定义说明NAVIGATION_UNDEFINED未定义导航NAVIGATION_DPAD面板导航NAVIGATION_TRACKBALL定位球导航NAVIGATION_WHEEL滚轮导航(4)触摸屏方式类型通过设备配置信息接口的“reqTouchScreen”属性就可以获知当前设备的触摸屏方式,触摸屏方式的类型在Configuration接口中定义,见表15-5。表15-5触摸屏方式类型定义及说明类型定义说明TOUCHSCREEN_NOTOUCH不支持触摸屏TOUCHSCREEN_STYLUS触摸笔TOUCHSCREEN_FINGER手指触摸3.获取内存信息通过Activity管理器接口的“getMemoryInfo”方法可以获取系统的内存信息接口(MemoryInfo),代码如下所示。-AcitivityManager.MemoryInfomemInfo=newActivityManager.MemoryInfo();Service.getMemoryInfo(memInfo);通过内在信息接口的公共属性就可以获取当前的内存信息,表15-6是内存信息接口的属性说明。表15-6内存信息接口属性属性说明availMem可用内存lowMemory是否低内存threshold内存阈值4.进程错误信息通过Activity管理器接口的“getProcessesInErrorState”方法可以获取系统进程的错误状态信息(ProcessErrorStateInfo)接口,代码如下所示。-ListActivityManager.ProcessErrorStateInfostates=service.getprocessesInErrorState();for(inti=0;istates.size();++i){ProcessErrorStateInfoinfo=states.get(i);}通过进程错误状态信息接口的公共属性就可以获取进程的错误状态信息,表15-7是进程错误状态信息接口的属性说明。表15-7进程错误信息接口的属性说明属性说明pid进程IDlongMsg消息shortmsg消息Tag标记5.近期任务通过Activity管理器接口的“getRecentTasks”方法可以获取系统的任务信息接口(RecentTaskInfo),代码如下所示。-ListActivityManager.RecentTaskInforecentTasks=Service.getRecentTasks(Integer.MAX_VALUE,ActivityManager.RECENT_WITH_EXCLUDED);for(inti=0;irecentTasks.size();++i){RecentTaskInfoinfo=recentTasks.get(i);}通过系统近期任务信息接口的公共属性就可以获取系统的近期任务信息,表15-8是系统近期任务信息接口的属性说明。表15-8系统近期任务信息接口的属性说明属性说明id任务IDbaseIntent.getAction()任务的行动(Action)标识注意:为了获取任务信息,必须在程序清单中添加获取任务的使用许可,如下所示。文件名:AndroidManifest.xmluses-permissionandroid:name=”android.permission.GET_TASKS”/6.运行中应用程序进程信息通过Activity管理器接口的“getRunningAppProcesses”方法可以获取系统中正在运行的应用程序的进程信息接口(RunningAppProcessInfo),代码如下所示。-listActivityManager.RunningAppProcessInfoprocesses=service.getRunningAppProcesses();for(int=0;iprocesses.size();++i){RunningAppProcessInfoinfo=processes.get(i);}通过运行中应用程序的进程信息接口的公共属性就可以获取当前正在运行的应用程序的进程信息,表15-9是正在运行的应用程序的进程信息接口的属性说明。表15-9运行中应用程序进程信息接口的属性说明属性说明Pid进程IDProcessName进程名Importance重要等级进程的重要性等级,在ActivityManager.RunningAppProcessInfo接口中定义,表15-10是对进程的重要性等级的定义说明。表15-10进程重要性等级的定义说明标识说明IMPORTANCE_FOREGROUND前台进程IMPORTANCE_VISIBLE可见进程IMPORTANCE-SERVICE服务进程IMPORTANCE_BACKGROUND后台进程IMPORTANCE_EMPTY空置7.运行中服务通过Activity管理器接口的“getRunningServices”方法可以获取系统中正在运行的服务信息接口(RunningServiceInfo),代码如下所示。-ListActivityManager.RunningServiceInfoservices=Service.getRuningServices(Integer.MAX_VALUE);for(inti=0;iservices.size();++i){RunningServiceInfoinfo=services.get(i);}通过运行中服务信息接口的公共属性就可以获取当前正在运行的服务信息,表15-11是正在运行的服务信息接口的属性说明。表15-11正在运行的服务信息接口的属性说明属性说明pid服务进程process进程名service.getShortClassname()服务类名8.运行中任务通过Activity管理器接口的“getRunningTasks”方法可以获取系统中正在运行的任务信息接口(RunningTaskInfo),代码如下所示。ListActivityMagager.RunningTaskInforunningTasks=Service.getRunningTasks(Integer.MAX_VALUE);for(inti=0;irunningTasks.size();++i){RunningTaskInfoinfo=runningTasks.get(i);}通过正在运行任务信息接口的公共属性就可以获取系统中正在运行的任务信息,表15-12是在下运行任务信息接口的属性说明。表15-12正在运行任务信息接口的属性说明属性说明id任务IDbaseIntent.getAction()任务的行动标识15.1.3警报管理警报管理器(AlarmManager)用于访问系统的警报服务,定义于android.app包中。警报管理器允许用户预定自定义应用程序的运行时点,如定时程序。1.警报管理器接口获取警报管理口接口的代码如下所示。为了保证警报计时正确,还需要设置警报管理器的时区信息。代码如下所示。//获取系统警报管理器AlarmmanagermManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);//设置
本文标题:全《Android平台开发之旅》第15章
链接地址:https://www.777doc.com/doc-2687233 .html