WHUT能力拓展课设参考android手机的剩余电量显示.docx

上传人:b****6 文档编号:6175333 上传时间:2023-01-04 格式:DOCX 页数:15 大小:115.99KB
下载 相关 举报
WHUT能力拓展课设参考android手机的剩余电量显示.docx_第1页
第1页 / 共15页
WHUT能力拓展课设参考android手机的剩余电量显示.docx_第2页
第2页 / 共15页
WHUT能力拓展课设参考android手机的剩余电量显示.docx_第3页
第3页 / 共15页
WHUT能力拓展课设参考android手机的剩余电量显示.docx_第4页
第4页 / 共15页
WHUT能力拓展课设参考android手机的剩余电量显示.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

WHUT能力拓展课设参考android手机的剩余电量显示.docx

《WHUT能力拓展课设参考android手机的剩余电量显示.docx》由会员分享,可在线阅读,更多相关《WHUT能力拓展课设参考android手机的剩余电量显示.docx(15页珍藏版)》请在冰豆网上搜索。

WHUT能力拓展课设参考android手机的剩余电量显示.docx

WHUT能力拓展课设参考android手机的剩余电量显示

学号:

 

课程设计报告

 

题目

基于Android的自动显示剩余电量

学院

计算机科学与技术学院

专业

物联网工程

班级

姓名

指导教师

2013

06

21

一、背景知识

1、Android平台简介

Android是Google于2007年11月05日宣布的基于Linux平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

它采用软件堆层(SoftwareStack,又名软件叠层)的架构,主要分为三部分。

底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。

最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。

不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。

2、功能实现

本设计旨在为使用基于Android操作系统的移动设备(如手机、平板电脑等)的用户提供一种准确、方便的自动显示剩余变量的系统。

软件的开发使用Java语言android开发包和Eclipse开发环境。

 

二、环境配置

1、下载相关软件表

软件名称

对应下载网址

JDK6.0

Eclipse3.3

http:

//www.eclipse.org/downloads/

AndroidSDK

2、安装软件和配置环境

(1)安装JDK

下载好JDK是一个可执行安装程序,双击安装。

假设安装路径为C:

/ProgramFiles/Java/jdk1.6.0_05(当然其他路径也可以)。

JDK安装完成之后要设置系统环境变量:

我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置。

环境变量设置,分别设置三个环境变量:

JAVA_HOME、path变量、classpath变量。

①设置JAVA_HOME

在系统环境变量那一栏中,点“新建”JAVA_HOME(JAVA_HOME指向的是JDK的安装路径)。

变量名:

JAVA_HOME;变量值:

C:

/ProgramFiles/Java/jdk1.6.0_05。

设置JAVA_HOME量的目的

Ⅰ、为了方便引用,比如JDK安装C:

/ProgramFiles/Java/jdk1.6.0_05目录里,则设置JAVA_HOME为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串。

Ⅱ、归一原则。

当JDK路径改变的时候,仅需更改JAVA_HOME的变量值即可。

否则,就要更改任何用绝对路径引用JDK目录的文档,没有改全则某个程序找不到JDK,后果将导致系统崩溃。

Ⅲ、第三方软件会引用约定好的JAVA_HOME变量,否则不能正常使用该软件。

②设置path变量

在系统变量里找到path变量,选择“编辑”变量名:

path,变量值:

%JAVA_HOME%/bin。

设置path变量的目的:

使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等,这就要找到我们安装JDK的目录,比如我们的JDK安装在C:

/ProgramFiles/Java/jdk1.6.0_05目录下,那么在C:

/ProgramFiles/Java/jdk1.6.0_05/bin目录下就是我们常用的java应用程序,我们就需要把C:

/jdk1.6.0/bin这个目录加到path环境变量里面。

③设置classpath环境

在系统环境变量那一栏中点“新建”classpath。

变量名:

classpath,变量值:

.;%JAVA_HOME%/lib/;%JAVA_HOME%/jre/lib/(注意,CLASSPATH最前面是有个“.”的,表示当前目录,这样当我们运行javaAClass的时候,系统就会先在当前目录寻找AClass文件了)。

(2)安装Eclipse

将下载的Eclipse3.3压缩包解压到相应的安装目录即可。

(3)配置Android环境

为了让开发过程更轻松,Google还编写了一款ADT的Eclipse插件。

要想安装该插件,请执行以下步骤:

①启动Eclipse,然后选择Help>SoftwareUpdates。

②单击AvailableSoftware选项卡。

③单击AddSite按钮。

④输入Android更新站点的位置:

https:

//dl-

⑤现在,该Android站点应该出现在AvailableSoftware视图中。

