当前位置:文档之家› Android手机平台下开发旅游景点位置查询应用程序

Android手机平台下开发旅游景点位置查询应用程序

Android手机平台下开发旅游景点位置查询应用程序
Android手机平台下开发旅游景点位置查询应用程序

2011.

01

Android 手机平台下开发旅游景点位置查询应用程序

苏亚光

吴亚峰

索依娜

1背景知识

随着Google 及其OHA (Open Handset Alliance ———开放手

机联盟)其他成员的大力推进,Android 平台的智能手机市场占有率与日俱增。

由于Android 的发起者是Google ,因此Android 平台对

Google 很多互联网服务的支持也优于很多其他手机平台,这当

然也包括非常著名的Google 地图服务。

Android 中为Google 地图应用的开发提供了很多方便的辅助

类,如MapActivity 、MapView 等。通过这些类可以非常方便地开发出丰富多彩的地图应用程序,如位置查询、行车路线查询等。

2案例功能

将结合旅游景点位置查询应用的开发来介绍Android 平台

下Google 地图应用开发所需要用到的各种知识与技术。在正式介绍开发之前,首先对本Android 应用的功能、界面进行简单的介绍。

2.1主界面

本应用主要包含一个主界面,其中分成两个区域,每个区域有不同的功能,如图1所示。

(1)上面的操纵区域中从左至右依次为景点名称输入文本框、

景点位置查询按钮、

历史记录查询按钮

、地图模式选

择按钮。

(2)

下面的地图显示区域用来以气球来标识要查询的景

点位置。

2.2主要功能

(1)用户可以在文本框中输入要查询的景点名称,如“故

宫”,

然后按下景点位置查询按钮

,则应用程序会从网络上

查询到景点的经纬度并在地图上用气球标识出来。

(2)用户可以通过点击气球来打开信息窗口,信息窗口中会显示气球对应景点的经纬度信息。再次点击气球,就可以关闭信息窗口。

(3)

点击历史记录查询按钮,系统会弹出历史记录选择

对话框,如图2所示。用户可以在对话框中选择查询过的景

点,不用再次输入了。

(4)点击地图模式选择按

,系统会弹出地图模式选

择对话框。用户可以根据需要选择普通地图模式或卫星照片

模式,通过卫星照片模式可以看到更为真实的情况,如图3

摘要:详细介绍在Android 智能手机平台下,用Java 开发基于GoogleMap 地图服务的旅游景点位

置查询应用。通过实际案例,介绍了如何使用Java 在Android 平台下,进行GoogleMap 地图应用的开发,同时也介绍了一些控件的使用技巧及Android 平台下应用开发技巧。关键词:Ajax ;GoogleMap ;Flickr ;

MushUp

图1

主界面

图2查询历史选择界面

图3地图模式选择界面

76

所示。

3应用界面的搭建

开发应用的各项业务功能之前,首先要进行界面的搭建。在Android平台下搭建界面一般都是使用XML文档,这样更方便,效率更高。

编写界面XML文档前,首先需要将界面中要使用的一些文字、颜色资源对应的XML文档组织好。本应用中主要用到了两个资源XML文档:strings.xml、colors.xml。

(1)strings.xml文档的内容

TourGuide

景点历史记录

地图模式

从上述代码中可以看出界面中的一些文字内容都在此xml 文档中组织好了。

(2)colors.xml文档的内容

#fd8d8d

#80050505

#8d9dfd

#FFFFFF

#000000

上述代码中把应用中要用到的一些颜色数值都组织好了,这样在使用时就很方便了。

完成了strings.xml与colors.xml文档后,就可以正式开始开发主界面对应的xml文档main.xml了,其代码如下:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

android:id="@+id/ImageView01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/jdmc"

android:paddingTop="4dip"

android:paddingRight="3dip"

>

android:text="故宫"

android:id="@+id/EditText01"

android:layout_width="150dip"

android:textSize="16dip"

android:scrollHorizontally="true"

android:singleLine="true"

android:paddingRight="4dip"

android:layout_height="wrap_content">

android:id="@+id/ImageButton01"

android:src="@drawable/go"

android:layout_width="45dip"

android:layout_height="45dip">

android:id="@+id/ImageButton02"

android:src="@drawable/history"

android:layout_width="45dip"

android:layout_height="45dip">

android:id="@+id/ImageButton03"

android:src="@drawable/mode"

android:layout_width="45dip"

android:layout_height="45dip">

android:id="@+id/myMapView"

android:layout_width="fill_parent"

android:layout_height="400px"

android:clickable="true"

android:apiKey="0hLdP9fwX-FpZKIIRFjumCcK-HelH4g7mHNvrFcg"/>

上述XML代码使用LinearLayout嵌套进行了整体界面的布局,使用了图片(ImageView)、文本框(EditText)、图片按钮(ImageButton)、地图View(MapView)等控件。

要特别交代的是,使用MapView时,需要首先去Google 的网站上申请一个key,将申请的key拷贝到MapView的an-droid:apiKey属性中,如上述代码最后几行所示。

从上述开发过程中读者可能会发现,在Android平台下开发应用程序很多地用到了XML文档,这是因为XML是描述性的,易于开发,易于维护。将程序中一些基本固定的内容用

77

2011.01

2011.

01

XML 文档来完成也是Android 应用开发的一大特色,这与传统

的JavaME 开发手机应用有很大的不同。

界面搭建完成后,还需要将应用中需要用到的一些图片准备好,如图4所示。

从前面的开发中读者可以感觉到,一个Android 应用程序需要很多的资源,这些资源的组织是有规定的,本应用中用到的资源组织结构如图5所示。

从图5中可以看出,图片资源都在res 目录下的drawable-

mdpi 目录中,主界面布局文件main.xml 位于res 目录下的lay -out 目录中,颜色、文本资源XML 文件位于res 目录下的val -ues 目录中,Java 源代码位于src 目录下。

4自定义气球Overlay 的开发

由于Android 的API 中并没有直接提供气球、信息窗口等

地图二次开发中必备控件的实现,因此在正式开发业务功能前,首先要开发带信息窗口的气球实现类,其代码框架如下:

package wyf.wpf;

import com.google.android.maps.Overlay;//此处省略了一些不重要的import 语句import android.graphics.*;

