1、WHUT能力拓展课设参考android手机的剩余电量显示学 号: 课程设计报告题 目基于Android的自动显示剩余电量学 院计算机科学与技术学院专 业物联网工程班 级 姓 名 指导教师 2013年06月21日一、背景知识1、Android平台简介Android是Google于2007年11月05日宣布的基于Linux平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual
2、Machine,由C+开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。2、功能实现本设计旨在为使用基于Android操作系统的移动设备(如手机、平板电脑等)的用户提供一种准确、方便的自动显示剩余变量的系统。软件的开发使用Java语言android开
3、发包和Eclipse 开发环境。二、环境配置1、下载相关软件表软件名称对应下载网址JDK6.0Eclipse 3.3http:/www.eclipse.org/downloads/Android SDK2、安装软件和配置环境(1)安装JDK下载好JDK是一个可执行安装程序,双击安装。假设安装路径为C:/Program Files/Java/jdk1.6.0_05(当然其他路径也可以)。JDK安装完成之后要设置系统环境变量: 我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置。环境变量设置,分别设置三个环境变量:JAVA_HOME、path变量、classpath变量。设置JAVA
4、_HOME在系统环境变量那一栏中,点“新建”JAVA_HOME(JAVA_HOME指向的是JDK的安装路径)。变量名:JAVA_HOME;变量值:C:/Program Files/Java/jdk1.6.0_05。设置JAVA_HOME量的目的、为了方便引用,比如JDK安装C:/Program Files/Java/jdk1.6.0_05目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串。、归一原则。当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可。否则,就要更改任何用绝对路径引用
5、JDK目录的文档,没有改全则某个程序找不到JDK, 后果将导致系统崩溃。、第三方软件会引用约定好的JAVA_HOME变量, 否则不能正常使用该软件。设置path变量在系统变量里找到path变量,选择“编辑”变量名:path ,变量值: %JAVA_HOME%/bin。设置path变量的目的:使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等,这就要找到我们安装JDK的目录,比如我们的JDK安装在C:/Program Files/Java/jdk1.6.0_05目录下,那么在C:/Program Files/Java/jdk1.6.0_05/bin目录下就
6、是我们常用的java应用程序,我们就需要把C:/jdk1.6.0/bin这个目录加到path环境变量里面。设置classpath环境在系统环境变量那一栏中点“新建”classpath。变量名: classpath ,变量值:.;%JAVA_HOME%/lib/;%JAVA_HOME%/jre/lib/(注意,CLASSPATH最前面是有个“.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找AClass文件了)。(2)安装Eclipse将下载的Eclipse3.3压缩包解压到相应的安装目录即可。(3)配置Android环境为了让开发过程更轻松,Google
7、还编写了一款ADT的Eclipse插件。要想安装该插件,请执行以下步骤:启动Eclipse,然后选择HelpSoftware Updates。单击Available Software选项卡。单击Add Site按钮。输入Android更新站点的位置:https:/dl-现在,该Android站点应该出现在Available Software视图中。选中该站点旁边的复选框,然后单击Install。如果出现错误信息,原因可能是Eclipse的版本不对。单击Finish开始下载安装过程。安装完成后,重新启动Eclipse。Eclipse启动后可能出现几条错误信息,因为此时需要告诉你Android S
8、DK位于何处。选择WindowPreferencesAndroid,然后输入你在前面记下的SDK安装目录。单击OK按钮。三、需求分析在移动设备的使用过程中,我们最担心的是移动设备没电而影响业务,所以及时显示电池容量功能变得越发重要了。 我们可以使用Android API里面的BroadcastReseiver类和Button的Listener类,当Reseiver被注册后会在后台等待被其他程序调用。当指定要捕捉的Action发生时,Reseiver就会被调用,并运行onReseiver来实现里面的程序。在本例中,将利用BroadcastReseiver的特性来获取手机电池的容量。通过注册Bro
9、adcastReseiver时设置的IntentFilter来获取系统发出的Intent.ACTION_BATTERY_CHANGED,然后以此来获取电池容量。四、功能设计1、导入需要的类库,一些已经编译过的class文件package irdc.dian;/* import相关class */import irdc.dian.R;import android.app.Activity;import android.app.Dialog;import android.content.BroadcastReceiver;import android.content.Context;import
10、android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.Button;import android.widget.TextView;2、编写布局文件main.xml。 3、编写主程序文件是dian.java。(1)声明3个变量intLevel、intScale和mButt
11、on01,然后创建BroadcastReseiver,如果捕捉到的action是ACTION_BATTERY_CHANGED,则运行onBatteryInfoReceiver()。public class dian extends Activity /* 变量声明 */ private int intLevel; private int intScale; private Button mButton01; /* 创建BroadcastReceiver */ Private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver() p
12、ublic void onReceive(Context context, Intent intent) String action = intent.getAction(); /* 如果捕捉到的action是ACTION_BATTERY_CHANGED, * 就运行onBatteryInfoReceiver() */ if (Intent.ACTION_BATTERY_CHANGED.equals(action) intLevel = intent.getIntExtra(level, 0); intScale = intent.getIntExtra(scale, 100); onBatt
13、eryInfoReceiver(intLevel,intScale); ;(2)在onCreate中载入主布局文件main.xml,然后初始化Button和设置点击后的动作,并注册一个系统BroadcastReseiver,用于访问电池计量。/* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /* 载入main.xml Layout */ setContentVie
14、w(R.layout.main); /* 初始化Button,并设置点击后的动作 */ mButton01 = (Button)findViewById(R.id.myButton1); mButton01.setOnClickListener(new Button.OnClickListener() Override public void onClick(View v) /* 注册一个系统 BroadcastReceiver,作为访问电池计量之用 */ registerReceiver ( mBatInfoReceiver, new IntentFilter(Intent.ACTION_B
15、ATTERY_CHANGED) ); ); (3)定义onBatteryInfoReceiver,当捕捉到ACTION_BATTERY_CHANGED时要运行的method,首先创建一个背景模糊的Window,且将对话窗口放在前景,然后将取得的电池计量显示与Dialog中,最后设置返回主画面的按钮。/* 捕捉到ACTION_BATTERY_CHANGED时要运行的method */ public void onBatteryInfoReceiver(int intLevel, int intScale) /* create 跳出的对话窗口 */ final Dialog d = new Dia
16、log(dian.this); d.setTitle(R.string.str_dialog_title); d.setContentView(R.layout.mydialog); /* 创建一个背景模糊的Window,且将对话窗口放在前景 */ Window window = d.getWindow(); window.setFlags ( WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND ); /* 将取得的电池计量显示于Dialog中 */ TextView
17、mTextView02=(TextView)d.findViewById(R.id.myTextView2); mTextView02.setText ( getResources().getText(R.string.str_dialog_body)+ String.valueOf(intLevel * 100 / intScale) + % ); /* 设置返回主画面的按钮 */ Button mButton02 = (Button)d.findViewById(R.id.myButton2); mButton02.setOnClickListener(new Button.OnClick
18、Listener() Override public void onClick(View v) /* 反注册Receiver,并关闭对话窗口 */ unregisterReceiver(mBatInfoReceiver); d.dismiss(); ); d.show(); 五、运行结果六、课程设计总结通过此次课程设计,我学习了有关基于Android环境开发方面的知识。在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我掌握的知识不再是纸上谈兵。在课程设计过程中,我不断发现新问题
19、,不断改正,不断领悟,不断获取。最终的调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在同学的帮助和自己的学习下,终于游逆而解。在今后的学习实践过程中,我一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事。 这次课程设计是一次能力拓展训练,是我的很多专业知识以及专业技能上的提升,同时又是一门思考课和专业课,给了我许多新问题,给了我很多思考的机会。同时,课程设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我学会了搭建Android开发环境,并
20、对其有了初步的了解;对Java语言有了初步的了解,也深感Java语言的强大,决定好好学习一下。这次课程设计,不仅培养了我独立思考、动手操作的能力,而且在各种其它能力上也都有了提高。更重要的是,在课程设计过程上,我们学会了很多学习的方法,这是日后最实用的,真的是受益匪浅。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能学有所用。七、参考
21、文献1、Java从精通到入门,魔乐科技(MLDN)软件实训中心编著,人民邮电出版社。2、Android开发从入门到精通,扶松柏编著,北京希望电子出版社。3、Android编程入门经典,美Wei-Meng Lee编著,何晨光、李洪刚译,清华大学出版社。八、附录:源程序package irdc.dian;/* import相关class */import irdc.dian.R;import android.app.Activity;import android.app.Dialog;import android.content.BroadcastReceiver;import android.c
22、ontent.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.Button;import android.widget.TextView;public class dian extends Activity /* 变量声明 */ pr
23、ivate int intLevel; private int intScale; private Button mButton01; /* 创建BroadcastReceiver */ private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver() public void onReceive(Context context, Intent intent) String action = intent.getAction(); /* 如果捕捉到的action是ACTION_BATTERY_CHANGED, * 就运行onBa
24、tteryInfoReceiver() */ if (Intent.ACTION_BATTERY_CHANGED.equals(action) intLevel = intent.getIntExtra(level, 0); intScale = intent.getIntExtra(scale, 100); onBatteryInfoReceiver(intLevel,intScale); ; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceS
25、tate) super.onCreate(savedInstanceState); /* 载入main.xml Layout */ setContentView(R.layout.main); /* 初始化Button,并设置点击后的动作 */ mButton01 = (Button)findViewById(R.id.myButton1); mButton01.setOnClickListener(new Button.OnClickListener() Override public void onClick(View v) /* 注册一个系统 BroadcastReceiver,作为访问
26、电池计量之用 */ registerReceiver ( mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED) ); ); /* 捕捉到ACTION_BATTERY_CHANGED时要运行的method */ public void onBatteryInfoReceiver(int intLevel, int intScale) /* create 跳出的对话窗口 */ final Dialog d = new Dialog(dian.this); d.setTitle(R.string.str_dialog_ti
27、tle); d.setContentView(R.layout.mydialog); /* 创建一个背景模糊的Window,且将对话窗口放在前景 */ Window window = d.getWindow(); window.setFlags ( WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND ); /* 将取得的电池计量显示于Dialog中 */ TextView mTextView02=(TextView)d.findViewById(R.id.myTextView2); mTextView02.setText ( getResources().getText(R.string.str_dialog_body)+ String.valueOf(intLevel * 100 / intScale) + % ); /* 设置返回主画面的按钮 */ Button mButton02 = (Button)d.findViewById(R.id.myButton2);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1