选中该站点旁边的复选框,然后单击Install。

如果出现错误信息,原因可能是Eclipse的版本不对。

⑥单击Finish开始下载安装过程。

⑦安装完成后,重新启动Eclipse。

⑧Eclipse启动后可能出现几条错误信息,因为此时需要告诉你AndroidSDK位于何处。

选择Window>Preferences>Android,然后输入你在前面记下的SDK安装目录。

单击OK按钮。

 

三、需求分析

在移动设备的使用过程中,我们最担心的是移动设备没电而影响业务,所以及时显示电池容量功能变得越发重要了。

我们可以使用AndroidAPI里面的BroadcastReseiver类和Button的Listener类,当Reseiver被注册后会在后台等待被其他程序调用。

当指定要捕捉的Action发生时,Reseiver就会被调用,并运行onReseiver来实现里面的程序。

在本例中,将利用BroadcastReseiver的特性来获取手机电池的容量。

通过注册BroadcastReseiver时设置的IntentFilter来获取系统发出的Intent.ACTION_BATTERY_CHANGED,然后以此来获取电池容量。

 

四、功能设计

1、导入需要的类库,一些已经编译过的class文件

packageirdc.dian;

/*import相关class*/

importirdc.dian.R;

importandroid.app.Activity;

importandroid.app.Dialog;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.IntentFilter;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.Window;

importandroid.view.WindowManager;

importandroid.widget.Button;

importandroid.widget.TextView;

2、编写布局文件main.xml。

xmlversion="1.0"encoding="utf-8"?

>

xmlns:

android="

android:

id="@+id/layout1"

android:

background="@drawable/white"

android:

layout_width"fill_parent"

android:

layout_height"fill_parent"

>

android:

id="@+id/myTextView1"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

textColor="@drawable/blue"

android:

textSize="20sp"

android:

text="@string/str_title"

android:

layout_x="60px"

android:

layout_y="40px"

>

android:

id="@+id/myButton1"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/str_button1"

android:

textColor="@drawable/black"

android:

textSize="14sp"

android:

layout_x="80px"

android:

layout_y="90px"

>

3、编写主程序文件是dian.java。

(1)声明3个变量intLevel、intScale和mButton01,然后创建BroadcastReseiver,如果捕捉到的action是ACTION_BATTERY_CHANGED,则运行onBatteryInfoReceiver()。

publicclassdianextendsActivity

{

/*变量声明*/

privateintintLevel;

privateintintScale;

privateButtonmButton01;

/*创建BroadcastReceiver*/

PrivateBroadcastReceivermBatInfoReceiver=newBroadcastReceiver()

{

publicvoidonReceive(Contextcontext,Intentintent)

{

Stringaction=intent.getAction();

/*如果捕捉到的action是ACTION_BATTERY_CHANGED,

*就运行onBatteryInfoReceiver()*/

if(Intent.ACTION_BATTERY_CHANGED.equals(action))

{

intLevel=intent.getIntExtra("level",0);

intScale=intent.getIntExtra("scale",100);

onBatteryInfoReceiver(intLevel,intScale);

}

}

};

(2)在onCreate中载入主布局文件main.xml,然后初始化Button和设置点击后的动作,并注册一个系统BroadcastReseiver,用于访问电池计量。

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

/*载入main.xmlLayout*/

setContentView(R.layout.main);

/*初始化Button,并设置点击后的动作*/

mButton01=(Button)findViewById(R.id.myButton1);

mButton01.setOnClickListener(newButton.OnClickListener()

{

@Override

publicvoidonClick(Viewv)

{

/*注册一个系统BroadcastReceiver,作为访问电池计量之用*/

registerReceiver

mBatInfoReceiver,

newIntentFilter(Intent.ACTION_BATTERY_CHANGED)

);

}

});

}

(3)定义onBatteryInfoReceiver,当捕捉到ACTION_BATTERY_CHANGED时要运行的method,首先创建一个背景模糊的Window,且将对话窗口放在前景,然后将取得的电池计量显示与Dialog中,最后设置返回主画面的按钮。

/*捕捉到ACTION_BATTERY_CHANGED时要运行的method*/

publicvoidonBatteryInfoReceiver(intintLevel,intintScale)

{

/*create跳出的对话窗口*/

finalDialogd=newDialog(dian.this);

d.setTitle(R.string.str_dialog_title);

d.setContentView(R.layout.mydialog);

/*创建一个背景模糊的Window,且将对话窗口放在前景*/

Windowwindow=d.getWindow();

window.setFlags

WindowManager.LayoutParams.FLAG_BLUR_BEHIND,

WindowManager.LayoutParams.FLAG_BLUR_BEHIND

);