class MyBallonOverlay extends Overlay{//常量的声明

final static int picWidth=20;//气球图的宽度final static int picHeight=34;//气球图的高度final static int arcR=8;//信息窗口的圆角半径//成员变量的声明

//表示当前选中的气球

static MyBallonOverlay currentBallon=null;

String msg;//此气球对应的文字信息String jdmc;//此气球对应的景点名称

//是否显示文字信息窗口的标志位,true 显示文字信息窗口boolean showWindow=false;

GeoPoint gp;//此气球对应的经纬度

public MyBallonOverlay (GeoPoint gp,String msg,String jdmc)

{//构造器

this.gp=gp;this.msg=msg;this.jdmc=jdmc;}

@Override //重写点击事件处理方法

public boolean onTouchEvent(MotionEvent event,MapView mv){//此处未来开发屏幕触控事件处理代码}@Override//绘制自定义Overlay 的方法

public void draw(Canvas canvas,MapView mapView,boolean shadow){//未来开发代码}

//将经纬度翻译成屏幕上XY 坐标的方法

public Point getPoint(MapView mapView){//未来开发代码}//绘制信息窗口的方法

public void drawWindow(Canvas canvas,Point p,int winWidth){//未来开发代码}}

上述代码给出了自定义气球Overlay 类MyBallonOverlay 的代码框架,还留了很多功能丰富要后面逐步实现。

从上述代码框架中可以看出自定义的Overlay 需要继承系统提供的com.google.android.maps.Overlay 类,其实Overlay 就是可以进行自定义绘制的覆盖在地图上面的一个层。

Android 下Google 地图应用的开发中,经常需要通过开发

自定义的Overlay 来往地图上添加自己应用需要的东西,如:气球、信息窗口、导航指示箭头等等。

下面就逐步实现各个功能,首先实现onTouchEvent ,其代码如下:

public boolean onTouchEvent (MotionEvent event,MapView mv){

if(currentBallon!=null&¤tBallon!=this){//若当前气球不为空且不是自己,什么都不做return false;}

//若在气球上按下则设置当前气球为自己,//且当前状态为在气球上

if(event.getAction()==MotionEvent.ACTION_DOWN){int x=(int)event.getX();//获取点击的x 坐标int y=(int)event.getY();//获取点击的y 坐标//将此气球的经纬度翻译成屏幕上的xy 坐标Point p=getPoint(mv);

int xb=p.x-picWidth/2;//计算气球左上侧点的x 坐标int yb=p.y-picHeight;//计算气球左上侧点的y 坐标if(x>=xb&&x=yb&&y

currentBallon=this;return

true;}}

图4应用中用到的图片图5资源文件组织结构

78

//移动事件返回当前气球状态若当前在气球上则

//返回true屏蔽其他移动事件

else if(event.getAction()==MotionEvent.ACTION_MOVE) {

return currentBallon!=null;}

else if(event.getAction()==MotionEvent.ACTION_UP){ int x=(int)event.getX();//获取点击的x坐标

int y=(int)event.getY();//获取点击的y坐标

//将此气球的经纬度翻译成屏幕上的xy坐标

Point p=getPoint(mv);

int xb=p.x-picWidth/2;//计算气球左上侧点的x坐标

int yb=p.y-picHeight;//计算气球左上侧点的y坐标

//若当前气球为自己且在当前气球上抬起触控则

//显示当前气球内容

if(currentBallon==this&&x>=xb&&x

&&y>=yb&&y

currentBallon=null;//显示完内容后清空当前气球引用

showWindow=!showWindow;//置反信息窗口显示标志

Listoverlays=mv.getOverlays();

overlays.remove(this);//删除此气球再添加

overlays.add(this);//此气球就位于最上面了

for(Overlay ol:overlays)

{//清除其他气球的showWindow标记

if(ol instanceof MyBallonOverlay){

if(ol!=this){//如果不是自己这个气球,关闭信息窗口

((MyBallonOverlay)ol).showWindow=false;

}}}

return true;

}

//若当前气球为自己但抬起触控不再自己上则

//清空气球状态并返回true

else if(currentBallon==this){

currentBallon=null;

return true;}}

return false;//若不符合上述任一情况则返回false

}

上述代码实现了触控事件的处理逻辑,包括移动地图、点击气球、打开关闭信息窗口等。完成了此方法的开发后就可以着手开发绘制气球Overlay的draw方法了,其代码如下:public void draw(Canvas canvas,MapView mapView, boolean shadow){

//将此气球经纬度翻译成屏幕上的XY坐标供绘制气球

Point p=getPoint(mapView);

//在坐标指定位置绘制气球图片

canvas.drawBitmap(TourGuideActivity.bitmap,

p.x-picWidth/2,p.y-picHeight,null);

if(showWindow){

//如果showWindow为true则显示信息窗口

drawWindow(canvas,p,180);//绘制信息窗口

}

super.draw(canvas,mapView,shadow);//调用父类绘制}

上述draw方法完成的工作是在指定的位置绘制气球图片,并根据气球的信息窗口显示标志值为true还是为false决定是否调用drawWindow方法来绘制此气球对应的信息窗口。

完成了draw方法的开发后就应该开发绘制信息窗口的drawWindow方法了,其代码如下:

public void drawWindow(Canvas canvas,Point p,int win-Width){

int charSize=15;//字体宽度像素值

int textSize=16;//Android字体大小

int leftRightPadding=2;//信息窗口每行左右侧留白

//将此气球的信息字符串根据信息窗口宽度自动分行

int lineWidth=winWidth-leftRightPadding*2;//每行的宽度int lineCharCount=lineWidth/(charSize);//每行字符数

//记录所有行的ArrayList

ArrayListalRows=new ArrayList();

String currentRow="";//当前行的字符串

for(int i=0;i

char c=msg.charAt(i);//从信息字符串中取出一个字符

if(c!='\n'){//若当前字符不为换行符则加入到当前行中currentRow=currentRow+c;

}else{//若当前字符为换行符则检查当前行长度,若当前行//长度大于零则将当前行加入记录所有行的ArrayList if(currentRow.length()>0){alRows.add(currentRow);} currentRow="";//清空当前行

}

if(currentRow.length()==lineCharCount)

{//若当前行的长度达到一行规定的字符数则将当前行加

//入记录所有行的ArrayList

alRows.add(currentRow);

currentRow="";//清空当前行

}}

if(currentRow.length()>0){//若当前行长度大于零则将当前行

//加入记录所有行的ArrayList

alRows.add(currentRow);}

int lineCount=alRows.size();//获得总行数

//自动计算信息窗体高度

int winHeight=lineCount*(charSize)+2*arcR;

Paint paint=new Paint();//创建paint对象

paint.setAntiAlias(true);//打开抗锯齿

paint.setTextSize(textSize);//设置文字大小

//绘制信息窗体圆角矩形

paint.setARGB(255,255,251,239);//设置画笔颜色

int x1=p.x-winWidth/2;//计算圆角矩形外接矩形左上侧点

int y1=p.y-picHeight-winHeight-1;//的XY坐标

int x2=x1+winWidth;//计算圆角矩形外接矩形右下侧点

int y2=y1+winHeight;//的XY坐标

RectF r=new RectF(x1,y1,x2,y2);//创建圆角矩形对象canvas.drawRoundRect(r,arcR,arcR,paint);//绘制圆角矩形//绘制信息窗体圆角矩形边框

paint.setARGB(255,198,195,198);//设置画笔颜色

79

2011.01

2011.

01

paint.setStyle(Paint.Style.STROKE);//设置绘制线形paint.setStrokeWidth(2);//设置线的宽度

canvas.drawRoundRect(r,arcR,arcR,paint);//绘制圆角矩形//框

//循环绘制每行文字

paint.setStrokeWidth(0);

paint.setARGB(255,10,10,10);//设置画笔颜色int lineY=y1+arcR+charSize;//计算第一行的Y 坐标for(String lineStr:alRows){//对每一行进行循环

for(int j=0;j

String colChar=lineStr.charAt(j)+"";

canvas.drawText(colChar,x1+leftRightPadding +j*charSize,lineY,paint);//绘制此字符}

lineY=lineY+charSize;//y 坐标移向下一行}}

上述drawWindow 方法的功能为根据调用时提供的信息窗体宽度,自动将气球对应的文字信息分行,根据行数自动计算出信息窗口的高度,绘制信息窗口对应的圆角矩形及边框,最后将每行内容绘制到信息窗口中。

上述很多方法都调用了辅助方法getPoint 将气球的经纬度换算为屏幕上的XY 坐标,其代码如下:

public Point getPoint(MapView mapView){//将经纬度翻译成屏幕上的XY 坐标//获取投影对象

Projection projettion =mapView.getProjection();

Point p =new Point();//创建用于存储XY 坐标的point 对象projettion.toPixels(gp,p);//调用toPixels 方法进行换算return p;//返回结果}

完成了上述所有工作后,自定义气球Overlay 的开发就完成了它可以在很多应用程序中重用的,并不只是服务于本文的应用程序,笔者就在很多应用程序中都使用了这个自定义气球

Overlay 。

5业务功能Activity 的开发

自定义气球Overlay 的开发完成后,就应该着手开发实现

本应用业务功能的Activity 了,其代码框架如下:

package wyf.wpf;

import java.io.IOException;

//此处省略了一些不重要的import 语句

import android.widget.AdapterView.OnItemClickListener;public class TourGuideActivity extends MapActivity {

//常量的声明

final int HISTORY_DIALOG=0;//历史对话框的ID final int MODE_DIALOG=1;//模式选择对话框的ID //成员变量的声明

static Bitmap bitmap;//气球图片MapController mc;//地图控制器String jdmcArray[];//景点名称数组

Dialog historyDialog;//历史对话框的引用@Override //activity 的创建、初始化方法

public void onCreate(Bundle savedInstanceState){

//[1]一些初始化工作

//[2]给查询按钮添加监听器//[3]给历史按钮添加监听器//[4]给模式按钮添加监听器}

@Override //对话框的创建方法

public Dialog onCreateDialog(int id){}

@Override //每次弹出对话框时被回调以动态更新对话框内//容的方法

public void onPrepareDialog(int id,Dialog dialog){}@Override //重写父类的方法

protected boolean isRouteDisplayed(){return false;}}

从上述代码框架中可以看出,还有很多功能方法有待实现,首先应该实现onCreate 方法。其主要有4项工作需要完成,首先是一些初始化的代码:

super.onCreate(savedInstanceState);//调用父类onCreate 方法

setContentView(https://www.doczj.com/doc/cd7667531.html,yout.main);//设置当前view 为main //初始化气球图片

bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.ballon);//对地图进行初始化

MapView mv=(MapView)findViewById(R.id.myMapView);mv.setBuiltInZoomControls(true);//设置地图上要缩放控制条mc=mv.getController();//获取地图控制器mc.setZoom(14);//设置地图缩放比例GeoPoint gp =new GeoPoint

(//创建包含地图中心点经纬度的GeoPoint 对象(int)(39.9083*1E6),//纬度(int)(116.3975*1E6)//经度);

mc.animateTo(gp);//设置地图中心点经纬度

接着需要做的工作是为查询按钮添加监听器,此监听器的功能为根据用户输入的景点名称通过网络查询景点的经纬度信息,得到经纬度信息后创建携带经纬度文本信息的气球,并将气球添加到地图上的指定位置,具体代码如下:

ImageButton ib=//获取查询按钮

(ImageButton)this.findViewById(R.id.ImageButton01);ib.setOnClickListener(new OnClickListener(){@Override //重写onClick 方法public void onClick(View v){//获取输入的景点名称

80

EditText et=(EditText)findViewById(R.id.EditText01); String jdmcStr=et.getText().toString();

Geocoder gc=//通过Geocoder查找指定名称景点的经纬度new Geocoder(TourGuideActivity.this,Locale.getDefault());

try{//通过Geocoder查找指定名称景点的经纬度列表

List

addressList=//获取景点经纬度列表

gc.getFromLocationName(jdmcStr,1);

if(addressList.size()>0){

//如果成功获取了经纬度取列表中的第一条记录

Address tempa=addressList.get(0);

int latE6=(int)(tempa.getLatitude()*1000000);//获取纬度

int longE6=(int)(tempa.getLongitude()*1000000);//获取经度GeoPoint gp=new GeoPoint(latE6,longE6);

String latStr=//纬度字符串

Math.round(gp.getLatitudeE6()/1000.00)/1000.0+"";

String longStr=//经度字符串

Math.round(gp.getLongitudeE6()/1000.00)/1000.0+"";

//在地图的对应位置显示气球

MapView mv=(MapView)findViewById(R.id.myMapView); Listoverlays=mv.getOverlays();

boolean isExisted=false;MyBallonOverlay curr=null;

for(Overlay ol:overlays){//对所有的Overlay循环处理

if(ol instanceof MyBallonOverlay){//如果是气球Overlay MyBallonOverlay tempMbo=(MyBallonOverlay)ol;

//关闭已经存在景点的信息提示窗口

tempMbo.showWindow=false;if(gp.getLatitudeE6()== tempMbo.gp.getLatitudeE6()&&

gp.getLongitudeE6()==tempMbo.gp.getLongitudeE6())

{//景点已经存在

isExisted=true;

//打开要查询景点的信息提示窗口

tempMbo.showWindow=true;

curr=tempMbo;

}}}

if(!isExisted){//如果景点不存在则添加新气球

//在点击位置添加新气球

MyBallonOverlay mbo=new MyBallonOverlay(

gp,//气球的坐标

jdmcStr+"的地理坐标为:\n经度:"+longStr

+"\n纬度:"+latStr,//气球的信息

jdmcStr//景点名称

);

mbo.showWindow=true;//设置新气球的信息窗口打开

overlays.add(mbo);//将新气球添加到地图上

}else{//如果已经存在气球则将此气球移动到最上层

overlays.remove(curr);overlays.add(curr);}

mc.animateTo(gp);//设置地图中央经纬度

}else{//若没有查询到景点经纬度则报错

Toast.makeText(TourGuideActivity.this,//上下文

"对不起,您要找的景点没有找到!",//报错信息

Toast.LENGTH_SHORT//显示时长).show();}}catch(IOException e){e.printStackTrace();} }});

从上述代码中可以看出,提供给GeoPoint类构造器的经纬度都是整数(int型),但实际的经纬度是肯定带小数的,否则精度就太低了。其实这里的整数并不是说经纬度只是精确到整数度,而是把经纬度扩大100万倍的整数,实际是精确到小数点后6位。

onCreate方法的最后两项工作是给历史按钮、模式按钮添

加监听器,其代码如下:

//给历史按钮添加监听器

ib=(ImageButton)this.findViewById(R.id.ImageButton02);

ib.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v){//重写onClick方法

MapView mv=(MapView)findViewById(R.id.myMapView); Listoverlays=mv.getOverlays();

if(overlays.size()!=0)

{//若当前有历史记录则显示历史记录对话框

showDialog(HISTORY_DIALOG);

}else{//若当前没有历史记录则提示

Toast.makeText(TourGuideActivity.this,//上下文

"对不起,目前没有历史记录!",//提示信息

Toast.LENGTH_SHORT//显示时长

).show();}}});

//给模式按钮添加监听器

ib=(ImageButton)this.findViewById(R.id.ImageButton03); ib.setOnClickListener(new OnClickListener(){

@Override//重写onClick方法

public void onClick(View v){//显示地图模式选择对话框showDialog(MODE_DIALOG);//显示模式选择对话框

}});

完成了onCreate方法的开发后,就可以开发对话框的创建方法onCreateDialog了,其代码如下:

@Override//重写对话框创建方法onCreateDialog

public Dialog onCreateDialog(int id){

Dialog result=null;

switch(id){

case HISTORY_DIALOG://历史记录对话框的初始化

AlertDialog.Builder b=new AlertDialog.Builder(this);

b.setItems(null,null);historyDialog=b.create();

result=historyDialog;

break;

case MODE_DIALOG://地图模式选择对话框的初始化

AlertDialog.Builder bl=new AlertDialog.Builder(this);

bl.setIcon(R.drawable.mode);//设置图标

bl.setTitle(R.string.mode);//设置标题

bl.setItems(new String[]{"普通模式","卫星模式"},

new DialogInterface.OnClickListener(){

@Override//重写对话框中羡慕被点击的onClick方法

public void onClick(DialogInterface dialog,int which){

81

2011.01

2011.

01

MapView mv=//获取地图View

(MapView)findViewById(R.id.myMapView);switch(which){

case 0://若索引为0则设置为普通地图模式mv.setStreetView(true);mv.setSatellite(false);break;

case 1://若索引为1则设置为卫星地图模式mv.setSatellite(true);mv.setStreetView(false);break;}}});

result=bl.create();break;}

return result;//返回创建的对话框}

上述方法完成了对话框的创建工作,可以发现在开发地图模式选择对话框的创建代码时工作做得比较全面,包括标题、选项、选项监听器在内的对话框的各个方面都完成了。

但对于历史记录对话框,工作却做得比较粗糙。这是因为历史记录对话框的选项等内容是随着应用的使用不断变化的,因此对话框的创建工作不能全部在onCreateDialog 方法中完成。而是需要把实时变化的部分留到onPrepareDialog 方法中完成,其代码如下:

@Override

//重写每次弹出对话框时被回调以动态更新对话框内容的方法public void onPrepareDialog(int id,Dialog dialog){//若不是历史对话框则返回

if(id!=this.HISTORY_DIALOG)return;//获取当前景点名称的列表

MapView mv=(MapView)findViewById(R.id.myMapView);Listoverlays =mv.getOverlays();

jdmcArray=new String[overlays.size()];//存放景点名称的数组int i=0;//数组索引

//从所有景点标识气球中循环获取景点名称for(Overlay ol:overlays){

if(ol instanceof MyBallonOverlay){//若此Overlay 为气球MyBallonOverlay tempMbo=(MyBallonOverlay)ol;

jdmcArray[i++]=tempMbo.jdmc;//从气球中获取景点名称}}

//对话框对应的总垂直方向LinearLayout

LinearLayout ll=new LinearLayout(TourGuideActivity.this);ll.setOrientation(LinearLayout.VERTICAL);//设置朝向ll.setGravity(Gravity.CENTER_HORIZONTAL);//设置对齐ll.setBackgroundResource(R.drawable.dialog);//设置背景图//标题行的水平LinearLayout

LinearLayout lln=new LinearLayout(TourGuideActivity.this);lln.setOrientation(LinearLayout.HORIZONTAL);//设置朝向lln.setGravity(Gravity.LEFT);//设置对齐方式

lln.setLayoutParams(new https://www.doczj.com/doc/cd7667531.html,youtParams(200,LayoutParams.WRAP_CONTENT));//设置长宽尺寸//标题行的图标

ImageView iv=new ImageView(TourGuideActivity.this);

iv.setImageResource(R.drawable.history);//设置图标

iv.setLayoutParams(new https://www.doczj.com/doc/cd7667531.html,youtParams(24,24));lln.addView(iv);//添加到标题行的水平LinearLayout 中//标题行的文字

TextView tvTitle=new TextView(TourGuideActivity.this);tvTitle.setText(R.string.list);//设置标题行的文字内容tvTitle.setTextSize(20);//设置字体大小//设置字体颜色

tvTitle.setTextColor(TourGuideActivity.this.getResources().getColor(R.color.white));lln.addView(tvTitle);//添加到标题行中

ll.addView(lln);//将标题行添加到总LinearLayout //为对话框中的历史记录条目创建ListView

ListView lv=new ListView(this);//初始化ListView //设置列表为单选选择模式

lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//为ListView 准备内容适配器

BaseAdapter ba=new BaseAdapter(){

@Override //重写返回总共选项个数的方法public int getCount(){return jdmcArray.length;}@Override

public Object getItem(int arg0){return null;}@Override

public long getItemId(int arg0){return 0;}@Override

public View getView(int arg0,View arg1,ViewGroup arg2){//动态生成每条历史记录对应的TextView

TextView tv=new TextView(TourGuideActivity.this);//设置文本对其方式为水平居中

tv.setGravity(Gravity.CENTER_HORIZONTAL);tv.setText(jdmcArray[arg0]);//设置内容tv.setTextSize(20);//设置字体大小

tv.setTextColor(TourGuideActivity.this.getResources().getColor(R.color.white));//设置字体颜色tv.setPadding(0,0,0,0);//设置四周留白return tv;}};

lv.setAdapter(ba);//为ListView 设置内容适配器//设置选项被单击的监听器

lv.setOnItemClickListener(new OnItemClickListener(){@Override

public void onItemClick(AdapterViewarg0,View arg1,int arg2,long arg3){//重写选项被单击事件的处理方法//获取历史记录中当前选中的TextView TextView tv=(TextView)arg1;//获取地名输入框

EditText et=(EditText)TourGuideActivity.this.findViewById(R.id.EditText01);

//将历史记录中选中条目内容设置到地名输入框et.setText(tv.getText());

TourGuideActivity.this.historyDialog.cancel();//关闭对话框}});

//将历史记录条的ListView 加入总LinearLayout

82

len1=len;

if(len%2!=0)len1++;

fwrite(&len1,1,4,avifp);

fwrite(buf1,1,len1,avifp);

indexcount++;

totalframes++;

movisize=movisize+len1+8;

newlist=new AVIINDEX;//更新索引链表

newlist->dwChunkId=1667510320L;

if(xvid_enc_stats.type==XVID_TYPE_IVOP)

newlist->dwFlags=0x10;

else

newlist->dwFlags=0x00;

newlist->dwOffset=startindex;

newlist->dwSize=len;

newlist->next=NULL;

startindex=startindex+len1+8;

thelist=aviindexlist;

while(1)

{

if(thelist->next==NULL)break;

thelist=thelist->next;

}

thelist->next=newlist;

}

tick1=tick2;

}

if(recording==0)break;

Sleep(1);

}

free(buf1);

free(buf2);

xvid_encore(enc_handle,XVID_ENC_DESTROY,NULL, NULL);//撤消编码实例

}

FreeLibrary(hHandle);

WriteAviIndex();

UpdateAviHeader();

fclose(avifp);

waveInReset(wavein_handle); waveInUnprepareHeader(wavein_handle,&waveinhdr,sizeof (WAVEHDR));

GlobalFree(GlobalHandle(waveinhdr.lpData)); waveInClose(wavein_handle);//关闭声音输入

delete buf3;

return0;

}

7结语

AVI录像机程序开发完成,对AVI多媒体文件的录制,具有一定的实用价值。

(收稿日期:2010-11-03)

ll.addView(lv);

//将组织好的对话框布局添加到历史记录选择对话框中dialog.setContentView(ll);

}

从上述代码中可以看出,列表(ListView)中选项的内容都是由其适配器(Adapter)提供的,本应用中适配器的实现采用的是继承BaseAdapter的方式。当ListView需要选项时,首先会调用其对应Adapter的getCount方法获取选项的个数,然后依次调用getView方法获取各个选项对象。本应用程序中,每个选项都是由TextView实现的。

完成了上述代码的开发后,所有的代码开发工作就都完成了。6应用程序的打包发布

由于Android平台下的应用程序一般都是使用Eclipse开发的,因此打包与发布的工作非常简单。只要在开发完成后在Eclipse中运行一下项目,然后就可以在项目文件夹下的bin子文件夹下找到可以用于安装发布的APK包,如图6所示。

将此APK包安装到基于Android平台的手机中即可运行,在联网正确的状态下可以成功获取景点经纬度并显示如图1、图2、图3所示的界面。

7结语

通过开发旅游景点位置查询的应用程序,读者可以基本掌握Android平台下Google地图应用的开发,了解如何向地图中添加自定义的内容。

本应用的功能还不够完善,读者可以自行进一步扩展。例如结合GPS定位,开发出从当前位置到查询的旅游景点自动路线导航的功能等。

(收稿日期:2010-10-17)

图6bin子目录下的apk包

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(上接第75页)

83

2011.01

android程序设计

一、填空题 1、下列哪个不是Activity的生命周期方法之一() A. onCreate B. startActivity C. onStart D. onResume 2、下列用于进行文本输入的组件是() A、TextView B、Button C、EditText D、Label 3、下面哪个不是Android的界面布局方式() A、BorderLayout B、LinearLayout C、TableLayout D、RelativeLayout 4、下列不是手机操作系统的是( ) A. Android B. Window Mobile C. Apple IPhone IOS D.windows vista 5、定义LinearLayout垂直方向布局时设置的属性是() A.android:layout_height B.android:gravity C.android:layout D. android:orientation vertical 6、Android 项目工程下面的assets 目录的作用是什么( ) A、放置应用到的图片资源。Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到apk 里面 C、放置字符串,颜色,数组等常量数据res/values D、放置一些与UI相应的布局文件,都是xml 文件res/layout 11、在XML布局 7、跳转到另一个Activity的方法是( ) A.runActivity() B.goActivity() C.startActivity() D.startActivityForIn() 8、用于进行文字显示的组件是( ) A.TextView B.Button C.EditText https://www.doczj.com/doc/cd7667531.html,bel 9、下面退出Activity错误的方法是() A.finish() B.抛异常强制退出

Android程序设计练习卷答案

1.在android程序中,Log.d()用于输出什么级别的日志信息?(A) A、调试 B、信息 C、警告 D、错误 2.以下情况不会创建Context对象的是(C) A.创建Application 对象时 B.创建Service对象时 C.创建ContentProvider对象时 D.创建Activity对象时 3.下列不属于Android中广播中的类别的是(D) A.Normal Broadcas B.Sticky Broadcast C.Local Broadcast D.Order broadcast 4.以下哪个不是Intent的Activity启动方式(A) A.FLAG_ACTIVITY_BROUGHT_TO_FIRST B.FLAG_ACTIVITY_CLEAR_TOP C.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET D.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 5.安卓AndroidManifest.xml文件的子节点不包括(C) A.application B.services C.permission D.provider 6.下面那个不是Fragment的生命周期方法(D) A. onStart B. onAttach C. onDestoryView D. onRestart 7.下面那种不是安卓原生支持的Menu(A) A.Selected Menu B.Option Menu C.Submenu D.Context Menu 8.下面不属于android的动画分类的有(D) A、Tween B、Frame C、Property D、Animation 9.下列哪个不是安卓service自带的方法(A) A.OnResume B.onCreate C.onStartCommand D.onRebind 10.下列属于SAX解析xml文件的优点的是(B) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 11.下列关于Soundpool和MediaPlayer的说法,错误的是(A) A.MediaPlayer支持多个音乐同时播放 B.MediaPlayer资源占用率高 C.MediaPlayer延迟时间较长 D.new MediaPlayer()后要调用prepare()方法才能播放 12.关于res/raw目录说法正确的是(A) A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式

本科毕业设计--基于android平台的手机应用软件设计与实现

安阳工学院 计算机科学与工程学院 JAVA程序设计课程综合项目报告 项目题目:基于Android平台的手机应用软件设计与实现专业班级:计算机科学与技术(信息技术)11-1 学生姓名:吕鹏 学生学号:201103010042 指导教师姓名:许研 2013年12月

摘要 随着IT技术的发展,移动开发已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在移动开发中,Android开发近些年来突飞猛进的发展,在智能手机领域中的市场份额以及超过80%。同样,基于安卓平台的手机应用开发也达到前所未有的高度,各种安卓手机应用软件竞相出现。本次的JAVA 课程设计将基于安卓的平台,因为安卓开发主要基于JAVA语言和XML语言。本次所做的手机应用软件,可实现系统的登录、计算器、打电话、发短信、上网等简单功能实现。在此系统的实现过程中不仅提高了JAVA语言编程,而且加入了Android的成分,提高了软件设计的兴趣性。 关键词:手机应用软件开发,Java程序设计语言,Android开发。

目录 摘要 (2) 第1章系统目标 (5) 第2章系统功能介绍 (6) 2.1系统功能总框图 (6) 2.2 模块功能介绍 (6) 2.2.1 登录模块功能介绍 (6) 2.2.2 等待模块功能介绍 (7) 2.2.3系统主界面模块功能介绍 (8) 2.2.4短信和拨号模块功能介绍 (8) 2.2.5计算器模块功能介绍 (9) 2.2.6网上冲浪模块功能介绍 (10) 第三章系统功能实现 (11) 3.1 系统登录模块设计 (11) 3.1.1 登录框布局设计 (11) 3.1.2 登录对话框设计 (13) 3.2 等待模块设计 (15) 3.3 系统主界面模块设计 (16) 3.3.1 主界面XML布局设计 (16) 3.3.2 主界面背景图片设计 (18) 3.3.3 主界面功能实现设计 (18) 3.4 短信和拨号模块设计 (20) 3.4.1短信功能实现设计 (20) 3.4.2 拨号功能实现设计 (22) 3.5 计算器模块设计 (22) 3.5.1 计算器界面设计 (22) 3.5.2 计算器功能实现设计 (22) 3.6 网上冲浪模块设计 (24) 3.6.1 网上冲浪模块XML布局设计 (24)

Android课程设计报告

课程设计 课程名称:嵌入式技术课程设计 设计题目:基于Android系统的小查询工具 学院:信息工程与自动化学院 专业:计算机科学与技术 年级: 2010级 学生姓名: 指导教师: 日期: 2013/7/8 教务处制

课程设计任务书 信息工程与自动化学院计算机科学与技术专业 2010 年级 学生姓名: 课程设计题目:基于Android系统的小查询工具 课程设计主要内容: 通过本课程设计,使学生巩固软件工程的基本概念、原理,熟悉安卓应用开发环境和技术,学会完成一个移动终端应用软件的分析、设计、编码测试和安装,将理论与实际相结合,强化学生的项目开发和团队意识,提高学生分析能力和创新能力 基本理论 1、 Android系统的开发方法及基本原理 2、 JavaEE应用程序设计开发技术 实验方法与基本要求 要求学生掌握Windows环境下Android系统开发的一般方法,AndroidSdk 集成开发环境的构建及JavaEE应用程序的开发。整个设计过程必须由学生自己独立完成,课程设计按二人一组,分组进行全过程的设计。 设计内容 1、Windows环境下构建Android系统的开发环境 2、基于Android模拟手机,设计手机应用程序 3、将程序下载的Android手机上应用 设计指导教师(签字): 教学基层组织负责人(签字): 年月日 目录

一、课程设计的目的及要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计要求 (3) 二、Android应用程序开发背景 (3) 2.1开发背景 (3) 2.2开发环境 (4) 三、Android应用程序开发环境搭建 (5) 3.1所需软件的下载 (5) 3.2相应软件的安装 (5) 四、“小查询工具”的设计与实现 (10) 1. 总体设计 (10) 1)界面设计 (10) 2)功能设计 (12) 2. 详细设计 (12) 1)模块设计 (12) 2)编码实现 (12) 3. 手机上运行截图 (14) 五、总结与体会 (16) 基于Android系统的小查询工具设计

《 Android应用程序设计课程设计》课程设计报告书(移动16-049-杨芝源)#优选.

广东职业技术学院 课程设计报告书 2017-2018学年第一学期课程名称:《Android应用程序设计课程设计》 设计题目:计算器的设计和实现 系别:信息工程系 班级:移动16 姓名:杨芝源 起止日期: 2018.1.2---2018.1.12 指导教师:黄旺华 1 / 12word.

摘要 Android是当今最重要的手机开发平台之一,他是建立在Java 基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。 本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用开发手机app,并较系统地掌握JA V A语言程序设计开发方法以及帮助文件的使用等。 简单计算器又是手机上必备的小程序,所以此次创新实践很有意义,使用性很强。关键词: Android 手机app 计算器 2 / 12word.

目录 1、需求分析 (1) 2、概要设计 (2) 2.1 总体设计 (2) 2.2 模块设计 (3) 3、详细设计 (5) 3.1 输入模块 (5) 3.2 显示模块 (5) 3.2 计算模块 (5) 4、实现 (7) 4.1 公共类 (7) 4.2 加减乘除模块1 (7) 4.3 三角函数模块2 (7) 4.4 某某模块3 (7) 5、测试 (8) 5.1 测试方案 (8) 5.2 测试用例 (8) 5.3 测试结果 (8) 6、总结 (9) word.

1、需求分析 随着智能手机的普及,生活工作等方面的应用都迁移到手机中,本课程设计旨在实现一种某某的APP,为人们解决设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,科学计算三角函数以及清零操作。 通过对该问题的分析,APP主要涉及的对象有:计算器 主要的事务是: 1、计算器界面友好,方便使用,具有良好的交互性。 2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。 3、能够判断用户输入运算数是否正确。 4、支持小数运算。 5、具有退格功能,能够删除最后一个输入,ce。 6、具有清除功能,删除所有,c。 7、具有结果存储功能,能够显示存储器状态,支持触屏手机。 需求分析得出的流程图: 知道了系统的功能以后,我们通过main.xml来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图所示: word.

基于Android平台的手机应用软件设计与实现毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!) 安阳工学院 计算机科学与工程学院 JAVA程序设计课程综合项目报告 项目题目:基于Android平台的手机应用软件设计与实现 专业班级:计算机科学与技术(信息技术)11-1 学生姓名:吕鹏 学生学号:201103010042 指导教师姓名:许研

2013年12月 摘要 随着IT技术的发展,移动开发已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在移动开发中,Android开发近些年来突飞猛进的发展,在智能手机领域中的市场份额以及超过80%。同样,基于安卓平台的手机应用开发也达到前所未有的高度,各种安卓手机应用软件竞相出现。本次的JAVA 课程设计将基于安卓的平台,因为安卓开发主要基于JAVA语言和XML语言。本次所做的手机应用软件,可实现系统的登录、计算器、打电话、发短信、上网等简单功能实现。在此系统的实现过程中不仅提高了JAVA语言编程,而且加入了Android的成分,提高了软件设计的兴趣性。 关键词:手机应用软件开发,Java程序设计语言,Android开发。

目录 摘要 (2) 第1章系统目标 (4) 第2章系统功能介绍 (4) 2.1系统功能总框图 (5) 2.2 模块功能介绍 (5) 2.2.1 登录模块功能介绍 (5) 2.2.2 等待模块功能介绍 (6) 2.2.3系统主界面模块功能介绍 (7) 2.2.4短信和拨号模块功能介绍 (7) 2.2.5计算器模块功能介绍 (8) 2.2.6网上冲浪模块功能介绍 (9) 第三章系统功能实现 (10) 3.1 系统登录模块设计 (10) 3.1.1 登录框布局设计 (10) 3.1.2 登录对话框设计 (12) 3.2 等待模块设计 (14)

Android_课程设计报告

课程名称:嵌入式技术课程设计 设计题目:基于Android系统的小查询工具 课程设计题目:基于Android系统的小查询工具 课程设计主要内容: 通过本课程设计,使学生巩固软件工程的基本概念、原理,熟悉安卓应用开发环境和技术,学会完成一个移动终端应用软件的分析、设计、编码测试和安装,将理论与实际相结合,强化学生的项目开发和团队意识,提高学生分析能力和创新能力 基本理论 1、 Android系统的开发方法及基本原理 2、 JavaEE应用程序设计开发技术 实验方法与基本要求 要求学生掌握Windows环境下Android系统开发的一般方法,AndroidSdk 集成开发环境的构建及JavaEE应用程序的开发。整个设计过程必须由学生自己独立完成,课程设计按二人一组,分组进行全过程的设计。 设计内容 1、Windows环境下构建Android系统的开发环境 2、基于Android模拟手机,设计手机应用程序 3、将程序下载的Android手机上应用 设计指导教师(签字): 教学基层组织负责人(签字): 年月日 目录 一、课程设计的目的及要求 (3) 1.1 课程设计的目的 (3)

1.2 课程设计要求 (3) 二、Android应用程序开发背景 (3) 2.1开发背景 (3) 2.2开发环境 (4) 三、Android应用程序开发环境搭建 (5) 3.1所需软件的下载 (5) 3.2相应软件的安装 (5) 四、“小查询工具”的设计与实现 (10) 1. 总体设计 (10) 1)界面设计 (10) 2)功能设计 (12) 2. 详细设计 (12) 1)模块设计 (12) 2)编码实现 (12) 3. 手机上运行截图 (14) 五、总结与体会 (16) 基于Android系统的小查询工具设计 一、课程设计的目的及要求 1.1 课程设计的目的

基于Android手机平台的记事本设计课程设计

题目:基于Android手机平台的记事本设计 系名信息工程系 专业移动通信 学号 姓名 指导老师 2011/6/28

目录 第一章引言 1.1课题研究的目的 1.2课题研究的意义 1.3课题的可行性分析 第二章开发环境的安装和配置 2.1 开发包及其工具的介绍 2.2 Android开发平台的搭建步骤第三章程序设计 3.1 记事本组建的介绍 3.2 记事本存储实现 第四章程序开发 4.1 主activity的设计 4.2 编译内容 4.3 删除记事 第五章程序的测试 第六章总结 参考文献

第一章引言 1.1 课题研究的目的 1.熟悉一下eclipse工具和安卓的环境配置及开发的过程 2.熟练掌握java的组件如button,textview,listView,menu等组件的灵活应用 3.熟练掌握安卓的一个关于数据保存的方式content providers。 4.锻炼一下自己遇到问题,然后解决问题的能力。 1.2 课题研究的意义 随着3G技术的成熟和只能手机的不断普及,移动应用的需求yuri剧增,移动应用开发成为当下最热门的技术之一。在谷歌和安卓手机联盟的共同推动下,安卓在众多移动应用开发平台中脱颖而出。 我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力。安卓如此受到厂商与开发者的青睐,他的前景是一片光明。国内对于安卓这方面的市场还没有完全开发出来。只要我们努力学习安卓,相信对以后无论是生活还是就业都大有裨益。 本文所做的主要工作如下: 开发环境及开发工具的安装及配置 阐述整个记事本的系统结构及工作原理; (1)设计实现“添加记事”,“编辑内容”和“删除当前

android用户界面程序设计

淮海工学院计算机工程学院实验报告书 课程名:《手持设备软件开发》 题目:实验2:用户界面程序设计 班级:软件092 学号: 1 姓名: 评语: 成绩:指导教师: 批阅时间:年月日

一、实验目的与要求 掌握Android用户界面程序设计的一般方法; 掌握系统提供的各种View和ViewGroup的基本用法; 掌握使用XML Layout资源创建用户界面的方法; 熟悉ADT用户界面可视化编辑器及Hierarchy Viewer透视图的功能及用法; 理解Android用户界面程序设计中的单线程模型 掌握选项菜单及快捷菜单的创建及菜单子项选择事件的处理方法; 掌握用户界面组件事件处理的一般方法。 二、实验内容 1. 使用ADT创建一个Android Project,并在默认创建的布局资源main.xml中添加一个Button 组件,在程序中该按钮的单击事件处理方法中,执行100万次或更多次的循环,并在每次循环中向LogCat中输出当前循环变量的值和一个[0,1)之间的随机双精度数值。调节循环执行的次数直到产生“应用程序无响应”(ANR:Application Not Responding)错误,并思考产生该错误的原因。 2. 编写一个简单的贷款计算器,根据输入的贷款金额、期限和利率,显示每月应还款的金额。使用android.widget.Toast显示输入数据中的格式错误信息。(可参考文档中Dev Guide的帮助主题Toast Notifications中的内容) 三、实验步骤 1. 实验一(1)新建一个android 项目,打开res文件夹下面的layout文件夹中的main.xml文件,对界面进行编辑,如图1

基于Android手机平台的网上选课系统的设计与实现

基于Android手机平台的网上选课系统的设计与实现

南京理工大学紫金学院毕业设计(论文)开题报告 学生姓名:李雅韵 学号: 专业:计算机科学与技术 设计(论文)题目:基于Android手机平台的 网上选课系统的设计与实现指导教师:孙廷凯 3 月 7 日

开题报告填写要求 1.开题报告(含“文献综述”)作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效; 2.开题报告内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见; 3.“文献综述”应按论文的格式成文,并直接书写(或打印)在本开题报告第一栏目内,学生写文献综述的参考文献应不少于15篇(不包括辞典、手册); 4.有关年月日等日期的填写,应当按照国标GB/T 7408—《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“3月15日”或“-03-15”。

毕业设计(论文)开题报告 1.结合毕业设计(论文)课题情况,根据所查阅的文献资料,每人撰写字左右的文献综述: 文献综述 一、前言 当今社会,智能手机是人们生活中必不可少的工具,而android这个词日益成为手 机操作系统中方便,快捷的代名词。因此,为了让在校师生能随时随地自由的选自己 喜欢的课程,了解课程的现状,开发一个基于安卓平台的网上选课系统十分有必要。 本文将就安卓平台的相关技术和网上选课系统这一现状分析基于安卓的选课系统这一 课题的意义。 二、绪论 网上选排课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学 制度的改革,现在大部分高等学校开始实行的是学生的自主选课模式,而传统的教学 模式:学生按照学校安排好的课程上课已经不能适应新型的教学方式,如果按照传统 方式宣科,一方面浪费了大量的人力和物力;另一方面浪费时间以及在人为的统计过 程中不可避免出现的差错的情况。从教师的角度来说,经过网上进行课程发布能大幅 度的减少教师的工作量,减少错误的发生几率。作为教师,只要经过自己的电脑来操 作即可,不必于奔波在教务处和办公室之间。基于此等原因从而提出网上选排课系统 的研究进行实施与探讨。 科学技术的极大发展给我们带来了意想不到的收获,现在的社会是一个由网络连 接而成的新型科技社会,我们摆脱了手工管理低效率的缺陷,取而代之的是网络的便 捷和高效。网络深入我们生活的方方面面,计算机开始架起了我们沟通的平台,可是 由于现今大学生的数量明显增多,单一的登陆引用同一个网站的现象,很可能导致网 页的瘫痪,常常有同学由于网络网速的原因无法选择自己喜欢的课程。 如今智能手机慢慢的展现它的无比的优越性,人们对此上运行的软件有着极大的 兴趣。我们将眼光投向移动市场,当今智能手机等移动设备不断普及,为我们提供的 随时随处应用的方便,因此移动选课将是继互联网选课之后的又一种选课模式。当今 的智能手机使用最多的操作系统有:Symbian、Windows Phone 7、iOS、Android和

安卓手机应用程序设计毕业论文

安卓手机应用程序设计毕业论文 目录 前言 (1) 第1章系统概述 (2) §1.1 开发背景 (2) §1.1.1 Android系统的发展历程 (2) §1.1.2 Android系统的发展前景 (3) §1.1.3 本地通应用与Android系统结合的优势 (4) §1.2 国内外研究现状 (4) §1.2.1 国内的研究现状 (4) §1.2.2 国外的研究现状 (5) §1.2.3 结合相关应用来对比该应用的优势 (5) §1.3 系统创新点 (6) §1.3.1 向用户提供双向式的信息交流 (6) §1.3.2 交互性的应用形式 (6) §1.3.3 实时性的信息交互 (7) §1.3.4 更方便用户的便捷性 (7) §1.4系统意义 (7) §1.4.1对用户的意义 (7) §1.4.2对旅游行业的意义 (8) 第2章系统分析 (9) §2.1 系统要点分析 (9) §2.1.1广泛的用户参与是该应用推广的前提 (9) §2.1.2完善的应用功能是该应用可以推广的基础 (9) §2.1.3便捷的应用环境和定位功能是该应用的又一突破. 9 §2.2系统流程分析 (10) §2.3系统功能结构分析 (12) §2.4系统数据库的分析 (14)

第3章主要功能模块的设计 (16) §3.1攻略文章的设计 (16) §3.2推荐必到点 (17) §3.3游客路线的选择以及到达方式 (17) §3.4路线上传及分享 (17) §3.5文章和标签的匹配 (18) 第4章数据库设计 (19) §4.1概念结构设计 (19) §4.2逻辑结构设计 (20) 第5章详细设计与实现 (21) §5.1 应用界面设计 (21) §5.1.1 应用登陆首页设计 (21) §5.1.2 攻略文章界面设计 (22) §5.1.3 推荐必到点界面设计 (23) §5.1.4我的行程界面设计 (23) §5.2 基本界面的实现 (24) §5.2.1 Activity (24) §5.2.2数据库文件的打包 (27) 第6章系统实现 (28) §6.1开发技术及系统架构 (28) §6.1.1开发技术选择 (28) §6.1.2安卓各种开发工具的选择 (28) §6.2本次开发过程中的技术难点 (29) §6.2.1 系统的技术难点主要有以下方面 (29) §6.2.2技术难点的实现 (29) 结论 (30) 参考文献 (31) 致谢 (32)

《Android程序设计》期末试题A

一、判断题(每小题2分,共10分) 1、Android既是操作系统也是开发平台。() 2、Android是通过栈的形式来管理多个Activity的。() 3、在同一个资源目录中,可以存在两个文件名相同、扩展名不同的资源文件。() 4、一个Intent可以包含多个action。() 5、对于有序广播消息,是按照各个BroadcastReceiver注册的顺序先后接收并处理。() 二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分) 1、在下述Java语言语句中,错误 ..的创建数组的方法是() A、int intArray [ ]; intArray=new int[5]; B、int intArray [ ]=new int[5]; C、int [ ] intArray ={1,2,3,4,5}; D、int intArray [5]={1,2,3,4, 5}; 2、以下哪种方式不能退出当前活动状态的Activity?() A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 3、如果要让标签文本(TextView)上的文字居中显示,需要设置哪个属性?() A、android:orientation B、android:layout_gravity C、android:gravity D、android:layout_weight 4、下面哪个不是Android的界面布局方式?() A、FlowLayout B、LinearLayout

C、TableLayout D、RelativeLayout 5、浏览网页使用的Intent的Action是什么?() A、ACTION_CALL B、ACTION_EDIT C、ACTION_SEND D、ACTION_VIEW 6、Android 关于启动方式的service生命周期的onCreate()和onStartCommand()方法,说法正确的是() A、当第一次启动的时候只会调用onCreate()方法 B、当第一次启动的时候只会调用onStartCommand ()方法 C、如果service已经启动,将先后调用onCreate()和onStartCommand ()方法 D、如果service已经启动,只会执行onStartCommand ()方法,不再执行onCreate()方法 7、对于音乐播放器程序中的播放进度控制,使用哪个控件适合?() A、ProgressBar B、RatingBar C、SeekBar D、CheckBox 8、下面哪个方法不是发送广播消息的方法?() A、sendBroadcast() B、sendCommonBroadcast() C、sendOrderedBroadcast() D、sendStickyBroadcast() 9、要往SD卡写入数据,需要加上哪个权限?() A、WRITE_STORAGE B、WRITE_EXTERNAL_STORAGE C、WRITE_INTERNAL_STORAGE D、WRITE_SD 10、下列关于ContentProvider的说法错误的是:() A、ContentProvider的作用是实现数据共享和交换 B、要访问ContentProvider,只需调用ContentProvider的增删改查相关方法

安卓系统编程开发报告

Android编程报告 一安卓系统简介 Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。 2010年末数据显示,仅正式推出两年的操作系统Android已经超越称霸十年的诺基亚(Nokia)Symbian OS系统,采用Android系统主要手机厂商包括宏达电子(HTC)、三星(SAMSUNG)、摩托罗拉(MOTOROLA)、LG、Sony Ericsson等,使之跃居全球最受欢迎的智能手机平台,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。 二初识安卓应用程序 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection 和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。 View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup 之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。 三Andoroid中介软件 操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。

基于Android考试系统软件开发设计

毕业实习报告题目:基于Android考试系统软件开发设计 姓名: 专业:通信工程 班级学号:12042243 同组人: 指导教师:

南昌航空大学信息工程学院 20 16 年 1 月16 日 目录 前言 (1) 第一章软件开发环境 (3) 1.1 JDK安装 (3) 1.2 Android SDK安装以及系统设置 (3) 1.3 Eclipse安装以及ADT工具的安装 (3) 1.4 Android平台特点 (4) 1.5 Eclipse简介 (4) 1.6 Android SDK简介 (5) 1.7 ADT简介 (5) 第二章需求分析 (7) 2.1设计平台介绍 (7) 2.2题目描叙 (7) 2.3需求分析 (7) 2.4设计思路 (8)

第三章系统结构 (9) 3.1系统整体模块 (9) 3.2登录注册模块 (10) 3.3选题模块 (10) 3.4答题模块 (10) 3.5结果显示模块 (10) 3.6程序逻辑结构 (10) 第四章系统工作原理 (11) 4.1客户端程序设计 (11) 4.2界面布局 (12) 4.3 题目读取 (13) 4.4判题算法 (14) 4.5数据交互 (17) 总结 (18) 参考文献 (19)

前言 移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量正在以远高于台式电脑、笔记本电脑出货量的速度快速增长。搭载安卓操作系统的智能手机目前已经成为市场上最炙手可热的智能产品,安卓有望成为智能手机市场主导力量。据业内统计,目前国内的Android研发人才缺口至少30万。由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android 人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。 本次设计过程包含需求分析、总体设计以及详细设计。需求分析从总体上得出设计中可能要实现的模块。总体设计是对需要分析的进一步细化,掌握大致的实现过程。而详细设计则是精确到设计中的每一个细节,如何实现和解决遇到的一些问题。本系统的难点在于如何用较好的算法处理判题和记分策略,设计中采取的舍弃首行做法和各类题型分离处理方式,而且软件工程的设计方法,并且可用于实际开发中去。

Android程序设计练习卷答案

在android程序中,Log.d()用于输出什么级别的日志信息?(A) 调试B、信息C、警告D、错误 2.以下情况不会创建Context对象的是(C) 创建Application 对象时 B.创建Service对象时 C.创建ContentProvider对象时 D.创建Activity对象时 3.下列不属于Android中广播中的类别的是(D) A.Normal Broadcas B.Sticky Broadcast C.Local Broadcast D.Order broadcast 4.以下哪个不是Intent的Activity启动方式(A) A.FLAG_ACTIVITY_BROUGHT_TO_FIRST B.FLAG_ACTIVITY_CLEAR_TOP C.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET D.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 5.安卓AndroidManifest.xml文件的子节点不包括(C) A.application B.services C.permission D.provider 6.下面那个不是Fragment的生命周期方法(D) A. onStart B. onAttach C. onDestoryView D. onRestart 7.下面那种不是安卓原生支持的Menu(A) A.Selected Menu B.Option Menu C.Submenu D.Context Menu 8.下面不属于android的动画分类的有(D) A、Tween B、Frame C、Property D、Animation 9.下列哪个不是安卓service自带的方法(A) OnResume B.onCreate C.onStartCommand D.onRebind 10.下列属于SAX解析xml文件的优点的是(B) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 11.下列关于Soundpool和MediaPlayer的说法,错误的是(A) A.MediaPlayer支持多个音乐同时播放 B.MediaPlayer资源占用率高 C.MediaPlayer延迟时间较长 D.new MediaPlayer()后要调用prepare()方法才能播放 12.关于res/raw目录说法正确的是(A) A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B、这里的文件是原封不动的存储到设备上会转换为二进制的格式 C、这里的文件最终以二进制的格式存储到指定的包中 D、这里的文件最终不会以二进制的格式存储到指定的包中 13.下面异常不属于Runtime Exception 的是(D) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、IOException 14.以下方法那个不能实现不显示android标题栏(B)

Android程序设计报告-标准体重

Android应用程序设计报告 学院:信息工程与自动化学院 专业:通信工程 班级: 姓名: 学号: 日期:2014年7月8日

一、背景介绍 随着移动通信与Internet向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian,Windows Mobile,PalmOS等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开发性很强的平台。经过多年的发展,第三代数字通信(3G)技术活动了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于2007年11月推出了一个专为移动设备设计的软件平台——Android。 Android是一套真正意义上的开发性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android是由Linux+Java构成的开源软件,允许所有厂商和个人在其基础上进行开发。Android平台的开放性等特点既能促进技术(包括平台本身)的创新,又有助于降低开发成本,还可以是运营商能非常方便地制定自己的特色化的产品。因此,它具有很大的市场发展潜力。 二、需求分析 如今,伴随着Google Android操作系统的盛行,基于Android SDK的系统开发和基于Android应用的开发等已倍受大家关注。Android应用面向的是普通个体用户,这些用户往往会更加关注用户体验,因此Android应用增加多媒体功能十分必要。就目前的手机发展趋势来看,手机已经不再是单一的通讯工具,更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。 而且近年来,由于人们生活水平的提高,越来越多的人开始关注人体健康,而体重也成为了人们关注的重点,尤其是女性。因此为了迎合众多用户的需求并适应现在的手机的规模,我们提出了一个计算标准体重的设计。 三、设计目的 Android以Linux为核心的Android行动平台,使用Java作为编程语言。本设计是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训

相关主题
文本预览
相关文档 最新文档