关键词: 移动
安卓论文总结报告(精选4篇)
篇1:安卓论文总结报告
1.绪论
1.1课题背景
随着移动通信与Internet向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian,Windows Mobile,PalmOS等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开发性很强的平台。经过多年的发展,第三代数字通信(3G)技术活动了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此与200X年11月推出了一个专为移动设备设计的软件平台——Android。
Android 是一套真正意义上的开发性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android 是由Linux+Java构成的开源软件,允许所有厂商和个人在其基础上进行开发。Android平台的开放性等特点既能促进技术(包括平台本身)的创新,又有助于降低开发成本,还可以是运营商能非常方便地制定自己的特色化的产品。因此,它具有很大的市场发展潜力。
根据中国互联网信息中心(CNNIC)发布的《第22次中国互联网络发展状况统计报告》显示,截止6月底,我国网民数量达到了2.53亿,首次大幅超过美国,网民规模跃居世界第一位, 其中手机网民达到7305万,手机上网成为网络接入的一个重要发展方向。
1.2相关技术的发展现状
1.2.1手机操作系统的发展现状
Palm OS是一套专门为掌上电脑编写的操作系统,是一种轻量级、比较开放的操作系统,占用的内存非常小,允许用户在其基础上编写和修改相关软件,是支持的应用程序更加丰富多彩。Plam 在其它方面也还存在一些不足,如Plam操作系统本身不具备录音、MP3播放功能等,但是可以通过加入第三方软件或硬件设备来实现。其代表性的产品有Palm m505、Palm m500、Palm III等。
Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、SyncML以及3G技术。
Windows mobile系列操作系统是从微软计算机的`Windows操作系统上变化而来的。Windows mobile系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件设置(如内存、储存卡容量等)上也采用其他操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。Windows mobile系列操作系统包括SmartPhone以及Pocket PC Phone两种平台。Pocket PC Phone主要用于掌上电脑型的智能手机,而SmartPhone则主要为手上智能手机提供操作系统。
Linux系统是一个源代码开放的操作系统。由于其开源性,手机制造商可以根据实际情况开放自己的Linux手机操作系统,从而也能够吸引更多的软件制造商在其上开发更多的应用软件,丰富第三方的应用。但是Linux操作系统也还存在一些不足,集成开放环境和基于Linux的产品与PC的连接性比较差等。
1.3论文组织结构
本文首先分析了系统的研究背景,介绍了当前手机操作系统、即时通讯软件的发展现状和即时通讯协议,以及本文的主要内容。
第二章,介绍了Android的特征、Android的架构以及Android应用的构成和工作机制,并对
Android与其它手机操作系统进行了比较,说明了Android的优势。
篇2:安卓论文总结报告
学 院:
基于Android平台的学生教务信息管理系统
一、 课题的研究目的和意义
学生教务系统是一个学校学生管理中不可缺少的一部分,对于学校的管理者以及学生本身来说都至关重要。
互联网的普及和网上教务系统的更趋向于成熟化,系统应该为学生用户提供更加方便的查询手段与信息管理方式。
而计算机的不可移动性及系统本身繁琐的登陆认证、查询操作使系统使用带来不方便。
开发一款基于智能手机平台、功能简单、可随时利用无线网络进行在线选课、成绩查
询、了解校园资讯的软件,为学生提供方便、可移动、准确的服务
在安卓手机的逐渐普及下,越来越多的学生接触并使用安卓系统的移动终端,例如,成为学生生活中的重要工具。
在校园内,学校校园网站为学生提供学生课程表、学生选课、学生成绩等信息管理,为学生的校园生活 提供直接信息,随着移动互联网络的发展,学生大都采用手机进行随时随地上网,登陆校园网来了解自己的校园信息,
但是智能手机无论从执行效率、内存大小、屏幕大小以及操作方式都与计算机有很大差别,如果单纯用智能手机里浏览器通过网址连接校园网站获取信息,如同计算机里显示样 式一样,就会给智能手机带来一定的负担。
因此为了使学生更好的利用手机方便学习与校园生活, 开发基于Android平台的智能移动终端应用软件,依托移动互联网络和校园网站,让学生可以随时随地了解校园生活和学业信息,极大地方便学生。
二.国内外发展状况
Android是一种基于Linux的.自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由Andy Rubin开发,主要支持手机。
8月由Google收购注资。
11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
第一部Android智能手机发布于10月。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。
09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
近几年教务系统的网站也在中国普遍发展。
但其次系统界面不友好,不够人性化。
系统性能差,没有进行充分的优化,尤其在选课高峰期的时候,大量学生同时选课时经常出现登陆和选课速度极慢,甚至出现服务器死机瘫痪现象,以致于一些学生不能选课而国外的教学科研软件与国内相比开发的早而且比较成熟。
早在七十年代末,美国就建成了NSFNET(国家科学基金网),其课题的申报及课
题的进展情况汇报都在网上进行。
其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。
目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。
所有这些都表明,基于Internet的校园网的应用已深入到校园内的各个方面
三、研究内容
本系统的web部分基于B/S结构模式开发,采用较为流行的J2EE技术体系,主要运用MVC模式Struts2架构设计,使用JSP+Servlet+JavaBean(MVC)开发技术来开发,以MyEclipse作为代码编写的环境工具,使用Tomcat的配置,以Oracle作为后台数据库,实现表单和数据库之间的数据交换。
软件简化学生使用电脑登录校园网的复杂繁琐的查询步骤,通过手机学生直接访问校园网站,通 过分析提出条件,获取必要信息,快速准确查找所需信息,更直观显示出来。
系统区分教师与学生用户,各自获取所需要不同功能,为学校与学生、教师之间建立更好的平台.。
根据需求分析得到系统的业务情况,并设计出本系统框架、流程及其用例,以面向对象编程的方式,为系统的几个功能模块实现了实例化。
现可将系统按照不同的功能进行模块的划分,本系统共分为三个模块,分别是用户管理模块、学生模块与管理模块,并确立了每个模块的具体功能。
课题主要研究并实现的内容有如下几方面。
(1)数据库的设计和实现,根据系统需求以及功能分析进行设计。
(2)web端系统框架设计,为了保证系统具有更好的安全性以及可维护性和可扩展性,将采用四层体系结构:数据模型层,数据访问层,业务逻辑层以及表示层。
具体实现如下。
①教务系统的各页面实现。
尤其是首页,根据用户的账号密码进行登录。
②用户管理模块的实现。
其中包括,用户注册,修改密码。
③管理模块的实现。
实现对于学生以及学校的各种信息资源增加、修改,删除。
系统功能结构图如图1所示。
图1 Web系统功能结构图
(3) 手机端学生模块的实现。
能够完成输入学生的基本信息,选择课程,查询课程成绩,查询个人信息,了解校园资讯等功能。
android系统功能结构图如图2所示
图2 Android系统功能结构图
四、拟采用的方法和手段
1.使用的技术和方法
网页设计采用JSP技术和B/S体系结构设计本系统,主要用到了Oracle数据库和Tomcat开发平台通过ODBC-JDBC驱动来连接数据库、进而来管理和控制。
B/S架构三层体系结构如图3所示。
手机端Android平台,开发软件选择为Eclipse IDE,版本选择为3.6,另需安装jdk7,Android的SDK包,以及Android Development Tool 插件(简称ADT插件)。
安卓的网络连接模块对于web端与手机端的数据交换来说是必不可少的部分。
它提供了客户端与服务器的网络连接功能,是两者交换的桥梁。
通过网络连接,客户端可以发送不同请求,从服务器获得需要的资源。
由于上层功能的多样性,网络连接模块的设计在保证基础的通信功能的同时,需要针对不同的需求,提供一些差异性的接口。
2.研究过程中可能出现的问题
在开发软件系统时后不可避免地会出现种种错误,有语法错误和逻辑错误。
语法错误很容易解决,逻辑错误往往经过调试,甚至只有经过用户使用后才可以得到解决。
应该是主要解决的问题,如Web开发,数据库连接,分页的设置等等。
手机端主要解决问题,如数据显示页面的设计、数据与服务器端的通讯、数据在手机端的存储和处理等等。
五、工作计划及进度安排
参考文献
[1] 王国辉 ,李永强.视频学Java Web[M].北京:人民邮电出版社,.
[2] 王瑛,张玉花,李祥胜等.Oracle数据库基本教程[M].北京:人民邮电出版社,.
[3] Thomas Kyte. Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构[M].北京:人民邮电出版社,2011.
[4] 斳岩,姚尚朗.Android开发入门与实践[M].北京:人民邮电出版社,.
[5] 吴善财.Android基础开发与实践[M].北京:清华大学出版社,2012.
[6] 张跃平. JSP程序设计[M].北京:清华大学出版社, 2009
[7] 黄敏伟.Android平台的即时通信系统客户端设计方案[D].陕西渭南:陕西铁路工程事业技术院校,2011.
[8] 任赵强. 网页制作与JSP技术[M].北京:机械工业出版社, 2009 .
[9] Schildt,H.Java:the Compelete Reference,J2SE 5Edition,.
[10]Marziah Karch.Android for Work[M].Berkeley:Apress,2010.
[11]Joshua Bloch.Effective Java,2009.
篇3:安卓实验报告
班级:学号:姓名:
xxxxx
11111111
xxxx
实验一:Activity生命周期的测试
一:实验目的
掌握使用Eclipse开发Android应用开发程序的方法; 掌握Android虚拟设备的创建方法; 了解Android的程序结构;
了解使用命令行创建Android程序方法;
了解Activity生命周期,理解Activity事件回调,onRestoreInstanceState()和 onSaveInstanceState两个函数的使用。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
(1)正常启动ActivityLife,然后单击用户界面的“结束程序”按钮关闭程序。
(2)正常启动ACtivityLife,然后通过“拨号键”启动内置的拨号程序,再通过“回 退建” 退出拨号程序,使ActivityLife重新显示在屏幕中。
四:实验核心代码
package com.example.activitylife;
import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.os.Build;
public class MainActivity extends Activity { private static String TAG=“LIFECYCLE”;@Override
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);Log.i(TAG,“(1)onCreate()”);Button button =(Button)findViewById(R.id.btn_finish);button.setOnClickListener(new OnClickListener(){
public void onClick(View view){
// TODO Auto-generated method stub
finish();
} });}
@Override
protected void onStart(){ // TODO Auto-generated method stub
super.onStart();Log.i(TAG,“(2)onStart()”);} @Override
protected void onRestoreInstanceState(Bundle savedInstanceState){ // TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);Log.i(TAG,“(3)onRestoreInstanceState()”);} @Override
protected void onResume(){ // TODO Auto-generated method stub
super.onResume();Log.i(TAG,“(4)onResume()”);} @Override
protected void onSaveInstanceState(Bundle outState){ // TODO Auto-generated method stub
super.onSaveInstanceState(outState);Log.i(TAG,“(5)onSaveInstanceState()”);} @Override
protected void onRestart(){ // TODO Auto-generated method stub
super.onRestart();Log.i(TAG,“(6)onRestart()”);} @Override
protected void onPause(){ // TODO Auto-generated method stub
super.onPause();Log.i(TAG,“(7)onPause()”);} @Override
protected void onStop(){ // TODO Auto-generated method stub
super.onStop();Log.i(TAG,“(8)onStop()”);} @Override
protected void onDestroy(){ // TODO Auto-generated method stub
super.onDestroy();Log.i(TAG,“(9)onDestroy()”);} } 五:运行结果截图:
实验二:用户界面——自我介绍
一:实验目的:
了解各种界面控件的使用方法;
掌握按键事件和触摸事件的处理方法;
掌握radioButton和radioGroup的使用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
要求写一个自我介绍的安卓应用,包括姓名,性别,爱好,其中性别用radioButton选项编写,点击提交时,姓名,性别,爱好会在下面显示出来。
四:实验核心代码:
public class MainActivity extends Activity { private EditText editText1;private EditText editText2;private EditText editText3;private TextView textView1;private TextView textView2;private TextView textView3;private RadioGroup radioGroup;private RadioButton radioButton1;private RadioButton radioButton2;private Button button;protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 =(EditText)findViewById(R.id.e1);
editText2 =(EditText)findViewById(R.id.e2);
textView1 =(TextView)findViewById(R.id.t1);
textView2 =(TextView)findViewById(R.id.t2);
textView3 =(TextView)findViewById(R.id.t3);
radioGroup =(RadioGroup)findViewById(R.id.RadioGroup1);
radioButton1 =(RadioButton)findViewById(R.id.RadioButton1);
radioButton2 =(RadioButton)findViewById(R.id.RadioButton2);
button =(Button)findViewById(R.id.button1);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(RadioGroup arg0, final int arg1){
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
String str = editText1.getText().toString().trim();
String str1 = editText2.getText().toString().trim();
textView1.setText(“姓名:”+str);
textView3.setText(“爱好:”+str1);
if(arg1 == R.id.RadioButton1)
textView2.setText(“性别:”+“男”);
else if(arg1 == R.id.RadioButton2)
textView2.setText(“性别:”+“女”);
}
});
}
});} } 五:运行结果截图:
实验三:不同界面的切换
一:实验目的
掌握各种界面布局的特点和使用方法;
掌握选项菜单,子菜单和快捷菜单的使用方法。
二;实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三;实验内容:
设计一个Tab标签页,实现LinearLayout,RelativeLayout,AbsoluteLayout三种分页面之间的切换,每个页面的内容包括用户名和确定,取消两个按钮
四:实验核心代码: AndroidMainfest.xml:
public class MainActivity extends TabActivity { protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TabHost tabHost=getTabHost();LayoutInflater.from(this).inflate(R.layout.tab1,tabHost.getTabContentView(),true);LayoutInflater.from(this).inflate(R.layout.tab2,tabHost.getTabContentView(),true);LayoutInflater.from(this).inflate(R.layout.tab3,tabHost.getTabContentView(),true);tabHost.addTab(tabHost.newTabSpec(“TAB1”).setIndicator(“线性布局”).setContent(R.id.layout01));tabHost.addTab(tabHost.newTabSpec(“TAB1”).setIndicator(“绝对布局”).setContent(R.id.layout02));tabHost.addTab(tabHost.newTabSpec(“TAB1”).setIndicator(“相对布局”).setContent(R.id.layout03));} } Tab1,java public class Tab1 extends Activity { public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);} }
Tab2.java public class Tab2 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.tab2);} }
Tab3.java public class Tab3 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.tab3);} }
五:运行结果截图:
实验四:登陆界面和广播消息
一:实验目的
了解使用Intent进行组件通信的原理; 了解Intent过滤器的原理与匹配机制;
掌握发送和接受广播消息的方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
先写一个登陆界面,包括用户名,密码,点击登陆时实现页面的跳转功能,在第二个页面使用Intent发送消息,并调用sendBroadcast()函数把Intent携带的消息传送出去,用BroadcastReceiver接受广播消息,在页面下方显示广播内容。
四;实验核心代码:
public class MainActivity extends Activity { private Button button;@Override
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button)findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
Intent intent=new Intent(MainActivity.this,Second.class);
startActivity(intent);
} });} } public class Second extends Activity { private Button button2;private EditText editText;protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent=getIntent();
editText=(EditText)findViewById(R.id.e1);
button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
Intent intent=new
Intent(“com.example.broadcasttest.MY_BROADCAST”);
intent.putExtra(“message”, editText.getText().toString());
sendBroadcast(intent);
}
});
}
public class MyBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent){
String msg=intent.getStringExtra(“message”);
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();} }
android:name=“.Second”>
五:运行结果截图
实验五:Service绑定实现数据运算
一:实验目的
了解Service的原理和用途;
掌握本地服务的管理和方法; 掌握服务的隐式启动和显示启动方法;
掌握远程服务的绑定和调用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
以绑定方式使用Service,获取Service实例,当点击绑定服务时可以实现两个数的求差和比较大小功能,并输出结果,当点击取消绑定服务时,则无法运算。
四:实验核心代码
public class MathService extends Service{ private final IBinder mBinder=new LocalBinder();public class LocalBinder extends Binder{ MathService getService(){
return MathService.this;} } public IBinder onBind(Intent intent){ Toast.makeText(this, “本地绑定:MathService”,Toast.LENGTH_SHORT).show();return mBinder;}
public boolean onUnbind(Intent intent){ Toast.makeText(this, “取消本地绑定:MathService”, Toast.LENGTH_SHORT).show();return false;}
public long sub(long a,long b){ return a-b;}
public int compare(long a,long b){ if(a>b)return 1;else if(a==b)return 0;else return-1;
} }
public class MainActivity extends Activity { private MathService mathService;private Button button1;private Button button2;private Button button3;private Button button4;private EditText editText1;private EditText editText2;private EditText editText3;private boolean isBound=false;@Override
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText1=(EditText)findViewById(R.id.e1);editText2=(EditText)findViewById(R.id.e2);editText3=(EditText)findViewById(R.id.e3);button1=(Button)findViewById(R.id.but1);button2=(Button)findViewById(R.id.but2);button3=(Button)findViewById(R.id.but3);button4=(Button)findViewById(R.id.but4);button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(!isBound){
final Intent serviceIntent=new Intent(MainActivity.this,MathService.class);
bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
isBound=true;
}
}
});button4.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){ if(isBound){
isBound=false;unbindService(mConnection);
mathService=null;}
} });
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(mathService==null){
editText3.setText(“未绑定服务”);
return;
}
String a = editText1.getText().toString();
long a1 = Long.parseLong(a);
String b = editText2.getText().toString();
long b1 = Long.parseLong(b);
long result=mathService.sub(a1, b1);
String msg=String.valueOf(a1)+“-”+String.valueOf(b)+
“=”+String.valueOf(result);
editText3.setText(msg);
} });
button3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(mathService==null){
editText3.setText(“未绑定服务”);
return;
}
String a = editText1.getText().toString();
long a1 = Long.parseLong(a);
String b = editText2.getText().toString();
long b1 = Long.parseLong(b);
long result=mathService.compare(a1, b1);
if(result==1){
editText3.setText(a+“>”+b);
}
else if(result==0){
editText3.setText(a+“=”+b);
}
else {
editText3.setText(a+“<”+b);
}
} });} private ServiceConnection mConnection=new ServiceConnection(){
public void onServiceDisconnected(ComponentName arg0){
mathService=null;
}
public void onServiceConnected(ComponentName name, IBinder service){
mathService=((MathService.LocalBinder)service).getService();
} };}
实验六:SQLite实现用户的增删改查
一:实验目的
了解SQLite数据库的特点和体系及结构;
掌握SQLite数据库的建立和操作方法;
理解ContentProvide的用途和原理;
掌握ContentProvider的创建和使用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
使用SQlite数据库实现用户(包括:姓名,年龄,身高)的添加数据,全部显示,清除显示,全部删除,ID删除,ID查询,ID更新的功能。
四:实验核心代码
public class MainActivity extends ActionBarActivity { private EditText et_name;private EditText et_sex;private EditText et_department;private EditText et_id;private EditText et_salary;private MyOpenHelper oh;private SQLiteDatabase db;private TextView tv;private LinearLayout ll;@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oh = new MyOpenHelper(MainActivity.this, “test.db”, null, 1);
db = oh.getWritableDatabase();
et_name =(EditText)findViewById(R.id.et_name);
et_sex =(EditText)findViewById(R.id.et_sex);
et_department =(EditText)findViewById(R.id.et_department);
et_salary =(EditText)findViewById(R.id.et_salary);
et_id =(EditText)findViewById(R.id.et_id);
ll =(LinearLayout)findViewById(R.id.ll);}
public void add(View v){
db = oh.getWritableDatabase();
String name=et_name.getText().toString();
String sex=et_sex.getText().toString();
String department=et_department.getText().toString();
String salary=et_salary.getText().toString();
ContentValues values=new ContentValues();
values.put(“name”,name);
values.put(“sex”, sex);
values.put(“department”,department);
values.put(“salary”, salary);
db.insert(“staff”, null, values);
tv=new TextView(MainActivity.this);
tv.setText(“添加成功”);
db.close();} public void show(View v){
db = oh.getWritableDatabase();
Cursor cursor=db.query(“staff”, null, null, null, null, null, null, null);
while(cursor.moveToNext()){
String id=cursor.getString(cursor.getColumnIndex(“_id”));
String name=cursor.getString(cursor.getColumnIndex(“name”));
String sex=cursor.getString(cursor.getColumnIndex(“sex”));
String department=cursor.getString(cursor.getColumnIndex(“department”));
String salary=cursor.getString(cursor.getColumnIndex(“salary”));
tv=new TextView(MainActivity.this);
tv.setText(“ID:”+id+“;”+“Name:”+name+“;”+“Sex:”+sex+“;”+“Department:”+department+“;”+“Salary”+salary);
ll.addView(tv);
}
db.close();} public void clear(View v){
ll.removeAllViews();} public void deleteAll(View v){
db = oh.getWritableDatabase();
db.delete(“staff”, null, null);
tv=new TextView(MainActivity.this);
tv.setText(“删除成功”);
db.close();}
public void deleteById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
db.delete(“staff”, “_id=?”, new String[]{id});
db.close();
tv=new TextView(MainActivity.this);
tv.setText(“ID删除成功”);} public void findById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
Cursor cursor=db.query(“staff”, null, “_id=?”, new String[]{id}, null, null, null, null);
while(cursor.moveToNext()){
id=cursor.getString(cursor.getColumnIndex(“_id”));
String name=cursor.getString(cursor.getColumnIndex(“name”));
String sex=cursor.getString(cursor.getColumnIndex(“sex”));
String department=cursor.getString(cursor.getColumnIndex(“department”));
String salary=cursor.getString(cursor.getColumnIndex(“salary”));
tv=new TextView(MainActivity.this);
tv.setText(id+“;”+name+“;”+sex+“;”+department+“;”+salary);
ll.addView(tv);
tv=new TextView(MainActivity.this);
tv.setText(“ID查询成功”);
}
db.close();} public void updateById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
String name=et_name.getText().toString();
String sex=et_sex.getText().toString();
String department=et_department.getText().toString();
String salary=et_salary.getText().toString();
ContentValues values=new ContentValues();
values.put(“name”,name);
values.put(“sex”, sex);
values.put(“department”,department);
values.put(“salary”, salary);
db.update(“staff”, values, “_id=?”, new String[]{id});
tv=new TextView(MainActivity.this);
tv.setText(“更新ID成功”);
db.close();} }
public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context, String name, CursorFactory factory,int version){
super(context, name, factory, version);}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(“create table staff(_id integer primary key autoincrement,name text,sex text,department text,salary float)”);}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){} }
五:运行结果截图
实验七:天气预报 一:实验目的
了解位置服务的概念;
了解地图密钥的申请方法;
掌握获取地理信息的方法;
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备(AVD)
三:实验内容
写一个项目,实现显示天气预报的用户界面,显示已发送SMS短信的用户界面,不同地区天气的转换
四:实验核心代码
package com.example.weather;
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;
import net.sf.json.JSONArray;import net.sf.json.JSONObject;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.view.View;import android.widget.ArrayAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;
import com.zy.bean.Sms;import com.zy.bean.Weather;
public class MainActivity extends Activity { private MyConn conn = new MyConn();;private EditText et_city;private TextView tv_result;private ImageView iv_weather;private Handler handler;private Intent intent;private MyOpenHelper oh;private ServiceFunctions sFunctions;private MyArrayAdapter myArrayAdapter = null;private ListView lv;private int a = 1;private Weather weather;private List
@Override protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oh = new MyOpenHelper(MainActivity.this, “weatherdemo.db”, null, 1);
// System.out.println(“数据库创建完”);
et_city =(EditText)findViewById(R.id.et_city);
tv_result =(TextView)findViewById(R.id.tv_result);
iv_weather =(ImageView)findViewById(R.id.iv_weather);
lv =(ListView)findViewById(R.id.lv);
// System.out.println(“lv找到了”);
intent = new Intent(this, MyService.class);
startService(intent);
Toast.makeText(MainActivity.this, “服务启动”, 0).show();
bindService(intent, conn, BIND_AUTO_CREATE);
Toast.makeText(MainActivity.this, “服务绑定”, 0).show();
handler = new Handler(new Handler.Callback(){
@Override
public boolean handleMessage(Message msg){
final Weather weather =(Weather)msg.obj;
tv_result.setText(weather.toString());
}
new Thread(new Runnable(){ @Override public void run(){
// TODO Auto-generated method stub
try {
URL url = new URL(weather.getDayPictureUrl());
HttpURLConnection con =(HttpURLConnection)url
.openConnection();
con.setRequestMethod(“GET”);
if(con.getResponseCode()== 200){
final Bitmap bitmap = BitmapFactory
.decodeStream(con.getInputStream());
runOnUiThread(new Runnable(){
}
@Override
public void run(){
// TODO Auto-generated method stub
iv_weather.setImageBitmap(bitmap);
}
});}
} catch(Exception e){
// TODO Auto-generated catch block e.printStackTrace();}
}).start();
return false;} });class MyConn implements ServiceConnection {
@Override public void onServiceConnected(ComponentName name, IBinder service){ sFunctions =(ServiceFunctions)service;} @Override public void onServiceDisconnected(ComponentName name){
} } class MyArrayAdapter extends ArrayAdapter
} public MyArrayAdapter(Context context, int resource,int textViewResourceId, List
sFunctions.insertInfo(weather, oh);
a++;} else {
sFunctions.updateInfoById(“1”, weather, oh);} Toast.makeText(MainActivity.this, “保存天气信息成功”, 0).show();} public void show(View view){ smsList = sFunctions.findAll(oh);if(smsList.size()> 0){
List
for(Sms sms : smsList){
String s = sms.toString();
sList.add(s);
}
if(sList.size()> 0){
myArrayAdapter = new MyArrayAdapter(MainActivity.this,R.layout.second, R.id.tv_show, sList);
lv.setAdapter(myArrayAdapter);
} } }
public void getWeather(View view){
new Thread(new Runnable(){
String city = et_city.getText().toString();
@Override
public void run(){
try {
URL url = new URL(“http://api.map.baidu.com/telematics/v3/weather?location=”
+ URLEncoder.encode(city)
+ “&output=json&ak=QLZmpAbwFlWreQ28kLVgvKEC”);
HttpURLConnection con =(HttpURLConnection)url
.openConnection();
con.setRequestMethod(“GET”);
int code = con.getResponseCode();
if(code == 200){
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
JSONObject json = JSONObject.fromObject(reader
.readLine());
// System.out.println(obj.toString());
JSONArray array = json.getJSONArray(“results”);
JSONObject obj = array.getJSONObject(0);
JSONObject weather_data = obj.getJSONArray(“weather_data”).getJSONObject(0);
weather = new Weather(obj.getString(“currentCity”), obj
.getString(“pm25”), weather_data
.getString(“date”), weather_data
.getString(“weather”), weather_data
.getString(“wind”), weather_data
.getString(“temperature”), weather_data
.getString(“dayPictureUrl”), weather_data
.getString(“nightPictureUrl”));
Message msg = new Message();
msg.obj = weather;
handler.sendMessage(msg);
}
} catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();} }
package com.example.weather;
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;
public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context, String name, CursorFactory factory,int version){
super(context, name, factory, version);}
@Override public void onCreate(SQLiteDatabase db){
db.execSQL(“create table sms(_id integer primary key autoincrement,sms_sender text,sms_body text,sms_receive_time text,return_result text)”);
db.execSQL(“create table weatherinfo(_id integer primary key autoincrement,info text)”);}
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
} }
package com.example.weather;
import java.util.List;
import android.app.Service;import android.content.Intent;import android.content.ServiceConnection;import android.os.Binder;import android.os.IBinder;
import com.zy.bean.Sms;import com.zy.bean.Weather;
public class MyService extends Service { private ISmsDaoImpl daoImpl;private MyBinder myBinder = new MyBinder();
@Override public IBinder onBind(Intent intent){
return myBinder;}
@Override public void unbindService(ServiceConnection conn){
super.unbindService(conn);}
class MyBinder extends Binder implements ServiceFunctions{
public long insertSms(Sms sms,MyOpenHelper oh){
return MyService.this.insertSms(sms,oh);
}
public List
return MyService.this.findAll(oh);
}
public long insertInfo(Weather w,MyOpenHelper oh){
return MyService.this.insertInfo(w,oh);
}
public int updateInfoById(String id, Weather w,MyOpenHelper oh){
return MyService.this.updateInfoById(id, w,oh);
} }
public long insertSms(Sms sms,MyOpenHelper oh){
daoImpl=new ISmsDaoImpl(oh);
long id = daoImpl.insertSms(sms);
return id;}
public List
daoImpl=new ISmsDaoImpl(oh);
List
return smsList;}
public long insertInfo(Weather w,MyOpenHelper oh){
daoImpl=new ISmsDaoImpl(oh);
long id = daoImpl.insertInfo(w);
return id;}
public int updateInfoById(String id, Weather w,MyOpenHelper oh){
daoImpl=new ISmsDaoImpl(oh);
int num = daoImpl.updateInfoById(id, w);
篇4:安卓系统精简总结
集大成者, 系统, 精简
本帖最后由 colinma 于 2010-10-26 10:35 编辑
紧接我之前那篇(关于刷不刷机和刷机包的选择),刷机后系统精简的问题。首先,我本着这样一个原则,该精简的,我们用最残忍的方式将他阉割;有用并且好用的一些系统自带程序,能不删掉的尽量留着,这个我会给大家一个参考(说明:删除的时候有对应后缀为.odex的同名文件一并删除)
1.首先,我们要对一些东西毫不犹豫的下黑手。总结了一下论坛各位大侠的帖子,加上我自己切身的体验,这些需要严格取缔的程序如下(system/app/下的):
ChinaUnicomCustomize.apk联通的定制程序包(罪魁祸首)
HWAppMarket.apk智慧云(干脆咱们的安卓市场也改名叫安卓云吧,比这好用数十倍)
HWTheme_Entertainment.apk 手机主题 娱乐
HWTheme_Social.apk手机主题 社交
HWTheme_Work.apk手机主题 工作
(以上三个臭皮匠连0.1个诸葛亮都顶不上)
91pandareade.apk91电子图书
BaiduTiebar.apk百度贴吧
DocumentToGo.apkDataviz的office文件包,未注册
Kingsoft_U8110.apk金山词霸
LuckyMedia_U8110.apk手机乐媒
Readme.apk使用技巧
Renren_Android.apk人人网
SinaWeibo_U8110.apk新浪微博
SinaWidget_U8110.apk新浪新闻
SNSAccount.apk开心网
SNSService.apk开心网服务
SogouInput_U8110.apk搜狗输入法
Tonghuashun_U8110.apk同花顺
UCWEB_U8110.apkUC浏览器
UpdataOnline.apk在线升级
VisualizationWallpapers.apk音乐动态背景壁纸
YouTube.apkYouTube在线视频
(以上都可以在官网或者论坛里找到最新版的下载安装,当然其中一些根本没必要再装,看个人兴趣)
2.下来是一些可删可不删的程序,但建议删除,AccountAndSyncSettings.apk google同步(反正我没打算和他同步,怕一不留神又给大家带来“xx门”)
Browser.apk浏览器(UC肯定比这好用)
Email.apk邮件(尚邮比自带的好用)
Music.apk音乐播放器(天天动听等替代)
SoundRecorder.apk录音软件(论坛里比这好的录音软件很多,功能更强)Camera.apk照相机(Camera360比这效果好,但好像不能录像,要用其他软件)
Maps.apk电子地图(用大侠brut的修改版,支持离线地图的)Vending.apk电子市场
MarketUpdater.apk市场更新
gtalkservice.apk跟下面的有一腿
Talk.apkgtalk
TalkProvider.apk跟上面的有一腿,也好像跟电子市场有婚外恋
GoogleXXXXXXX.apk基于google的一些服务
说实话,google是个让人又爱又狠的东西。首先,如果对google的任何服务都没兴趣,那建议全部删除以google开头的程序,还有电子市场和地图;其次,如果对任何google的单项服务感兴趣,那么有两个程序必须留下:GoogleApps.apk和GoogleCheckin.apk,这都通过我一一验证的。(对电子市场情有独钟,除了留下上面的两个以及Vending.apk和MarketUpdater.apk外,还要留下 gtalkservices.apk和TalkProvider.apk)
3.还是一些可删可不删的,但建议保留
Calculator.apk计算器
*Calendar.apk日历
*CalendarProvider.apk日历支持
*EmotionClockWidget.apk心情时钟
FMradio.apk收音机
*Gallery.apk图片浏览器
LocalCityWeatherClock.apk我的天气时钟
MyBookmarks.apk我的书签
*MyCalendar.ap我的日历
MyEvent.apk我的日程
*MyMemo.apk我的便签
MyVideo.apk我的视频
*NotePad.apk记事本
*PhotoAblumWidget.apk我的相册
WeatherClock.apk天气时钟
以上程序,论坛好多网友建议删除用第三方软件取代,但我这段时间试下来,感觉系统自带的这些程序对小u来说那就是郎才配女貌,鲜花配牛粪——很实用兼容也很好的,其他第三方的反倒没这些好好用,尤其是带星号的那几个,论坛里我真没找到有比原配的同类软件更好用,更实用的。还有一些目前好像没啥用,但以后可能会用上,比如语音支持的那个。
4.至于其他未提到的程序,无罪释放,各位切记要对他们手下留情。当然如果你残忍的无可救药你也可以牛刀小试,但记着告诉一下大家感受哦。
注:1..港版的参考以上,有的就删掉,除此之外港版还有一些特有程序也可以就地正法,包括所有的输入法,citylink开头的,road开头的,还有与 google街景相关的(街景,语音搜索什么的),这个大家都可以点一下安装然后看一下具体是什么,因为名称我也忘记了。
2..港版里的launcher2是android的原生桌面,个人觉得并不好用,运行程序多了会卡,再者主菜单里程序字体显示不是很好,不如华为的桌面,所以建议大家不要尝试了,直接删掉算了。