/*将取得的电池计量显示于Dialog中*/

TextViewmTextView02=(TextView)d.findViewById(R.id.myTextView2);

mTextView02.setText

getResources().getText(R.string.str_dialog_body)+

String.valueOf(intLevel*100/intScale)+"%"

);

/*设置返回主画面的按钮*/

ButtonmButton02=(Button)d.findViewById(R.id.myButton2);

mButton02.setOnClickListener(newButton.OnClickListener()

{

@Override

publicvoidonClick(Viewv)

{

/*反注册Receiver,并关闭对话窗口*/

unregisterReceiver(mBatInfoReceiver);

d.dismiss();

}

});

d.show();

}

}

 

五、运行结果

 

六、课程设计总结

通过此次课程设计,我学习了有关基于Android环境开发方面的知识。

在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我掌握的知识不再是纸上谈兵。

在课程设计过程中,我不断发现新问题,不断改正,不断领悟,不断获取。

最终的调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在同学的帮助和自己的学习下,终于游逆而解。

在今后的学习实践过程中,我一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事。

这次课程设计是一次能力拓展训练,是我的很多专业知识以及专业技能上的提升,同时又是一门思考课和专业课,给了我许多新问题,给了我很多思考的机会。

同时,课程设计让我感触很深。

使我对抽象的理论有了具体的认识。

通过这次课程设计,我学会了搭建Android开发环境,并对其有了初步的了解;对Java语言有了初步的了解,也深感Java语言的强大,决定好好学习一下。

这次课程设计,不仅培养了我独立思考、动手操作的能力,而且在各种其它能力上也都有了提高。

更重要的是,在课程设计过程上,我们学会了很多学习的方法,这是日后最实用的,真的是受益匪浅。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能学有所用。

 

 

七、参考文献

1、《Java从精通到入门》,魔乐科技(MLDN)软件实训中心编著,人民邮电出版社。

2、《Android开发从入门到精通》,扶松柏编著,北京希望电子出版社。

3、《Android编程入门经典》,[美]Wei-MengLee编著,何晨光、李洪刚译,清华大学出版社。

八、附录:

源程序

packageirdc.dian;

/*import相关class*/

importirdc.dian.R;

importandroid.app.Activity;

importandroid.app.Dialog;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.IntentFilter;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.Window;

importandroid.view.WindowManager;

importandroid.widget.Button;

importandroid.widget.TextView;

publicclassdianextendsActivity

{

/*变量声明*/

privateintintLevel;

privateintintScale;

privateButtonmButton01;

/*创建BroadcastReceiver*/

privateBroadcastReceivermBatInfoReceiver=newBroadcastReceiver()

{

publicvoidonReceive(Contextcontext,Intentintent)

{

Stringaction=intent.getAction();

/*如果捕捉到的action是ACTION_BATTERY_CHANGED,

*就运行onBatteryInfoReceiver()*/

if(Intent.ACTION_BATTERY_CHANGED.equals(action))

{

intLevel=intent.getIntExtra("level",0);

intScale=intent.getIntExtra("scale",100);

onBatteryInfoReceiver(intLevel,intScale);

}

}

};

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

/*载入main.xmlLayout*/

setContentView(R.layout.main);

/*初始化Button,并设置点击后的动作*/

mButton01=(Button)findViewById(R.id.myButton1);

mButton01.setOnClickListener(newButton.OnClickListener()

{

@Override

publicvoidonClick(Viewv)

{

/*注册一个系统BroadcastReceiver,作为访问电池计量之用*/

registerReceiver

mBatInfoReceiver,

newIntentFilter(Intent.ACTION_BATTERY_CHANGED)

);

}

});

}

/*捕捉到ACTION_BATTERY_CHANGED时要运行的method*/

publicvoidonBatteryInfoReceiver(intintLevel,intintScale)

{

/*create跳出的对话窗口*/

finalDialogd=newDialog(dian.this);

d.setTitle(R.string.str_dialog_title);

d.setContentView(R.layout.mydialog);

/*创建一个背景模糊的Window,且将对话窗口放在前景*/

Windowwindow=d.getWindow();

window.setFlags

WindowManager.LayoutParams.FLAG_BLUR_BEHIND,

WindowManager.LayoutParams.FLAG_BLUR_BEHIND

);

/*将取得的电池计量显示于Dialog中*/

TextViewmTextView02=(TextView)d.findViewById(R.id.myTextView2);

mTextView02.setText

getResources().getText(R.string.str_dialog_body)+

String.valueOf(intLevel*100/intScale)+"%"

);

/*设置返回主画面的按钮*/

ButtonmButton02=(Button)d.findViewById(R.id.myButton2);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1