目前,国内各移动互联网厂商推出了形形色色的电池管理软件,从格外强调电池保养的金山电池医生,到一个月连续更新三个版本的360省电王,都在为用户们延长手机电池的续航时间各出奇招。可见如何延长电池使用时间,是一个急需解决的问题。
1.2 技术介绍
开发Android应用最常用的语言为java语言,本软件也是使用java进行Android开发,开发工具为Eclipse Release 3.7.2,Android SDK版本为4.0。开发过程中使用数据库SQLite。 1.2.1 java技术
Java是一种夸平台的面向对象的编程语言,在1995年5月,由Sun Microsystems公司推出。Java技术有着非常优秀的高效性、安全性、通用性和平台移植性,所以它被广泛的应用在数据中心、电脑、游戏设计和控制、Super computer、手机和Internet等领域,同时它也有着全球最大的开发团体和社区群体。
Java是有Java编程语言、Java类文件格式、Java应用程序接口和Java VM组成。其中Java VM和Java 应用程序接口(API)构成了Java平台,由于Java平台有自己的虚拟机和API,所以它基本可以嵌入在所有的操作系统中,而且Java程序可以只需编译一次,就可以在各种操作系统中运行[6]。Java作为一种开发的技术,是目前已经非常流行和成熟的技术。
Java语言的特点 (1)简单性
Java是个精简的系统,无需强大的硬件支撑。Java和主流的开发语言C和C++很类似,所以很容易学习和使用。同时Java摒弃了C++中一些令人难以理解、容易犯错、很少使用的一些特性,如多重继承、运算符重载、指针和内存管理等,Java语言具有支持多线程、自动垃圾收集特性,程序开发者们则不必再为内存管理而担忧。
(2)面向对象
面向对象是Java最基本的特性。Java语言的设计完全是面向对象的,只支持单继承,但是可以实现接口之间的多继承,并且具有类和接口之间的实现机制,且支持动态绑定功能。它没有像C语言那样的面向过程的程序设计技术,所有的Java程序和applet均是对象。
(3)分布式
Java支持Internet的应用开发,它具有一个网络编程接口,包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序打开和访问网络上的对象特别方便。Java的远程方法激活机制在为开发者开发分布式应用时提供了一个重要的手段。
(4)健壮性
Java是一种强类型语言,它在编译和运行时要进行大量的类型检查。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java的数组并非采用指针实现,从而避免了数组越界的可能。Java通过自动垃圾收集器避免了许多由于内存管理而造成的错误。Java在程序中由于不采用指针来访问内存单元,从而也避免了许多错误发生的可能。
(5)结构中立
作为一种网络语言,Java程序在Java平台上要编译成中立的格式,这样才可以在该平台运行。所有运行Java的机器都可以运行这种中立的格式。所以同一个应用程序可以在不同平台上运行。
(6)安全性
Java通常被运用与网络,网络环境下,安全性是非常重要的。Java提供了一套安全的机制来防止恶意攻击。一方面,Java删除了C++中指针和释放内存等功能的操作,避免了黑客通过利用内存来进行破坏。另一方面,Java语言创建的浏览器,把语言功能和浏览器自身所提供的功能相结合,确保它更加安全。Java拥有多个层次的互锁保护措施,能够有效阻挡恶意破坏行为的发生。Java也对通过网络下载类提供一个安全防范机制,并且提供安全管理机制来为Java应用设置安全保护。
(7)可移植性
Java体系的可移植性来源于Java结构的中立性,这使得Java应用程序可以在任何具有Java解释器和Java虚拟机的任何操作系统上运行,这是Java得以可移植性的基础条件。Java有自己的基本数据类型及其运算法则,使Java数据得以在任何硬件平台上保持一致,同样也保证了Java语言的可移植性。同时Java编译器也是通过Java语言编写,Java运算系统的编制是依赖于POSIX方便移植的限制,Java的运行环境是用ANSI C实现的,这说明Java本身也具有可移植性。另一方面,Java语言的类库也体现可移植性。
(8)解释型的
Java程序在Java平台上被编译成字节格式,Java运行系统能直接对Java字节码进行解释执行,执行的过程中需要在类连接过程中嵌入到运行环境中。链接程序通常比编译程序所需资源少。
(9)高性能
虽然Java是解释执行程序,但是与那些解释型的高级脚本语言相比,但它具有非常高的性能。并且,Java可以在运行时直接将目标代码翻译成机器指令,因此这时候它具有更高的性能。
(10)多线程
对于Java语言来说,线程相当于一种特殊的对象,线程有时也称小进程,是一个大进程里分出来的小的独立运行的基本单位。它必须由Thread类来创建线程,通常有两种方法:Thread的构造子将一个实现了的Runnable接口对象通过包装转换成一个线程;Thread类中派生出一个子类并重写Run方法,这个类创建的对象成为一个线程。Java提供的多线程可以在同一个时间执行多个任务,即同时进行不同的操作或处理不同的事件。Java语言提供了多个线程之间的同步,多线程具有更好的网上交互性能和实时控制性能,并且在多媒体功能更能展现出多线程的优势。
(11)动态性
Java语言可以适应动态环境的变化。程序动态地装入运行过程中所需要的类,也可以在网络上来载入所需要的类信息。Java中的类有一个运行状态时刻的表示方法,可以进行类型检查,这是采用C++语言进行面向对象程序设计时所无法实现的。
1.2.2 Android技术
2007年11月5日,Google宣布一款基于Linux开发平台的开源手机操作系统Android,这款操作系统最初是由Andy Rubin开发,主要是运用于手机等移动平台,现在已经被Google收购注资。Android 主要用于便携手持设备,与Android竞争对象主要是苹果公司的iOS和微软公司的Windows Phone。
Android作为一款开放式的操作系统,开发者可以用Java作为编程语言来开发应用程序,也可以使用C/C++作为编程语言来开发应用程序,同时也可以应用一些脚本语言来开发编程,如tcl、php、python等等,通过MonoDroid工具,开发还能够运用C#作为编程语言来为Android开发应用程序。另外,2009年,Google特别发布了一款针对初学者的开发语言Android Simple,以方便初学者快速学会Android开发。在网页编程方面,各种开发语言,像HTML5、jquery、JavaScript、mobl等等都已经可以在Android上使用[7]。
Android系统架构和其他操作系统一样,采用了分层的思想。Android系统主要分为四个层,分别为应用程序层(Application)、应用程序框架层(Application Framework)、系统运行库层(Libraries)、linux核心层(Linux Kernel),如图1.2所示。
(1)应用程序层
Android平台包含了许多应用程序,它不仅仅是一款操作系统,比如SMS短信客户端程序、闹钟程序、锁屏程序、相机程序、Web浏览器、文件管理器等应用程序。这些应用程序都是运用Java语言开发,但是也可以用其他开发语言。Android开发者可以在该层开发各种应用程序,所有的应用程序都是共享系统中的数据库信息和系统库信息。
(2)应用程序框架层
应用程序框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该框架的架构设计简化了组件的重用,开发人员可以完全访问系统核心应用程序所需用的API框架信息,只要遵循框架的安全性机制,每一个程序都可以使用它所发布的功能模块,也可以通过继承而实现个性化的拓展。
应用程序都是需要一系列的服务和系统来支持,其中丰富而又可扩展的视图用来构建应用程序,内容提供器让应用程序之间数据共享,资源管理器提供非代码资源的访问,通知管理器可以在状态栏中显示应用程序的自定义信息,活动管理器用来管理常用的导航回退功能以及应用程序的生命周期。
(3)系统运行库层
系统运行库层可以分成两部分,分别是系统库和Android运行时,Android本身包含了一些C/C++库,这些库用过应用程序框架来被系统中的不同组件使用,同时为开发者提供服务。核心库包括系统C库、媒体库、Surface Manager、LibWebCore等等,系统C库专门为基于Embedded linux设备定制的,媒体库可以支持多种常用的视频、音频格式回放和录制,同时也可以查看图像文件,Surface Manager是对显示子系统的管理,并且提供了2D和3D图层的融合,LibWebCore可以支持Android浏览器和嵌入的Web视图的浏览器引擎。
(4)Linux内核层
Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。
Android系统具有以下特点: (1)开放性
Google与开放手机联盟合作开发了Android,Google通过与运营商、设备制造商、开发商和其他有关各方面结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
(2)应用程序无界限
Android上的应用程序可以通过标准API访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。
(3)应用程序是在平等条件下创建的
移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。
(4)应用程序可以并行运行
Android是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引起注意。
图1.2 Android系统架构图