61阅读

web服务器的架设-Fedora-8下Samba服务器的架设详解

发布时间:2017-12-10 所属栏目:samba服务器配置

一 : Fedora-8下Samba服务器的架设详解

这几天学习了Linux下面的Samba服务器架设

系统环境:Windows xp sp3 ,IP:192.168.1.10 虚拟机下安装了Fedora-8-i386 IP:192.168.1.12

1. 首先检查os是否安装好了samba。

[root@cisco samba]# rpm -qa | grep smb

如果出现下面三行内容,则表示已经安装好了Samba

libsmbios-libs-0.13.10-1.fc8

libsmbios-bin-0.13.10-1.fc8

pam_smb-1.1.7-7.2.2

如果没有安装后好,需要进入安装关盘Fedora-8-i386-DVD.iso

[root@cisco /]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@cisco /]# cd /mnt/cdrom/

[root@cisco cdrom]# ls

fedora.css isolinux README-BURNING-ISOS-en_US.txt repoview RPM-GPG-KEY-fedora RPM-GPG-KEY-rawhide

GPL media.repo RELEASE-NOTES-en_US.html RPM-GPG-KEY RPM-GPG-KEY-fedora-rawhide stylesheet-images

images Packages repodata RPM-GPG-KEY-beta RPM-GPG-KEY-fedora-test TRANS.TBL

[root@cisco cdrom]# cd Packages/

[root@cisco Packages]# rpm -ivh -aid smb*

即可安装成功。

2. 进入samba目录

[root@cisco /]# cd /etc/samba/

[root@cisco samba]# ls

lmhosts smb.conf smbpasswd smbusers

这里的smb.conf是samba服务器的主要配置文件。

还要注意一点,smbpasswd文件是用来存储用户帐号和经过md5加密后的密码。

刚安装好samba服务时,此文件不存在。需要手工创建。下面会介绍。

3. 编辑smb.conf文件

[root@cisco samba]# vi smb.conf

进行如下设置:

#======================= Global Settings =====================================

[global]

workgroup = MSHOME 将linux 加入的工作组名,我这里加入了MSHOME工作组。

server string = Samba 这是服务器描述信息,方便标志资源。可以随便输入。

encrypt passwords = yes 表示是否对用户的密码进行加密,这里选择加密,安全!

public = yes 定义一个共享是否对公共访问开放。当设置为 yes 时,在系统上没有帐户用户

将基于所定义的客户帐户的属性来接收访问。

smb passwd file = /etc/samba/smbpasswd 这是账号密码的存放文件

netbios name = mm's samba 在外部访问该samba服务器时,显示的信息。

# --------------------------- Logging Options -----------------------------

# logs split per machine

log file = /var/log/samba/log.%m log文件的存放位置。

# max 50KB per log file, then rotate

max log size = 0 log文件的大小限制,设置为0表示不做限制。

# ----------------------- Standalone Server Options ------------------------

security = user 共享的安全级别,samba有四种安全等级:

share:用户不需要账户及密码即可登录samba服务器

user:由提供服务的samba服务器负责检查账户及密码(默认)

server:检查账户及密码的工作由另一台windows或samba服务器负责

domain:指定windows域控制服务器来验证用户的账户及密码)

passdb backend = tdbsam

以上即为通用一般配置。

加入我们需要共享的目录为 /opt/

需要添加如下代码:

[rose]

comment = This is my samba server! 设置共享信息,随便输入

path = /opt 共享目录

valid users = testuser 可以访问次共享目录的用户,我这里设为testuser用户

public = yes 同上面的解释

writable = yes 用户是否可写,这里我们允许。

wq!

保存退出即可。

4. 启动smb服务

[root@cisco samba]# service smb start

Starting SMB services: [ OK ]

[root@cisco samba]# service nmb start

Starting NMB services: [ OK ]

5. 添加可以访问我们刚才设置共享目录的用户:testuser

1)建一个系统用户

[root@linux samba]# useradd testuser (建一个名叫testuser的用户)

[root@linux samba]# passwd t (给testuser用户添加密码)

Changing password for user samba.

New password: (密码要六位以上,不显示在屏幕上)

BAD PASSWORD: it does not contain enough DIFFERENT characters

Retype new password: (确认密码)

passwd: all authentication tokens updated successfully

2) 更新 /etv/samba/smbpasswd 文件

[root@linux samba]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

3) 然后创建samba帐户

[root@cisco samba]# smbpasswd -a testuser

New SMB password:

Retype new SMB password:

Added user testuser.

6. 重新启动smb服务

[root@cisco samba]# service smb restart

Shutting down SMB services: [ OK ]

Starting SMB services: [ OK ]

[root@cisco samba]# service nmb restart

Shutting down NMB services: [ OK ]

Starting NMB services: [ OK ]

下面我们在Windows下测试一下,我的系统为Windows xp sp3

在Linux 下访问Windows的共享资源,显示信息为:

[root@cisco samba]# smbclient -L //192.168.1.10

Password:

Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename Type Comment

--------- ---- -------
Printer Adobe PDF Office Document Image Writer

session request to 192.168.1.10 failed (Called name not present)

session request to 192 failed (Called name not present)

Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Server Comment

--------- -------

Workgroup Master

--------- -------

在Linux 下访问自己的samba服务器,显示信息为:

[root@cisco samba]# smbclient -L //192.168.1.12

Password:

Anonymous login successful

Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8]

Sharename Type Comment

--------- ---- -------

homes Disk Home Directories

rose Disk This is my samba server!

test-1 Disk This is my samba server!

IPC$ IPC IPC Service (Samba)

Anonymous login successful

Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8]

Server Comment

--------- -------

MM'S SAMBA Samba

Workgroup Master

--------- -------

MSHOME
 

二 : Fedora-8下Samba服务器的架设笔记

系统环境:Windows xp sp3 ,IP:192.168.1.10 虚拟机下安装了Fedora-8-i386 IP:192.168.1.12 1. 首先检查os是否安装好了samba。 [root@cisco samba]# rpm -qa | grep smb 如果出现下面三行内容,则表示已经安装好了Samba libsmbios-libs-0.13.10-1.fc8 libsmbios-bin-0.13.10-1.fc8 pam_smb-1.1.7-7.2.2 如果没有安装后好,需要进入安装关盘Fedora-8-i386-DVD.iso [root@cisco /]# mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@cisco /]# cd /mnt/cdrom/ [root@cisco cdrom]# ls fedora.css isolinux README-BURNING-ISOS-en_US.txt repoview RPM-GPG-KEY-fedora RPM-GPG-KEY-rawhide GPL media.repo RELEASE-NOTES-en_US.html RPM-GPG-KEY RPM-GPG-KEY-fedora-rawhide stylesheet-images images Packages repodata RPM-GPG-KEY-beta RPM-GPG-KEY-fedora-test TRANS.TBL [root@cisco cdrom]# cd Packages/ [root@cisco Packages]# rpm -ivh -aid smb* 即可安装成功。 2. 进入samba目录 [root@cisco /]# cd /etc/samba/ [root@cisco samba]# ls lmhosts smb.conf smbpasswd smbusers 这里的smb.conf是samba服务器的主要配置文件。 还要注意一点,smbpasswd文件是用来存储用户帐号和经过md5加密后的密码。 刚安装好samba服务时,此文件不存在。需要手工创建。下面会介绍。 3. 编辑smb.conf文件 [root@cisco samba]# vi smb.conf 进行如下设置: #======================= Global Settings ===================================== [global] workgroup = MSHOME 将linux 加入的工作组名,我这里加入了MSHOME工作组。 server string = Samba 这是服务器描述信息,方便标志资源。可以随便输入。 encrypt passwords = yes 表示是否对用户的密码进行加密,这里选择加密,安全! public = yes 定义一个共享是否对公共访问开放。当设置为 yes 时,在系统上没有帐户用户 将基于所定义的客户帐户的属性来接收访问。 smb passwd file = /etc/samba/smbpasswd 这是账号密码的存放文件 netbios name = mm's samba 在外部访问该samba服务器时,显示的信息。 # --------------------------- Logging Options ----------------------------- # logs split per machine log file = /var/log/samba/log.%m log文件的存放位置。 # max 50KB per log file, then rotate max log size = 0 log文件的大小限制,设置为0表示不做限制。 # ----------------------- Standalone Server Options ------------------------ security = user 共享的安全级别,samba有四种安全等级: share:用户不需要账户及密码即可登录samba服务器 user:由提供服务的samba服务器负责检查账户及密码(默认) server:检查账户及密码的工作由另一台windows或samba服务器负责 domain:指定windows域控制服务器来验证用户的账户及密码) passdb backend = tdbsam 以上即为通用一般配置。 加入我们需要共享的目录为 /opt/ 需要添加如下代码: [rose] comment = This is my samba server! 设置共享信息,随便输入 path = /opt 共享目录 valid users = testuser 可以访问次共享目录的用户,我这里设为testuser用户 public = yes 同上面的解释 writable = yes 用户是否可写,这里我们允许。 wq! 保存退出即可。 4. 启动smb服务 [root@cisco samba]# service smb start Starting SMB services: [ OK ] [root@cisco samba]# service nmb start Starting NMB services: [ OK ] 5. 添加可以访问我们刚才设置共享目录的用户:testuser 1)建一个系统用户 [root@linux samba]# useradd testuser (建一个名叫testuser的用户) [root@linux samba]# passwd t (给testuser用户添加密码) Changing password for user samba. New password: (密码要六位以上,不显示在屏幕上) BAD PASSWORD: it does not contain enough DIFFERENT characters Retype new password: (确认密码) passwd: all authentication tokens updated successfully 2) 更新 /etv/samba/smbpasswd 文件 [root@linux samba]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd 3) 然后创建samba帐户 [root@cisco samba]# smbpasswd -a testuser New SMB password: Retype new SMB password: Added user testuser. 6. 重新启动smb服务 [root@cisco samba]# service smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ] [root@cisco samba]# service nmb restart Shutting down NMB services: [ OK ] Starting NMB services: [ OK ] 下面我们在Windows下测试一下,我的系统为Windows xp sp3 在Linux 下访问Windows的共享资源,显示信息为: [root@cisco samba]# smbclient -L //192.168.1.10 Password: Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] Sharename Type Comment --------- ---- -------
Printer Adobe PDF Office Document Image Writer session request to 192.168.1.10 failed (Called name not present) session request to 192 failed (Called name not present) Domain=[XPSP3] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] Server Comment --------- ------- Workgroup Master --------- ------- 在Linux 下访问自己的samba服务器,显示信息为: [root@cisco samba]# smbclient -L //192.168.1.12 Password: Anonymous login successful Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8] Sharename Type Comment --------- ---- ------- homes Disk Home Directories rose Disk This is my samba server! test-1 Disk This is my samba server! IPC$ IPC IPC Service (Samba) Anonymous login successful Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a-6.fc8] Server Comment --------- ------- MM'S SAMBA Samba Workgroup Master --------- ------- MSHOME

三 : 架设语聊服务器 打造自己的TS聊天平台

  现在玩网络游戏都喜欢用语音交流,大家都登录到一个语音聊天的房间里,有问题直接说话就可以了,还省去打字的麻烦。不过现在提供免费的语音聊天平台不是很多,虽然有一些语音聊天软件提供免费的平台,但是不能申请自己房间,只能去公共房间聊天。

  其实我们只要有个稳定的服务器,就可以来自己架设语音聊天平台,如果自己的电脑配置不错、网速快、经常在线,还也在自己的电脑上架设语音聊天平台。

  TeamSpeak(以后简称TS)是目前最流行的语音聊天平台,很多网游工会都用它来进行指挥战斗、下高级副本或者做任务,下面我们就来介绍怎么样架设TS的语音聊天平台。

  先下载TS的服务器端软件,下载后安装它,首次运行软件有个“新管理密码”的窗口,一定要记住里面的帐号和密码,在后面我们要用到的,这个密码是随机生成的,每次安装都不一样的,在管理界面后可以修改密码(如图1)。


图1

  关闭密码窗口后,TS的服务器端就运行在后台了,在系统托盘处右键点击TS服务器软件的图标,在弹出的菜单中选择“管理登录”就会TS服务器的管理界面。

  用前面记下的管理帐号和密码登录,登录后点击左面主菜单“服务器详细设置”下面的“服务器设置”,这时我们就可以来修改服务器的设置了,如服务器的名称、欢迎信息、密码、类型等,可以根据自己的实际情况来设置,完成后点击“Save”按钮。对于一些高级内容,如允许编码、服务器最大容量人数,这些是超级管理员设置的,只要用超级管理员的帐号和密码登录,那就可以来进行修改了(如图2)。
  

图2

  我们还可以来设置一些人员的权限,如管理员、发言者、注册用户和匿名用户等,他们的权限都是不相同的。点击左面“服务器管理权限”下面的相应用户就可以来设置权限了,我们可以根据自己的使用情况来设置相应的权限,选好后别忘了点击“Save”按钮(如图3)。
  

图3

  现在我们可以通过TS的客户端软件来登录服务器了。TS服务器的IP地址,只要右击系统图片处的TS服务器软件图标,在“Your Ip’s”下就可以看见IP地址了(如图4)。
  

图4

  打开TS客户端软件,点击菜单“文件-连接”,在“连接到服务器”窗口中的“服务器地址”中输入“服务器IP:8767”,“8767”是默认的端口,再输入昵称、选中“已注册”,如果是匿名登录,那可以选择“匿名”,再用admin的帐号和密码来登录TS服务器(如图5)。
  

图5

  登录成功后我们就可以来使用了,如果是管理员帐号登录的,那可以来建立固定频道。右点击服务器名称来选择“创建新频道”,在“频道新创建”窗口中就可以输入频道的名称、主题、最大用户等内容,还可以来设置密码,把下面的“已注册”选中,如果不选中,那这个频道就是一个临时频道,等你退出TS后就会消失,最后点击“创建新频道”按钮就可以完成创建了(如图6)。
  

图6

  为了防止匿名登录,我们最好给每个登录的朋友注册一下用户名和密码,点击页面左面的“用户管理”,在显示的页面中点击“add client”进行添加,输入要注册的用户名、密码,如果需要他管理服务器,那可以把下面的“服务器管理”选中,再点击“添加”按钮就可以了(如图7)。


图7

四 : 基于Android平台的手机Web地图服务设计

大连海事大学

硕士学位论文

基于Android平台的手机Web地图服务设计

姓名:舒贤华

申请学位级别:硕士

专业:计算机科学与技术

指导教师:杜振军

20090701

veb手机 基于Android平台的手机Web地图服务设计

中文摘要

摘要

随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。[www.61k.com)因此,手机的应用服务将会有很大的发展空间,手机地图服务就是其中的一项。目前的地图服务主要以使用单机或者网页方式实现,这些方式不适合在户外旅游等场合下进行,给用户造成了很多的不便。手机地图服务就z丹‘匕e,,/tKEl好的解决这个问题,Android平台提供给普通开发者非常灵活的地图展示与控制功能,这将使地图服务的设计与实现有了更好的平台。另外,Android平台基本上是免费的,所以能够有效降低软件的成本,最终让每个用户能够自由地获取信息,也为手机地图服务的普及做出贡献。

本文对目前应用的Symbian、WindowsMobile、MacOSX和RIM等平台的现状进行了分析与比较。进而研究分析了Android平台的系统架构和组件模型,接着解析了Android中的重要API和应用构成,以及Intent和生命周期的机制。在此基础上,基于Android平台设计和开发了一个手机Web地图服务,该系统包括自我定位、地图模式、路线查询、地点查找、浏览大连、手机定位、行走踪迹、创建记录、记录列表和查看天气十一大模块。自我定位模块的功能就是把手机用户自己所在地方的地图和经纬度在界面中显示出来。行走踪迹模块的功能就是把用户经过的地方以路线图的形式给画出来。地点查找模块的功能就是查询一个地方,并把它在地图中标注出来。浏览大连模块的功能主要用来说明如何通过设定特定的经纬度来显示地图,并在特定位置显示图标及相关操作。查看天气模块的功能就是显示查看地及周边地区的天气情况。创建记录模块的功能就是把用户认为重要地方的地图经纬度及相关信息保存到数据库里。记录列表模块的功能就是查看、修改、删除保存的记录及浏览记录中地图。手机定位模块的功能就是当用户的手机丢了或者被偷,用户可以使用别人的手机,接收用户手机所处位置的GPS坐标,从而找到手机。

本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户基本的地图服务需求。关键词:Android;Activity;地图服务;Intent:布局

veb手机 基于Android平台的手机Web地图服务设计

英文摘要

Abstract

With

themobilephoneentersintothelivesofordinarypeoplestepbystep,itwill

becomethemaindevicetoobtaininformation.Therefore,theapplicationservicesof

mobilephonewillhavegreatdevelopmentspace,mapserviceis

themapservicemainly

are

uses

one

ofthem.Atpresent,

thestand—alone

or

websitewaytorealize,thesemethods

user

not

suitableforoutdoortourism,andotheroccasions,andgivethe

mobilemapserviceis

lotof

inconvenience.The

platformprovides

goodsolutiontotheproblem,Android

tothegeneral

development

functionofveryflexibledisplayand

ofmapservicehave

can

controlthemap,whichwillmakethedesignbetter

andimplementation

platform.In

addition,the

Android

platformisbasicallyfree,SO

letseach

user

reducethe

costofsoftware

effectively,andultimately

beabletogaintheinformation

freely,alsemakescontributiontothepopularizationofmobilemapservice.

Inthispaper,thereisapplied

analysisand

comparisonaboutthestatusofthecurrent

OSX,RIMand

SO

platforms

like

Symbian,WindowsMobile,Mac

on.Further

analysisofthe

Androidplatform,system

Android

architectureandcomponentmodel,andthento

ofcomposition,andthenanalyzes

anddevelop

resolvetheimportantAPIin

andapplication

Intentandlifecycle’Smechanism.Onthis

basis,design

mobilemap

servicebased

on

the

Android

61阅读提醒您本文地址:

platform,thissystemincludestheself-localization,the

mapmode,the

routeinquiry,theplacesearch,browseDalian,themobilelocalization,

thewalkingtrail,thecreationofrecord,thelistofrecord

and

view

weather.The

self-localizationmodule’Sfunctionistodisplaythelatitude,longitudeandplacewheremobile

usersare

intheinterface.Thewalkingtrailmodule’Sfunctionistopicturethe

user

placewhichthemobilepassesthroughbytheformofroadmap.Theplacesearch

module’Sfunctionis

toinquireaplace,and

labelitinthe

map.The

browseDalian

module’Sfunctionisused

todescribehowtodisplay

particularsetoflatitudeandrelatedoperations.Theview

longitudeand

showthe

icon

inthelocation-specific

and

weathermodule’Sfunctionistodisplaytheweatherconditionsaboutsurroundingareas.

The

creationofrecordmodule’Sfunctionisto

save

theplacemap’S

latitudeand

longitude

andthe

correlation

information

whatyouthought

thatareimportantintothe

database.The

listofrecordmodule’Sfunctionistoview,edit,deleteth.erecord,and

browsetherecordinthe

form

of

map.The

mobilelocalizationmodule’Sfunctionisto

veb手机 基于Android平台的手机Web地图服务设计

英文摘要

useotherpeople’Smobilephonestoreceiveyourphone’SGPSlocationcoordinates

orwhenyourphoneislost

Thissystemstolen,andthusfindyourmobilephones.touser-friendly,easyoperate,hasgoodextendibilityandmaintainability;thesystemaftertheteste,Canbestableoperation,beablemobilephoneuserstomeetthebasicmapserviceneeds.

KeyWords:Android;Activity;MapService;Intent;Layout

veb手机 基于Android平台的手机Web地图服务设计

大连海事大学学位论文原创性声明和使用授权说明

原创性声明

本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果,撰写成硕士学位论文:基王丛亟!Qi鱼垩台的壬扭型尘地图腿釜逡让::。(www.61k.com]除论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已经公开发表或未公开发表的成果。本声明的法律责任由本人承担。

学位论文作者签名:玺笠堡

学位论文版权使用授权书

本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论文。同意将本学位论文收录到《中国优秀博硕士学位论文全文数据库》(中国学术期刊(光盘版)电子杂志社)、《中国学位论文全文数据库》(中国科学技术信息研究所)等数据库中,并以电子出版物形式出版发行和提供信息服务。保密的论文在解密后遵守此规定。

不保密√(请在以上方框内打“√")…~锨争?纂势垆

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

第1章绪论

1.1研究背景及意义

随着第三代数字通信(3G)技术获得了广泛的接受,它为智能手机用户带来了更快的数据传输速率。(www.61k.com)智能手机不再仅是通讯网络的终端,还将成为互联网的终端。另外智能手机正一步步走进普通人的生活,这意味着智能手机将会成为人们获取信息的主要设备。因此,手机的应用服务将会有很大的发展空间,手机Web地图服务就是其中的一项。特别是地图服务中的基于位置信息的服务(LBS,LocationBasedService)是近年来备受人们关注的一项信息服务。它是指通过一组定位技术获得移动终端的位置信息(如经纬度数据),提供给移动终端用户本人或他人,从而实现各种与位置相关的服务【10】。目前的地图服务主要以使用单机或者网页方式实现,这些方式不适合在户外旅游等场合下进行,给用户造成了很多的不方便。而手机地图服务就很好的解决了这个问题,它的最大优点在于便携性好和数据的实时性。基于以上分析,设计手机地图服务具有非常好的实用意义。

61阅读提醒您本文地址:

到目前为止,开发内嵌式地图应用的软件是相当的困难,而且往往还需要支付很高的地图厂商的版权费用,加之手机上GPS功能的不完善,导致很多可以基于当前位置来开发功能的软件少之又少。就算是几个比较著名的LBS软件,使用者也是寥寥无几。还有就是现在手机生产商众多,而且操作系统不开源,各种应用放上去非常困难。对运营商来讲,往往需要对某类手机进行单独开发,成本无形增大很多。实现开源后,与运营商结成同盟,将导致成本降低。目前,操作系统的成本占15%一20%,这对消费者是一个很大的压力,把成本降到零,这对消费者和运营商都有好处。为此,Google于2007年11月推出了一个专为移动设备设计的软件平台——Android。它的出现打破了这些格局,还提供给普通开发者非常灵活的地图展示与控制功能。

Android是一个真正意义上的开放性移动设备综合平台,它包括操作系统、用户界面、中间件和一些关键的平台应用,拥有移动电话工作所需的全部软件。Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器131。当然,提到Android就不得不说手机开放

veb手机 基于Android平台的手机Web地图服务设计

第1章绪论

联盟(OpenHandsetAlliance),它是一个由33家手机制造商、软件商和电信业组成的推广Android平台的联合会l41。[www.61k.com]

Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,以形成自己的竞争优势,这对于手机制造商来说,具有很强的吸引力。因此,它具有很大的市场发展潜力。

1.2相关智能手机平台的现状分析

智能手机平台之争已经进入群雄争霸的时代,新势力的不断崛起,使其不断进步。因此,对智能手机的平台的研究与开发是当前移动计算技术发展中最为活跃的领域。现在对相关智能手机平台的现状作了如下分析【5捌。

1.2.1Symbian平台

SymbianOS(中文译音“塞班系统”)由诺基亚、索尼爱立信、摩托罗拉、西门子等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机平台。Symbian平台的前身是EPOC,而EPOC是ElectronicPieceofCheese取第一个字母而来的,其原意为“使用电子产品时可以像吃乳酪一样简单",这就是它在设计时所坚持的理念。

Symbian平台在智能移动终端上拥有强大的应用程序以及通信能力,这都要归功于它有一个非常健全的核心——强大的对象导向系统、企业用标准通信传输协议以及完美的sunjava语言。Symbian认为无线通讯装置除了要提供声音沟通的功能外,同时也应具有其它种沟通方式,如触笔、键盘等。在硬件设计上,它可以提供许多不同风格的外型,像使用真实或虚拟的键盘,在软件功能上可以容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等。此外,Symbian平台在扩展性方面为制造商预留了多种接口,而且EPOC平台还可以细分成三种类型:Pearl/Quartz/Crystal,分别对应普通手机、智能手机和HandHeldPC场合的应用。

Symbian分两个主要的智能平台,一个是适于单手操作的¥60,代表产品是诺基亚7650、3650;另一个是双手操作的¥80,代表产品是诺基亚的9210,主要针对商务用户。此外Symbian上还有另一个平台UIQ,以笔操作为主,代表产品是

veb手机 基于Android平台的手机Web地图服务设计

基于,nmdroid平台的手机Web地图服务设计

索尼爱立信的P802。(www.61k.com]

(1)采用数字键盘的手机(Symbians60)

此类手机需要灵活的应用界面,方便用户使用导航键(Joystick)、软按键或转点通键(Jogdial)操作,诺基亚3650和N.Gage也就是代表他们采用了Series60应用界面。如诺基亚6600;诺基亚7610;诺基亚6670等;

(2)采用触摸式屏幕的手机(SymbianUIQ)

这类手机主要采用了UIQ界面,其中以索尼爱立信P802、P908为代表。UIQ是一种可定制的基于手写笔输入的应用界面,很适合支持具有丰富多媒体功能的手机。

(3)采用完整键盘和超大彩色屏幕的手机(Symbians80)

此类手机为那些需要在办公室以外编辑信息和查看业务数据的用户提供了先进的移动通信功能。诺基亚9300---9500个人通讯器系列是此类应用界面的典型代表。

Symbian机型所采用的硬件配置较低,且各类机型采用的的处理器主频较低,虽然平台可以使其获得较高的处理效能,但是在多媒体等方面的表现依然不尽如人意。在多媒体方面,SymbianOS对主流的媒体格式的支持性较差。SymbianOS虽然采用多种平台,来适应不同人群和各类需要,但是这也给SymbianOS带来了一种限制性的发展障碍。各个平台之间第三方软件不兼容,且软件开发商多专注于某一个平台,大大减少了各个平台上可用的第三方软件,给用户带来了一定的不便。版本之间兼容性差也是SymbianOS需要改进的一个地方,每当新版本的SymbianOS发布并有产品面世时,系统的兼容性便成了其发展的一个大敌。相当多的一部分软件需要软件开发商跟进,开发新的版本才能得以解决。细节注意不够,由于symbian只提供给厂商一个内核及Ul,很多细节功能需要厂商去添加,但是很多厂商将着眼点放在了产品的多功能及综合性能等方面,往往忽略了一些基本的功能。一些机型甚至连工作日闹钟这类功能都需要第三方软件才能实现,这无疑给不熟悉symbian的用户的带来了极大的不便。

1.2.2WindowsMob.Ie平台

Windowsmobile系列平台是在微软计算机的Windows平台上变化而来的,因

61阅读提醒您本文地址:

veb手机 基于Android平台的手机Web地图服务设计

第1章绪论

此,它们的操作界面非常相似。(www.61k.com)WindowsMobile系列平台具有功能更强大,多数具备了音频、视频文件播放、上网冲浪、MSN聊天、电子邮件收发等功能。而且,支持该平台的智能手机多数都采用了英特尔嵌入式处理器,主频比较高,另外,采用该平台的智能手机在其它硬件配置(如内存、储存卡容量等)上也较采用其它平台的智能手机要高出许多,因此性能比较强劲,操作起来速度会比较快。但是,此系列手机也有一定的缺点,如因配置高、功能多而产生耗电量大、电池续航时间短、硬件采用成本高等缺点。

WindowsMobile6.5是现在最新的WindowsMobile平台。它较过去版本的主要变化体现在以下几个方面:一是拥有更美观的操作界面和更流畅的浏览体验,其中一个重点改进的地方就是触摸的蜂窝式主菜单,微软认为这种设计比普通的九宫格菜单更易于手指操控;二是提升了系统的移动互联功能,新增了能够将短信、照片、视频和联系人等资料同步到网络的MyPhone功能;第三则是提供了与苹果AppStore相似的WindowsMarketplaceforMobile应用商店,可直接从手机或网页访问;四是系统嵌入的InternetExplorer移动浏览器可以达到桌面级的表现效果,并且支持AdobeFlashLite。用户可以通过浏览器右侧的一个滑块条放大或缩小网页,浏览器地址栏也可以进行搜索。除此之外,新版系统还升级了触摸操作功能,新用户界面使用户能够利用手指在显示屏上移动图标,较之过去,显得更加的人性化和契合当前的潮流。不过要注意的是,WindowsMobile6.5只支持电阻式触摸,不支持电容式。还有就是,WindowsMediaPlayer和6.1版相比完全没有变化。遗憾的是,现有的WindowsMobile手机都无法升级到6.5版本,LG在大会上发布的LG.GM7300和HTC推出的TouchDiamond2、TouchPro2现在预装的也是6.1版,今年晚些时候才会升级到6.5版,直接预装WindowsMobile6.5的新手机也要到下半年才会上市。

1.2.3PALM平台

PALM是3Com公司的PalmComputing部丌发的一种32位的嵌入式平台,它的操作界面采用触控式,差不多所有的控制选项都排列在屏幕上,使用触控笔便可进行所有操作。作为一套极具开放性的平台,开发商向用户免费提供Palm平台的开发工具,允许用户利用该工具在Palm平台的基础上编写、修改相关软件,使

veb手机 基于Android平台的手机Web地图服务设计

基T-Android平台的手机Web地图服务设计

支持Palm的应用程序丰富多彩、应有尽有。[www.61k.com)PALM智能手机所用的PALM平台又与PALM掌上电脑所用的平台非常相似。因此,基于该平台的手机拥有的第三方软件较多,以前用惯了PALM掌上电脑的用户能快速地掌握这类的智能手机。

由于PALM一直遵循LessisMore(少就是多)这一理念去设计,所以,与微软所推出的平台要占有大量系统资源和储存容量不同的是,它本身所占的内存极小,基于PALM平台编写的应用程序所占的空间也很小,通常只有几十KB,所以基于PALM平台的掌上电脑虽然只有几兆内存却可以运行众多的应用程序。但是,这么一来,它的功能就没那么多,例如不具有录音、MP3播放功能等,如果你需要使用这些功能,就需要另外加入第三方软件或硬件设备方可实现。被称其为“具备移动电话功能的掌上电脑",而不是“具备掌上电脑功能的移动电话’’了。另外,对于中国用户而言,它有一个不足之处是,它的操作平台起初在中国销售的产品仍然要使用中文外挂平台,有相当部分依然是以英文界面为主,在一定程度上影响了基于PALM平台的产品在中国市场的大面积进入。还有就是娱乐性较差,操作比较困难,新手难于上手。目前,基于PALM平台的手机有三星SPH.i330、HandspringTreo

1.2.4Mac08650系列等。X平台

OS苹果手机的平台(Mac

软跃居手机行业第二。x)近JL年也是智能手机的一个新亮点,它已超过微

MacOSX使用基于BSDUnix的内核,并带有Unix风格的内存管理和抢占式多任务处理,大大改进内存管理,允许同时运行更多软件,这实质上消除了一个程序崩溃导致其它程序崩溃的可能性。它还具有极度华丽图形用户界面、极高的运行效率和稳定安全性。但是,这些新特征需要更多的系统资源,按官方的说法MacOSX只能支持G3以上的新处理器(它在早期的G3处理器上执行起来比较慢)。其中最具代表性的平台是iPhone,它是MACOSX10.5的精简版。

iPhone是节果公司(Apple.Inc,原苹果电脑)于2007年1月10日的全球WWDC07大会上发布的一款智能手机产品,也是苹果公司涉足手机通信行业的第一个作品。iPhone将音乐视频播放器、互联网访问、电子邮件、电话通信功能很好的结合在了一起,并且从中找到了很好的折衷契合点,将几种功能很好的融合在了一

veb手机 基于Android平台的手机Web地图服务设计

第1章绪论

起,从发布之日起就引起全球消费者的关注。[www.61k.com]iPhone引入了基于大型多触点显示屏和领先性新软件的全新用户界面,让用户用手指即可控制iPhonel91。

iPhone使用基于ARM架构的中央处理器,而不是节果的麦金塔计算机使用的x86处理器(就像以前的PowerPC或MC680x0),它使用由PowerVR视屏卡渲染的OpenGLES1.1.。因此,MacOSX上的应用程序不能直接复制到iPhoneOS上运行。他们需要针对iPhoneOS的ARM重新编写。但就像下面所提到的,Safari浏览器支持“Web应用程序”。从iPhoneOS2.0开始,通过审核的第三方应用程序已经能够通过节果的AppStore进行发布和下载了。还有就是苹果至今仍没有宣布任何让iPhone运行Java的计划。

61阅读提醒您本文地址:

1.2.5RIM平台

黑莓是智能手机中脱颖而出的一匹黑马,简称为Blackberry,这几年的发展比较迅速。它是加拿大RIM公司推出的一种移动电子邮件系统终端,其特色是支持推动式电子邮件、手提电话、文字短信、互联网传真、网页浏览及其他无线资讯服务。它采用RIM平台,而RIM平台基于J心,A平台,运行极为稳定流畅,对JAVA软件兼容能力强,也有不错的软件资源。采用了标志性的滚轮设计,操作时非常方便。

技术上来说,BlackBerry是一种采用双向寻呼模式的移动邮件系统,兼容现有的无线数据链路。它出现于1998年,RIM的品牌战略顾问认为,无线电子邮件接收器挤在一起的小小的标准英文黑色键盘,看起来像是草莓表面的一粒粒种子,就起了这么一个有趣的名字。应该说,Blackberry与桌面PC同步堪称完美,它可以自动把你Outlook邮件转寄到Blackberry中,不过在你用Blackberry发邮件时,它会自动在邮件结尾加上“此邮件由Blackberry发出"字样。

BlackBerry.nterpriseSolution是一种领先的无线解决方案,可供移动专业人员用来实现与客户、同事和业务运作所需的信息连接。这是一种经证明有效的优秀平台,它为世界各地的移动用户提供了与大量业务信息和通信的安全的无线连接。

BlackBerry安全无线延伸到移动商业用户的企业电子邮件帐户,即使他们在办公室外,也可轻松处理电邮,就像从没有离开办公桌。用户可以在旅途中发送、接收、归档和删除邮件、并阅读电邮附件、支持格式:如MicrosoftWord、Microsoft

veb手机 基于Android平台的手机Web地图服务设计

基丁Android平台的手机Web地图服务设计

Excel、MicrosoftPowerPoint、AdobePDF、CordWordPeffeCt、HTML和ASCII。(www.61k.com)BlackBerry解决方案的“始终在线”推入技术可以自动传递电邮,用户不需要执行任何操作就可接收通信。所以BlackBerry是移动电邮的巨无霸,比较适用于商务人士,但在多媒体播放方面的功能非常孱弱。

1.2.6OMS平台

为了推动移动互联网产业的发展,并保持中国移动对产业链的控制力,在苹果iPhone以及谷歌Android平台的启发下,中国移动将要携联想推出自己的手机平台OMS(OpenMobileSystem)。OMS同样是基于Linux内核,采用Android源代码,但在业务层和此前的谷歌手机完全不一样,OMS将集成大量中国移动的业务。显然中国移动并不愿意把采用该平台的手机叫Gphone或谷歌手机,而是使用了新代号Ophone。

1.2.7J2ME平台

PlatformmicroJ2ME(Java2edition)是Java语言专门针对嵌入式电子产品开发

的版本,应用在移动电话、PDA、电视机机顶盒以及其它资源受限的设备上,J2ME是目前移动设备上使用最广泛的开发平台。J2ME平台由多种配置、简表和可选包组成【10】。

可以发现J2ME的应用是建立在JVM(或KVM)之上,而主机操作系统是位于J2ME平台之外。这样的设计一方面提供了跨操作系统的特性,主机操作系统可以是Symbian、WindowsMobile和Linux,目前还不支持iPhoneMacOS。另一方面J2ME虽然提供了统一的开发平台,但是JVM的安全机制让J2ME的应用程序不能调用本地系统资源【11】。

1.3Android平台与其他平台的比较

首先看一下Symbian,它存在着以下的致命不足:Symbian的主导者为诺基亚、索尼爱立信等传统的手机厂商,因此虽然Symbian非常成熟,但它基本上还带有浓厚的保守色彩,应用软件与我们同常的PC软件有较大的理念差异。再者Symbian与互联网的结合给人感觉仍不够紧密,互联网应用更多只是作为陪衬存在。

Android平台与此相反,移动互联网是它最重要的应用,无论系统内核、应用软件还是硬件设计,几乎都是围绕着快捷的移动互联网应用所展开,同时Android

veb手机 基于Android平台的手机Web地图服务设计

第1章绪论

与PC平台存在先天的基因联系,可以很好的实现与PC设备的信息互享,更容易获得用户的广泛认可。(www.61k.com]与Android拥有相同属性的还有微软的Windows

然而臃肿的Windows平台饱受诟病,真正喜欢它们的用户并不多。

至于iPhone,它只是苹果公司的封闭平台,用户无法在iPhone中自行安装应用程序。所有的东西都应该苹果自行设计制造,从而确保利润不被第三方分享。苹果自己为iPhone开发了嵌入系统以及完整的应用,但它干脆都不宣扬iPhone的软件设计,而是将iPhone作为一个包含软硬件卖点的手机产品出售。同样,苹果式的奢华与时尚让iPhone大获成功,以至于成为手机市场的风向标。Mobile,

与苹果相反,Android则是走完全开放的道路,这种模式的巨大优点在PC软件领域已为业界所公认:自由软件高度活跃,错误可以被快速修正,新的应用、新的创意可以不断出现。自由的属性让Android的错误可以被快速修正,从而提高系统的可靠性与安全性。

Android平台的另外一个优势是标准化和跨平台。作为开发平台,可以为任何手机厂商自由选择一厂商对代码做出修改,那么修改的结果必须迅速返回,确保系统的统一性。

其次,Android的应用都基于Java开发,Java具有一次编写、到处运行的跨平台属性,换句话说,开发者只要编写一遍程序,就能够实现在所有Android设备中运行,真正做到了硬件无关性,这显然大幅度降低了开发者的负担。

再者,Android提供标准化的API和SDK开发包,手机厂商可以根据需要自行开发或收纳已有的程序,从而打造出富有特色的Android平台。这对手机厂商来说,他可以完全不管软件技术之类的问题,快速整合出适合自己的一套平台,然后将精力集中在硬件设计上面,可以再短时间内快速推出新品;对开发者来说,标准化的Android绝对是令人愉快的选择,现在你只需编写一次代码,就可以实现在所有Android平台上的顺利运行。

61阅读提醒您本文地址:

Android和操作系统进行了紧密的整合,从而可以方便地使用操作系统的功能。这与难于使用操作系统功能的J2ME相比,无疑对开发者有很大的吸引力。并且从图形应用界面的开发上面来看,Android可以使用配置文件来描述图形控件的布局,用Java代码编写实际响应代码,比AWT/Swing编写图形应用程序要方便得多。当然由于Android已经提供了大量现成的应用API和应用工具,使得常规智

veb手机 基于Android平台的手机Web地图服务设计

基y-Android平台的手机Web地图服务设计

能手机功能的开发变得非常容易和简单。[www.61k.com)

虽然都是使用Java语言进行开发,但是Android使用的Dalvik虚拟机和J2ME使用的标准的Java虚拟机(JVM)存在以下区别:

(1)模拟器方面。Dalvik在Android平台上的模拟器为Qemu,而J2ME官方的是WTK,同时摩托罗拉、索尼爱立信、诺基亚都有自己的模拟器,同时SymbianJ2ME有更多的扩展类,诺基亚的扩展类兼容性最差。

(2)兼容性方面。Dalvik和J2ME相比兼容性算是最大的突破,要知道J2ME的各个手机公司之间的移植就很麻烦,除了分辨率、硬件差异要考虑外,还有很多扩充类的问题。而AndroidDalvik工作在Google开放手机联盟中,可以完全脱离硬件困扰。

(3)运行效率方面。Android

DalvikDalvik会把JavaClass编码转换为Dex,Dex是VMexecutes的缩写,经过内存和运行效率的优化,而J2ME的为KJAVA,千字节的JavaVM所以在资源上控制的也很好。Dalvik是基于寄存器,而JVM是基于堆栈的。Android选择采用寄存器的方式是因为它对提前优化(ahead.of-timeoptimization)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的。针对基于寄存器虚拟机和基于堆栈的虚拟机更深入的比较分析指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译时花费的时间更短【12J。

(4)安全性方面。Java一向倡导安全性,从内存分配和高层上看不会有很多危险的操作,这是在J2ME上来看。而Dalvik作为Android平台级开发语言必然会涉及系统权限问题,如Linux的磁盘、用户控制等,不过Android平台通过一个WPF的模型,AndroidManifest.xml文件统一管理,类似Symbian中的能力一样,所以基本可以放心使用。

(5)类库完整性方面。这一点可以说Sun比较全面,但是我们看到Dalvik实际上是对J2ME的补充,并不是重写实现,除了显示uI系统有比较大的变革外,其他的还是很兼容的,所以目前版本的Dalvik已经包含了一些重要的特性,如Base64编码、XMLDOM、MD5处理、影音解码器(部分为可选包)【13】。

事实上,Android也是在继续J2ME未竞的事业。J2ME提供了统一的编程平台,但是J2ME不能调用操作系统资源,也没有提供诸多的应用工具,最终使J2ME处在一个非常尴尬的位置上。而Android向下既包括操作系统内核,向上又拥有现

veb手机 基于Android平台的手机Web地图服务设计

第1章绪论

成的应用软件,加之丌源、免费、可以直接使用Java语言为开发人员提供了极大的便利。[www.61k.com)这一切都表明了Android有取代J2ME的地位的可能,并且有望引领未来的智能手机市场。

1.4本文的主要工作

第1章为绪论,介绍了课题研究的背景和意义,以及对相关智能手机平台的现状进行了分析与比较。

第2章研究了Android平台的系统架构,分析了Android的特征及具体构成。第3章剖析了Android的应用程序结构。解析了Android中的重要API和应用构成,以及Intent和生命周期的机制,最后分析了Android应用程序数据存取方式和设计要求。

第4章阐述了Android开发环境的搭建及手机Web地图服务设计需要解决的前提问题,论述了服务系统的主要功能。接着采用UseCase图的方式来表达使用者与Android应用程序的互动过程,并从互动过程中,引导出应用程序的画面布局和Activity类的规划。然后对规划出的幕前布局和幕后Activity,采用顺序图的方式来表达更加详细的互动流程,同时针对这些设计了相应的流程图,以此作为程序转写的蓝图。最后就是设计了系统Activity之间的跳转算法和系统数据库。

第5章论述了各功能模块的主要实现过程,并给出了实现后的相关截图。第6章对课题研究成果做了一个简单的总结,并对以后的发展方向做了展望。

veb手机 基于Android平台的手机Web地图服务设计

基T-Android平台的手机Web地图服务设计

第2章Android的架构研究

Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构114l。(www.61k.com)由下而上,其核心为嵌入式Linux2.6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来丌发各种不同的应用程序【15?171。

2.1Android的功能特征

(1)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。

(2)Dalvik虚拟机器:在Android平台上所使用Java虚拟机,不是Sun公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。

(3)集成的浏览器:集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。WebKit是一个开源浏览器网页排版引擎,目前使用w|ebl(it引擎的浏览器主要有:Safari,Midori,Epiphany等。配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。

61阅读提醒您本文地址:

(4)优化的绘图能力:在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面,Android提供了一套特有的类库(SOL);而在3D方面则是使用OpenGLES1.0(OpenGLforEmbeddedSystems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。

(5)SQLite数据库:SQLite提供结构化的数据存取。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如PHP,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个

veb手机 基于Android平台的手机Web地图服务设计

第2章Android的架构研究

储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至ZTB。[www.61k.com]它虽然很小巧,但是支持的SOL语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用【18】。

(6)多媒体的支持能力:主要用于播放媒体文件。这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址"(Note:URI即是统一资源识别地址)模式——在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF等格式。

(7)GSM技术:GlobalSystemforMobileCommunications,即全球移动通讯系统,俗称"全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM技术是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。

(8)蓝牙、EDGE、3G及Wi.Fi:蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。EDGE(EnhancedDataRateforGSMEvolution),即增强型数据速率GSM演进技术。EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和8PSK调制技术。由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。Wi.Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的是2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。

(9)GPS:GlobalPositioningSystem,即全球定位系统,它是一个由覆盖全球的24颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。这

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地嘲服务设计

个同样也是属于手机硬体方面的展现,也是在开发Android应用程序时可以突出的特点之一。(www.61k.com)

(10、丰富的开发环境:在AndroidSDK提供相当完善的程序丌发环境,其开发环境包括设备模拟器、调试工具、内存和性能检测等方面的评估功能,另外也提供可用于EclipscIDE的开发插件界面。

2.2Android架构分析

图2.1显示的是Android架构中的5个主要部分【1””。每一部分将会在下面具体描述。

图2lAndroid架构

Fig.2.1Androidarchitecture

221应用程序

在AndroidSDK所用的手机模拟器及未来实体的手机中,都会有一系列以Java语言撰写的核心应用程序,包含电子邮件客户端、SMS程序、日历、测览器、联系人与其它一些应用程序。让使用者一Jr始就可以在手机上使用这些基本的功能。

veb手机 基于Android平台的手机Web地图服务设计

第2章Android的架构研究

2.2.2应用程序框架

在AndroidSDK中,定义了让开发者使用与核心应用程序相同API的权限。(www.61k.com]应用程序框架是为了要简化组件的重新利用而设计的,应用程序可以发布功能并为其它应用程序所使用。但是,这要受限于应用程序架构的安全机制,使用者可以用同样的机制来新增、置换组件。

目前所有的应用程序是由服务及系统来组成,包含有:

(1)一套强大和可扩展的视图系统:用来建构一个应用程序的基本组件,包含了在开发系统画面时,常用的列表、网格、文本框、按钮等控制项,甚至是内嵌的Web浏览器。

(2)内容提供者:使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

(3)资源管理器:提供各种非程序代码的资源让应用程序去使用。例如:本地字符串、图形文件或排版相关的布局文件。

(4)通知管理器:提供应用程序在状态栏中显示应用程序自定义的提示信息。(5)活动管理器:管理所有应用程序的生命周期及提供常用的导航回退功能。例如:启动应用程序要用到的资源准备及关闭应用程序时,释放内存及相关资源等工作。

(6)视窗管理器:用来管理所有启动程序的视窗。

61阅读提醒您本文地址:

(7)位置管理器:用来管理地图服务的相关功能。

(8)电话管理器:用来管理用户拨打与接听电话的相关功能。

(9)包管理器:管理所有安装在Android系统内的包。

2.2.3类库

在Android中包含一些C/C++的类库,这些类库能被Android系统中不同的组件来使用。开发者可以通过应用程序框架使用这些功能。部分核心类库列表如下:

(1)SurfaceManager:主要的功能是让开发者可以去存取/显示系统及管理的功能,在[显示]与[存取操作]间的对应、互动以及实现无接缝的2D/3D多应用程序之间的整合。例如:在2D、2D显示上的合成、叠合动作。

(2)3Dlibraries:主要是依OpenGLES1.0规范所定义的3D绘图引擎。该库使

veb手机 基于Android平台的手机Web地图服务设计

基3-.Android平台的手机Web地图服务设计

用硬件加速(当硬件可用时),可以将硬件的3D功能做最佳化的处理显示。[www.61k.com]

(3)SGL:主要是处理有关显示2D方面的绘图引擎。

(4)MediaFramework:主要是以PacketVideo公司的OpenCORE为基础所发展的多媒体类库,该库支持回放和录制大量流行的音视频格式和静态图片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式。

(5)FreeType:主要是用来显示点阵图和处理向量字形的。

(6)SSL-(SecureSocketsLayer),中文名为“安全套接层协议层”,它是网景公司提出的基于WEB应用的安全协议,当前版本为3.0。SSL协议指定了一种在应用程序协议(如HTrP、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。它已被广泛地用于Web浏览器与服务器之I'HJ的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSLRecordProtoc01):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHandshakeProtoc01):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议提供的服务主要有:①认证用户和服务器,确保数据发送到正确的客户机和服务器;②加密数据以防止数据中途被窃取;③维护数据的完整性,确保数据在传输过程中不被改变。

(7)SQLite:SQLite是一套开放性的关联式资料库,能够被所有应用程序使用的轻量级的关系数据库引擎。

(8)WebKit:是一个先进的网页浏览器引擎,被用来构建Android浏览器和内嵌的web视图,也可以让开发者利用这个引擎来做不同的应用。

(9)libc:就是一个BSD标准C类库。但是,针对Linux嵌入式装置进行过最佳化的调整。

2.2.4Android运行时组件

虽然Android是用Java语言来开发、撰写应用程序,但却不使用Java运行时组件来执行Java程序,而是使用了由Google自行研发的Android运行时组件来执

veb手机 基于Android平台的手机Web地图服务设计

第2章Android的架构研究

行程序。(www.61k.com)Android运行时组件包括两个重要的部分,一个是核心类库,另一个是Dalvik虚拟机。

(1)核心类库

核心类库罩头已经包含了绝大多数Java所需要调用的类,而每一个Android应用程序都有属于自己的独立进程。另外Android不是用一个Dalvik虚拟机来同时执行多个Android应用程序,而是每个Android应用程序都有一个属于自己的Dalvik虚拟机来执行。

(2)Dalvik虚拟机

Dalvik虚拟机是一种暂存器型态的虚拟机,简称DVM。DVM在撰写开发时就已经考虑到用最少的内存资源来执行,以及同时可执行多个VM个体。这样的设计,让系统在执行程序时可以以最佳化的方式来执行,节省更多的资源。不过,上述的特性需要有Linux作业系统的协助才‘能实现,例如程序间执行的控制、内存管理等。事实上不仅Dalvik虚拟机如此,Java虚拟机也一样有作业系统的相依性,不同的作业系统需要不同的Java虚拟机,而虚拟机会针对其支持的作业系统进行各项调整,以便能最佳化执行。

Dalvik虚拟机所执行的中介码并非是Java虚拟机器所执行的JavaBytecode,同时也不直接执行Java的类别文件,而是执行一种特有的文件格式,称为.dex。

Java的类别文件要先通过一套叫d】【的编译工具转换成.dex文件后,才能让Dalvik虚拟机来执行。此举的目的是进行优化,减少对内存的占用。而Dalvik虚拟机则改用基于寄存器的方式,数据皆存放于暂存器中,相较之下Dalvik虚拟机的指令就会少一点,速度就会加快一点,也就能更快的响应。

2.2.5LiDUX内核

在AndroidSDK的作业系统是用Linux,其版本为2.6版。而所提供的核心系统服务有:安全机制、内存管理、进程管理、网络协议栈和驱动程序模型。Linux内核也同时作为硬件与软件栈之间的抽象层,用来做相互沟通的工作。

veb手机 基于Android平台的手机Web地图服务设计

基1--Android平台的手机Web地图服务没计

第3章Android应用程序结构剖析

3.1Androi

Androidd的APIAPI主要包含了以下几个部分:

(1)AndroidManifest.xml

AndroidManifest.xml是系统的控制文件,它告诉系统如何处理所创建的所有应用组件(尤其是活动(Activity),服务(Service),意图接收器-(IntentReceiver)和内容提供者(ContentProvider))。(www.61k.com]举例来说,控制文件就是把活动和要接收的意[](Intents)连接在一起的“胶水"。

61阅读提醒您本文地址:

(2)活动

活动就是一个有生命周期的对象。一个活动就是完成某些工作的代码块,这部分工作还可能包括对用户UI界面的显示。不过这不是必须的,有些活动从不显示UI界面。

(3)视图

视图可以将其自身绘制到屏幕上。Android的用户界面由一系列的视图树构成。接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形窗口界面)。

(4)意图

意图是一个简单的消息对象,它表示程序想做某事的“意图"。比如应用程序想要显示一个网页,那么它可以通过创建一个Intent实例并将其传递给系统来表示意图浏览这个URI。系统将定位到能处理这一Intent的代码(在当前情况下就是浏览器),并运行之。意图也可以用于广播系统范围内的有效事件(例如通知事件)。

(5)服务

服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序的进程里,这取决于自身的需要.。其它的组件可以绑定到一个服务上来,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当用户退出媒体选择的界面时,仍然希望音乐依然可以继续播放,这时就可用服务来保证当用户界面关闭时音乐还继续播放着。

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应用程序结构剖析

(6)通知

通知将以小图标的形式呈现在状态栏里,用户通过与图标的交互式操来接收消息。[www.61k.com)最常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它们自己的通知事件。

(7)内容提供者

内容提供者是用来提供对设备上数据进行访问。典型的例子就是使用内容提供者来访问联系人列表。应用程序也可以使用其它程序通过内容提供者提供的数据,同时也可以定义自己的内容提供者来向其它应用提供数据访问服务。

3.2Android应用程序结构解析

通常由以下四个组件来构建一个完整的Android应用程序【24。矧。

●活动

?意图接收器

●服务

●内容提供者

然而,并不是所有的Android应用程序都必须具备上面的四个组件,可以由上面的一个或几个来组建。当决定使用以上哪些组件来构建Android应用程序时,需要将它们注册在AndroidManifest.xml文件中,这是一个XML配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是每个Android应用程序所必需的。

3.2.1活动

活动是以上四个组件中最常用的一个。每个活动都是Activity的子类,并实现了一些独有的功能,如管理Ul显示和Ul的反馈事件。一个活动就相当于应用程序的一个用户界面,由事件响应以及视图等组成。

大多数的应用程序通常包括多个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界面、一个聊天界面、一个设置界面、~个聊天记录查询界面等等。每个界面其实都可看作是一个活动。显示一个新界面就相当于生成一个对应的活动对象。在一些情况下,活动能够返回给它的上级界面一个返回值,例如~个提供给用户选择照片的活动可以返回给它的调用者用户选择了哪个照片

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

文件。(www.61k.com]

当一个新的活动出现时,前一个活动被中断并被放入到一个历史堆栈中。用户可以使用返回键使前一个活动重现。当一个活动不再需要时,可以将它们从历史堆栈中移除。默认情况下,Android会为每个应用程序保留从主界面开始的历史堆栈。

Android通过一个被称作意图的特殊类,来实现界面与界面之间的跳转。一个意图描述了一个应用程序想要做什么。在意图的描述结构中,含有两个重要的数据结构:动作和动作对应的数据。典型的动作类型包括MAIN、VIEW、PICK、EDIT等等,而动作对应的数据则以URI的形式表示。例如:显示一个联系人信息的界面,可以创建一个意图,并将它的动作设置成vIEW,数据设置成表示这个人信息的URI。

除此之外,还有一个被称作意图过滤器(IntentFilter)的相关类。当发生一个有效的目的请求时,意图过滤器用来描述一个活动能够处理什么意图。如上例中所描述,想要正常显示一个联系人信息的界面,必须声明一个意图过滤器,它说明当有联系人数据要被在界面上显示时,知道如何处理它们。通常意图过滤器要被注册在AndroidManifest.xml文件中。

从一个界面跳转到另一个界面是由解析各种意图实现的。例如:一个活动使用startActivity(myIntent)来调用其他活动时,系统会查找所有已经安装的应用程序的意图过滤器,并从中挑选出能够匹配myIntent意图的活动。随后,这个新的活动接收到意I羽(myIntent)的通知并开始运行。当startActivity方法被调用,解析意图的处理过程随之发生,这个机制有以下两个突出的优点:

?活动可以通过一个以意图形式产生的请求来重用其他组件的功能。

?活动可以在任何时候被一个具有等价意图过滤器的新活动所替代。

3.2.2意图接收器

当想要编写代码来对外部事件做一些处理时,可以使用意图接收器。意图接收器并不显示UI界面,它是通过NotificationManager来通知用户他们感兴趣的事件发生了。意图接收器同样可以被注册在AndroidManifest.xml文件中,同时也可以在代码中使用Context.registerReceiver0来注册自己的意图接收器。当一个意图接

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应川程序结构剖析

收器被触发时,系统会根据需要来启动应用程序。(www.61k.com]

3.2.3服务

服务是具有长生命周期并且没有用户界面的代码。一个媒体播放器从播放列表中挑选歌曲并播放是服务的一个最好的例子。在一个媒体播放器应用程序中可能包含很多的活动,它们实现了用户从播放列表中选择自己喜欢的歌曲,并使用播放器播放等功能。当应用跳转到一个新的界面时,用户仍然希望音乐继续在后台播放,这时音乐播放本身就不应该由活动来处理了。在这种情况下,活动应该使用Context.startService0来启动一个在后台播放音乐的服务,这样即使界面跳转了,音乐也会如用户所愿继续在后台播放。系统会一直保持音乐播放,直到服务停止。注意:可以使用Context.bindService0来连接一个服务(如果服务没有启动则启动它)。当已经连接上了一个服务,就可以使用服务提供的外部接口来和服务通讯。就媒体播放服务的例子来讲,它提供暂停、循环播放等等。

61阅读提醒您本文地址:

3.2.4内容提供者

在Android中,每个应用程序都是有自己的userID及在自己的进程中执行。这样做的好处是,可以保护系统及应用程序,避免被其他不正常的应用程序所影响。可以把每个进程想像成是一个黑盒子,彼此不会互相影响,连内存的资料都无法共享。如果应用程序之间想要共享数据,就需要使用用内容提供者。一个内容提供者就是一个类,它实现了一个标准的方法集合。其他的应用程序可以使用这些方法来保存和检索此内容提供者处理过的数据【31。321。

3.3Intent的详细解析

在一个Android应用中,主要是由四种组件组成的,这四种组件可参考上一节的内容。而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。在这些组件之间的通讯中,主要是由意图协助完成的。意图负责对应用中一次操作的动作、动作对应的数据、附加数据进行描述,Android则根据此意图的描述,负责找到相应的组件,将意图传递给它,并完成组件的调用。因此,意图在这里起着一个媒体中介的作用,专门提供组件之间互相调用的相关信息,实现调用者与被调用者之间的解耦133.161。例如,在一个联系人维护的应用中,当在一个联系人列表屏幕(假设对应的

veb手机 基于Android平台的手机Web地图服务设计

基1-.Android平台的手机Web地图服务设计

Activity为listActivity)上,点击某个联系人后,希望能够调出此联系人的详细信息屏幕(假设对应的Activity为detailActivity),为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,要做“查看"动作,此动作对应的查看对象是“某联系人",然后调用startActivity(Intentintent),将构造的Intent传入,系统会根据此Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity。(www.61k.com)系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

3.3.1Intent的抽象描述

在Android参考文档中,对意图的定义是执行某操作的一个抽象描述。该抽象描述的具体内容如下:

首先,它是要执行的动作的一个简要描述,如查看、修改等,Android定义了一套标准动作。此外,还可以根据应用的需要,定义自己的动作,并可定义相应的活动来处理自定义的动作。

其次,是执行动作要操作的数据,Android采用指向数据的一个URI方式来实现。

另外,除了动作和数据这两个重要属性外,还有一些附加属性:

?类别:被执行动作的附加信息。例如LAUNCHER_CATEGORY表示意图

的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVECATEGORY表示当前的意图是一系列的可选动作中的一个,这些动作可以在同一个数据上执行。

?数据类型:显式指定意图的数据类型。一般意图的数据类型能够根据数据本

身进行判定,但是通过设置这个属性,可以强制采用指定的类型。

●组件:指定意图的目标组件的类名称。通常Android会根据意图中包含的其

它属性的信息,比如动作、数据/数据类型、类别进行查找,最终找到一个与之匹配的目标组件。但是,如果组件这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,意图的其它所有属性都是可选的。

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应用稗序结构剖析

?附加信息:是其它所有附加信息的集合。[www.61k.com)使用附加信息可以为组件提供扩展

信息,比如,如果要执行“发送电子邮件’’这个动作,可以将电子邮件的标题、正文等保存在附加信息里,传给电子邮件发送组件。

总之,动作、数据/数据类型、类别和附加信息一起形成了一种语言。这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。随着应用不断的加入到系统中,它们可以添加新的动作、数据/数据类型和类别来扩展这种语言。应用也可以提供自己的活动来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。

3.3.2Android女lt.--J解析Intent

在应用中,可以以两种形式来使用Intent:

(1)直接意图:指定了组件属性的意图。通过指定具体的组件类,通知应用启动对应的组件。

(2)间接意图:没有指定组件属性的意图。这些意图需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此意图的组件。

对于直接意图,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接意图,通过解析,将意图映射给可以处理此意图的活动、意图接收器或服务。

意图解析机制主要是通过查找已注册在AndroidManifest.xml中的所有意图过滤器及其中定义的意图,最终找到匹配的意图。在这个解析过程中,Android是通过意图的动作、数据类型、类别这三个属性来进行判断的,判断方法如下:

◆如果意图指明定了动作,则目标组件的意图过滤器的动作列表中就必须包含

有这个动作,否则不能匹配。

?如果意图没有提供数据类型,系统将从数据中得到数据类型。和动作一样,

目标组件的数据类型列表中必须包含意图的数据类型,否则不能匹配。

?如果意图中的数据不是content:类型的URI,而且意图也没有明确指定它的

数据类型,将根据意图中数据的格式(比如http:或者mailto:)进行匹配。同上,意图的格式必须出现在目标组件的格式列表中。

veb手机 基于Android平台的手机Web地图服务设计

基丁.Android平台的手机Web地图服务设计

61阅读提醒您本文地址:

?如果意图指定了一个或多个类别,这些类别必须全部出现在组建的类别列表

中。(www.61k.com)比如意图中包含了两个类别:LAUNCHER—CATEGORY和ALTERNATIVE

别。

3.4AndroiCATEGORY,解析得到的目标组件必须至少包含这两个类d活动的生命周期

Android平台是个手机作业系统。撇掉其他功能不谈,手机的特性,就是应该能随时在未完成目前动作的时候,暂停正在使用的功能,切换到接电话、接收短信模式,而且在接完电话回到应用程序时,还希望能看到一样的内容口7。3引。

现在用户使用智能手机,大多已习惯使用多工的作业系统(如WindowsMobile),可以在用手机听音乐的同时,执行其他多个程序。同时执行多个程序有它的明显好处,但也有它的缺点。每多执行一个应用程序,就会多耗费一些系统内存,而手机里的内存是相当有限的。当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统运行时就会觉得越来越慢,甚至不稳定。为了解决这个问题,Android引入了一个新的机制——生命周期。

Android应用程序的生命周期是由Android框架进行管理,而不是由应用程序直接控制。通常,每一个应用程序(入口一般会是一个活动的onCreate方法),都会占据一个进程。当系统内存即将不足的时候,会依照优先级自动进行进程的回收。不管是使用者或开发者,都无法确定应用程序何时会被回收。关于进程的生命周期将在下一节中介绍,本节主要介绍活动的生命周期。

一个活动类别除了OnCreate方法之外,还预先定义了OnPause(暂停)、OnResume(继续)等的基本方法,当从一个活动切换到另一个活动的时候,原来的活动将经过一连串的状态改变。开发者可以在程序中添加一些各状态相对应的流程,每次活动状态改变时,就会执行相对应的流程。

要让用户有好的使用体验,活动需要在各个周期中负责保管状态、恢复状态、传送资料等工作。

3.4.1活动的生命状态

Android的虚拟机(VM)是使用堆栈管理。主要有四种状态:(1)活动状态

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应用程序结构剖析

活动状态是指用户启动应用程序或活动后,活动运行中的状态。(www.61k.com]在Android平台上,同一个时刻只会有一个活动处于活动或运行状态。其他的活动都处于未启动、停止或是暂停的状态。

(2)暂停状态

暂停状态是指当活动暂时暗下来,退到背景画面的状态。当警告对话框或电话来了时,都会让原来运行的活动退到背景画面。新出现的警告对话框等界面元件盖住了原来的活动画面。活动处在暂停状态时,用户无法与原活动互动。

(3)停止状态

停止状态是指有其他活动正在执行,而这个活动已经离开屏幕,不再动作的状态。通过按返回键,可以调出所有处于停止状态的应用程序列表。处于停止状态的活动,还可以通过通知来唤醒。

(4)已回收或未启动状态

已回收或未启动状态是指活动尚未被启动、已经被手动终止或已经被系统回收的状态。要手动终止活动,可以在程序中调用finish方法。如果是被系统回收,可能是因为内存不足了,所以系统根据内存不足时的回收规则,将处于停止状态的活动所占用的内存回收。

veb手机 基于Android平台的手机Web地图服务设计

基-rAndroid平台的手机Web地图服务设计

图3.2活动的生命周期

Fig.3.2Activitylifecycle

图3.2所示的七个状态又可以归纳成三组:

(1)资源分配(创建/销毁)

完整的活动生命周期由创建状态开始,由销毁状态结束。[www.61k.com)创建时分配资源,销毁时释放资源。(2)可见与不可见(启动/重新启动/停止)

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应用程序结构剖析

当活动运行到启动状态时,就可以在屏幕上看到这个活动。(www.61k.com)相反地,当活动运行到停止状态时,这个活动就会从屏幕上消失。当用户按下返回键回到上一个活动时,会先到重新启动状态,再到一般的启动状态。

(3)用户取得屏幕的控制权(继续/暂停)

当有个警告对话框、短信、电话等信息进入时,原来的活动会进入暂停状态,暂时放弃屏幕的控制权,被中断到背景去,将前景交给优先级高的事件。当这些优先级高的事件处理完后,活动就改进入继续状态,此时又取得屏幕的控制权。3.4.2活动的运作流程

由实际运行来看,我们可以归纳出所有Android应用程序都遵循的运作流程:(1)一般启动

启动一个活动的基本流程为onCreatc->onStart->onResume。该流程首先分配资源给这个活动(创建状态),然后将活动的内容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开始使用这个程序。

(2)调用另一个活动

调用另一个活动的基本流程为onPause(1)一>onCreate(2)一>onStart(2)一>onResume(2)一>onStop(1)。该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停止。

(3)回到原来活动

回到原来活动的基本流程为onPause(2)一>onRestart(1)一>onStart(1)一>onResume(1)一>onStop(2)一>onDestroy(2)。另外按返回键也可以回到原来的活动。

(4)退出结束

退出结束的基本流程为onPausc一>onStop一>onDestroy。如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停止,然后销毁。

(5)回收后再启动

回收后再启动的基本流程为onCreate->onStart->onResume。如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的onCreate方法。

61阅读提醒您本文地址:

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

当在模拟器上已经执行过多个应用程序,只要按下返回键,就会开启最近一次丌启过的活动。(www.61k.com)这时要是按下多次返回键,理论上迟早会返回到某个已经销毁的活动。

如果应该开启的活动已经被回收了,那么这个活动会再次被创建。再次被创建的活动,跟原来开启过的活动是不一样的。

所以如果要让再次被创建的活动跟原来开启过的一样,那么在活动之间切换时,就要保存资料:即在每次活动运行到暂停或停止状态时先保存资料,然后在创建时将资料读出来。

3.5Android进程的生命周期

在大多数情况下,每个Android应用程序都运行在自己的Linux进程中。当应用程序的某些代码需要运行时,这个进程就被创建并一直运行下去,直到系统认为该进程不再有用为止。然后系统将回收进程占用的内存以便分配给其它的应用程剧40421。

应用程序的开发人员必须理解不同的应用程序组件(尤其是活动,服务和意图接收器)是如何影响应用程序进程生命周期的,不J下确地使用这些组件可能会导致系统杀死正在执行重要任务的应用程序进程。

为了决定在内存不足时让系统杀死哪个进程,Android根据每个进程中运行的组件以及组件的状态把进程放入一个“重要性分级"中。进程的类型包括(按重要程度排序):

(1)前台进程,与用户当前正在做的事情密切相关。不同的应用程序组件能够通过不同的方法使它的宿主进程移到前台。当下面任何一个条件满足时,可以考虑将进程移到Ij{『台:

①进程正在屏幕的最前端运行一个与用户交互的活动(它的onResume0方法被调用)

②进程有一正在运行的广播接收器(它的BroadcastReceiver.onReceive0方法正在执行)

③进程有一个服务,并且在服务的某个回调函数(Service.onCreate0,Service.onStart0或Service.onDestroy0)内有正在执行的代码。

veb手机 基于Android平台的手机Web地图服务设计

第3章Android应用程序结构剖析

(2)可见进程,它有一个可以被用户从屏幕上看到的活动,但不在前台(它的onPauseO方法被调用)。[www.61k.com)举例来说,如果前台的活动是一个对话框,以前的活动隐藏在对话框之后,就可能出现这种进程。这样的进程特别重要,一般不允许被杀死,除非为了保证前台进程的运行不得不这样做。。

(3)服务进程,有一个已经用startService0方法启动的服务。虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如后台MP3回放或后台网络数据的上传下载)。因此,系统将一直运行这些进程除非内存不足以维持所有的fj{『台进程和可见进程。

(4)后台进程,它有一个当前用户看不到的活动(它的onStop0方法被调用)。这些进程对用户体验没有直接的影响。如果它们J下确执行了活动的生命周期,系统可以在任意时刻杀死进程来回收内存,并提供给前面三种类型的进程使用。系统中通常有很多个这样的进程在运行,因此要将这些进程保存在LRU列表中,以确保当内存不足时用户最近看到的进程最后一个被杀掉。

(5)空进程,不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度。

系统将以进程中当前处于活动状态组件的重要程度为基础对进程进行分类。另外,进程的优先级可能也会根据该进程与其它进程的依赖关系而增长。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

4.1需求分析

4.1.1用户体验需求

一个成功的Android应用程序往往需要提供良好的用户体验。[www.61k.com)良好的用户体验体现在以下几点:

(1)界面友好

用户界面要简洁直观,并且易于操作。

(2)快速响应

快速处理用户的输入或请求,对于有些需要较多时问的应用程序,可以在它处理时,给用户一个提示,让用户知道程序还在运行中。

(3)无缝性

Android应用程序模型的构建是能够允许用户在不同的应用程序之问进行流畅的切换。所以当用户正在做一些其他的事情,如在接电话或查看地图时,SMS服务每次都在短信收到时弹出一个对话框,这很快就会使用户崩溃,需要引入通知机制,来使用户能够自己控制。

4.1.2功能需求

手机Web地图服务系统扮演着与用户直接交互并提供服务的重要角色,它需要提供友好的、方便的用户操作界面,接收用户的各项操作并将这些操作转化成与之对应的命令,采用用户活动的方式完成各个服务逻辑流程。其功能需求主要包含以下内容:

(1)地图缩放功能

用户能够通过此缩放功能,随时放大某一块感兴趣的地图数据,或者缩小当前的地图信息到更高一个视觉观察层次。

(2)视图模式切换功能

在显示地图信息的时候,应该提供给用户显示地图的街道信息、卫星信息和交通信息三神常规的视图模式,用户可以根据自己的需要选择一种合适的视图模式。

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

(3)自我定位功能

当手机用户来到一个地方或者迷路时,可以通过此功能来确定自己当前所在的位置信息和对应的地图信息。[www.61k.com]

(4)行走踪迹功能

当用户出去旅游或者去一个地方又怕迷路时,可以通过此功能把走过的路线描绘出来,为回顾行程提供方便。

(5)地点查找功能

当用户想了解某个地方时,可以通过此功能来显示对应的地图信息。

(6)创建记录功能

当用户认为这个地点很重要(以后需要查看或者还来这个地方)时,可以通过此功能把此地的经纬度及相关信息保存下来。

61阅读提醒您本文地址:

(7)记录列表功能

当用户想查看、修改、删除保存的记录及再次查看某个重要地点或浏览自己去过的地方时,可以通过此功能来实现。

(8)手机定位功能

当用户的手机丢了或者被偷,可以使用别人的手机,通过此功能来接收手机所处位置的GPS坐标信息,从而找到手机。

(9)路线查询功能

当用户想知道地方A到地方B的行驶路线时,可通过此功能来显示出路线信息。

(10)其他辅助功能

为满足用户其他方面的服务需求,可以添加一些跟地图服务相关的功能如:查看天气、浏览大连等功能。

4.2建立Android开发环境

4.2.1下载开发资源

(1)首先打开网址http://code.google.corn/android/download.html来下载最新的AndroidSDK。国内基本是用Windows系统,所以就选择Windows版本的SDK。下载后直接解压缩就可以使用,为了在控制台中直接使用SDK中的工具,把SDK

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

的目录添加到Windows的path环境变量中。[www.61k.com)

(2)接着打开网址http://java.sun.com/javase/downloads/index.jsp来下载JDK6(JD飚开发的时候会有一些Bug)。安装完后,设置JDK环境变量(javahome,classpath,path)。

(3)最后是打开网址http://www.eclipse.org/downloads!来下载Eclipse3.2或3.3版本(开发Android的IDE)。

4.2.2更新EcI.pse并下载ADT(Android开发插件)

(1)启动Eclipse,选择Help>SoftwareUpdates>Findand

toInstall…。(2)弹出对话框后,选择Searchfornewfeatures

(3)点击NewRemoteSite。install,然后点击Next。

(4)在编辑框中输入更新插件的网址:https://d1.ssl.google.com/android/eclipse/,点击OK。

(5)看到一个更新的列表,点击Finish。

(6)在返回的对话框中选择Android

DevelopmentPlugin>EclipseIntegration>AndroidTools并且点击Next。

thelicense(7)选择Accepttermsof

(8)点击Finish。agreement,点击Next。

(9)选择Install灿l。

(10)重新启动Eclipse。

(11)重启后设置Android属性中的AndroidSDK目录(不包括SDK下的Tools,比如E:\androidXXXXX):

①选择Window>Preferences…打开编辑属性窗口。

②选择Android属性面板。

③点击Browse…,选择加入AndroidSDK的目录。

④选择Apply,最后点击OK。

4.2.3使用Ec|.pse开发Android应用

使用EclipselDE开发一个Android应用。首先是创建一个Android工程,然后是设置应用启动配置。然后可以编辑代码,启动,调试应用。

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

(1)创建一个Android工程。[www.61k.com]ADT插件提供了一个新的工程向导帮助快速的建立Android工程和编辑现存的Android项目的代码。

按照下面的步骤建立Android工程:

①选择File>New>Project。

②选择Android>Android

③设置工程的用途:

选择CreatenewProject,点击Next。projectinworkspace可以建立一个新的Android工程,输入工程的名字,代码的开发包的名字,应用界面的类名字,应用程序的标题的名字。

选择Createprojectfromexistingsource可以根据现存的代码建立一个工程.通过这个选项可以建立并运行现存的Google提供的Example

SDK的目录中可以找到)。Application(在Android

④点击Finish。

ADT插件将会为工程建立src/代码文件存放的目录、res/资源文件目录和AndroidManifest.xml应用工程的主配置文件。

(2)建立一个启动配置。在使用Eclipse调试程序之前,必须为工程建立一个启动配置:

①选择Run>OpenRunDialog…或者Run>OpenDebugDialog…。

②在左边的类型中选择AndroidApplication,点击New。

③输入一个配置的名字。

④在Android选项中,选择一个应用的界面最为应用启动的主界面。

⑤点击Apply保存配置,点击Run或者Debug开始调试程序。

(3)调试应用程序。

一旦建立了工程启动配置就可以按照如下的步骤调试程序:从Eclipse的主菜单中选择Run>Run或Run>Debug。如果需要还可以重新配置启动参数,比如选择其他的程序界面作为启动的主界面。

4.3系统开发需要解决的几个前提问题基于在Android平台下设计手机Web地图服务需要解决以下几个前提问题:

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

4.3.1Android权限的获取问题

Android安全中的一个重要的设计点是在默认情况下应用程序没有权限执行对其它应用程序、操作系统或用户的有害操作。[www.61k.com]这些操作包括读/写用户的隐私数据(例如联系方式或e.mail),执行网络访问,保持设备活动,等等。应用程序的进程是一个安全的黑盒子,它不能干扰其它应用程序,除非给它声明权限,现对权限的命名和获取问题做下说明。

61阅读提醒您本文地址:

(1)权限命名

一个基本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。在应用程序需要时,可在AndroidManifest.xml文件中列举一个或更多的<USES.permission>标签来声明此权限。

例如:需要监听来自SMS消息的应用程序将要指定如下内容:

<manifestxmlns:android=”http://schemas.android.com/apk/res/android”

package=”com.android.app.myapp”>

<uses-permissionandroid:name=”android.permission.RECEIVE_SMS”/>

</manifest>

(2)在AndroidManifest.xml文件中支持权限

通过AndroidManifest.xml文件可以设置高级权限,用来限制访问组件或应用程序。所以如果要访问某组件,需要在这个文件里声明一个权限,现对跟本系统有关的组件权限做下说明。

①Activity权限(使用<activity>标签)限制能够启动与Activity权限相关联的组件或应用程序。此权限在Context.startActivity0和Activity.startActivityForResult0期间要经过检查;如果调用者没有请求权限,那么会为调用抛出一个安全异常。

②BroadcastReceiver权限(使用<receiver>标签)限制能够为相关联的接收器发送广播的组件或应用程序。在Context.sendBroadcast0J压_回后此权限将被检查,同时系统设法将广播递送至相关接收器。因此,权限失败将会导致抛回给调用者一个异常;它将不能递送到目的地。在相同方式下,可以使Context.registerReceiverO支持一个权限,使其控制能够递送广播至己登记节目接收器的组件或应用程序。其它的,当调用Context.sendBroadcast0以限制能够被允许接收广播的广播接收器

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

对象一个权限。(www.61k.com]

4.3.2Android用户界面构建问题

Android生成用户界面有三种方式:xml配置生成;通过用户自己的界面接口生成;直接用代码生成。根据MVC原则,uI应该与程序相逻辑分离。因此,推荐在XML中定义UI结构。此外,一个程序从一个界面切换到另一个也容易得多了。Android应用程序的基本功能单元就是Activity。~个活动可以做很多事,但是它自己并不会显示在屏幕上。想要让活动显示在屏幕上并且设计它的UI,需要使用Android平台基本的用户界面表达单元,如View和Viewgroup。现在主要解决一下布局对象问题。

n)线性布局

线性布局(LineafLayout)以为它设置的垂直或水平的属性值来排列所有的子元素。所有的子元素都被排列在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管它们有多宽,一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。线性布局保持子元素之间的间隔以及相互对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

线性布局还支持为单独的子元素指定weight,这个允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许它们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。

图4.1的两个窗体采用线性布局,包含一组的元素:一个按钮,两个标签,两个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置为FILLPARENT;其它元素的width被设置为WRAPCONTENT。默认的对齐方式为左对齐。左边的窗体没有设置weight(默认为0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。

veb手机 基于Android平台的手机Web地图服务设计

基fAndroid平台的手机Web地图服务设计

图4l线性布局

Fig.41LinearLayout

f21相对布局

相对布局(RelativeLayout)允iq:子元素指定它们相对于其它元素或父元素的位置(通过ID指定)。[www.61k.com)因此,可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个布局,在定义它之前,被关联的元素必须定义。现在来看一个相对布局的例子,如图4.2所示。

图42相对布局Fig.4.2RelativeLayout

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。(www.61k.com)这些属性一部分是由元素直接提供,另一部分是由容器的LayoutParams成员(相对布局的子类)提供。相对布局的参数有width,height,below,alignTop,toLeft,padding和marginLefl。注意,这些参数中的一部分,其值是相对于其它子元素而言的,所以才称为是相对布局。这些参数包括toLefl,alignTop和below,用来指定相对于其它元素的左,上和下的位置。

(3)绝对布局

61阅读提醒您本文地址:

绝对布局(Abs01uteLayout)可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(o,0)为左上角,当向下或向右移动时,坐标值将变大。绝对布局没有页边框,允许元素之间互相重叠。通常不推荐使用绝对布局,除非没有更好办法不得不使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

(4)表格布局

表格布局(TableLayout)将子元素的位置分配到行或列中。android的一个表格布局由许多的TableRow组成,每个TableRow都会定义一个row。TableLayout容器不会显示row、cloumns或cell的边框线。每个row拥有O个或多个的cell:每个cell拥有一个View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列。

4.3.3资源的获取和使用问题

资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML、PNG以及JPEG文件。它们在运行的时候被解析,XML文件根据描述不同有不同的格式。

源代码以及XML文件将资源打包并编译进二进制文件,这种模式能使得资源更快得被加载。字符串也同样被压缩成更高效的模式。由于这些原因,Android平台上可以有不同的资源类型。

Android资源系统能跟踪所有非代码相关的应用程序。程序开发者可以使用资源类来访问应用程序的资源,资源的实例通常和应用程序联系在一起,可以通过Context.getResources0来访问。应用程序的资源在编译时就被编译到应用程序二进制代码里。为了使用某个资源,程序开发者需要将它放在对应的代码目录结构里,

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

然后编译。(www.61k.com]作为编译过程的一部分,产生的资源代号可以在源代码里使用——这就可以用编译器来验证程序代码和定义的资源是否相符。

(1)创建资源

Android支持字符串、图片以及很多其他类型的资源。每个对象语法、格式以及它们存储位置的支持,都是取决于不同类型的对象。通常,程序开发者可以通过三种类型的文件来创建资源:XML文件(除位图以及原数据文件),位图文件(对于图片)以及原始数据(其它类型,例如声音文件等)。事实上,有两种不同类型的XML文件,一种是编译到包罩的,另外一种是通过aapt产生的资源文件,这里有一张包含资源类型、文件格式、文件描述以及XML文件的详细信息的列表,如表4.1所示。

表4.1资源类型

Tab.4.1Resourcetypes

路径

res/drawable/资源类型.png和Jpg这些类型的文件被编译进下列图表资源列表。为

了获得这些资源的类型,使用Resource.getDrawable(id)。

res/1ayout/可编译成屏幕布局的XML文件(或者屏幕的一部分)。

可编译成多种类型资源的文件(注意:不像其他re,s/文件

夹,它能容纳任何数量的文件,但只是描述其创建而不是资

源本身。XML的元素类型可以决定这些资源在R.class里什

么位置被替换。),文件可以被命名为任何名字,文件夹里有

一些典型的文件(一般约定文件以定义的元素类型后面部分

为文件名):(Darrays.xml定义数组。(墓)colors.xml定义颜色

res/values/和颜色字串数值。你可以使用Resources.getDrawable0以及

Resources.getColor0来取得这些资源。(耍)dimens.xml定义尺

寸数据。使用Resources.getDimension0取得这些资源。④

strings.xml定义字符串数值。使用Resources.getString或

Resources.getText0取得资源(后者更好一点),getTextOfl邑

取到在用户界面上显示的文本框里的文本。逼)styles.xml定

义类型对象。

任何XML文件可以进行编译,并能在运行时调用

res/xml/

Resources.getXML0显示XML原文件。.37.

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

在项目里,程序开发者可以在子目录res/下创建和存储资源文件。[www.61k.com)Android有一个资源编译工具(aapt),它可以编译在这个目录下所有的子目录中的资源,资源最终会被编译成APK文件。Android创建一个包装类,命名为R,这样程序开发者就可以在代码罩使用这些资源类。

(2)在代码中使用资源

编译时,Android产生一个叫R的类,它指向程序中所有的资源。这个类包含很多子类。每一种都是Android支持的,同时,编译后会产生一个资源文件。每个类提供一个或多个编译后的资源标识符,可以在代码中被使用。注意:这个R类是自动产生的,不能手动编写,当资源变化时它会自动更新。

只要知道资源的ID以及编译进目标文件的资源类型就可以在代码里使用它。如:R.resource_type.resource_name或者android.R.resource_.type.resource_name。resource_type是R子类的一种类型。resource_name是定义在XML文件里的资源名或者为其他文件类型定义的资源文件(没有后缀)名。每种类型的资源会被加入到一个特定的R的子类中,被编译进应用程序的资源不需要包的名字就可以直接被访问到(像这样:R.resource_type.resource_name)。Android包含一些标准资源,如屏幕的类型,按钮的背景。要使用这些代码,需要包含android,如android.R.drawable.button_background。

61阅读提醒您本文地址:

4.3.4ApiKey的申请和使用问题

Map的APIKEY非常重要,没有它是无法显示地图的。

首先打开Eclipse…>Windows…>Preferences…>Android…>Build查看默认的debugkeystore位置,比如,我的是CADocumentsandSettings\AdministratorR.ocalSettingskApplicationDatakAndroid\debug.keystore。

接着,在cmd中执行keytool—list—aliasandroiddebugkey-keystore”C:\DocumentsandSettingskAdministrator、J_ocalSettingskApplication

\debug.keystore”-storepassData博ndroidandroid.keypassandroid,双引号中的为你keystore位置,执行结果得到认证指纹(MD5)。

最后,打开网页http://code.google.com/intl/zh—CN/android/maps—api-signup.html,填入你的认证指纹(MD5)IiIJn---J获得ApiKey了。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

申请好Apikey后,需要放在正确的位置力能使用。(www.61k.com)以下是几种常用方法:

(1)在XML布局文件中的使用

(2)直接在java代码中加入使用

ImyMapView=newMapView(this,”这里加上自己申请的Apikey”);I4.4功能框图

在设计系统的功能架构时,主要分为自我定位服务、查询一个地方的地图服务、对地图进行缩放服务、对地图的视图模式进行切换服务、查询一个地方到另外一个地方的交通路线的服务等功能模块,系统模块结构示意图如图4.3所示。

地图服务

浏览大连自我定位行走踪迹地点查找手机定位路线查询卫星图街道图路况图放大缩小创建记录记录列表查看天气

图4.3系统模块结构

Fig.4.3Systemmodulestructure

(1)视图模式切换及地图缩放

功能描述:显示一个地方的卫星图、街道图、交通图和对地图进行放大缩小。应用场景:当用户想查看一个地方的街道情况和交通情况或更清晰地图时,可以使用此系列功能来进行查看。(2)浏览大连

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

功能描述:查看大连,并对几个特定地方进行标示。[www.61k.com]

应用场景:给几个有名的地方进行标注提示。

(3)自我定位

功能描述:利用GPS原理对自己的位置进行定位,可以随时查询手机用户当前的位置。

应用场景:当手机用户随便到一个地方时,可以使用此功能来确定自己当前所在的位置。

(4)行走踪迹

功能描述:把用户经过的地方以路线图的形式给画出来,给用户回顾一天的行程提供方便。

应用场景:当用户想记录自己某段时间的行程,可以使用此功能来进行。(5)地点查找

功能描述:显示用户需要查看的地方的地图。

应用场景:当用户想了解某个地方时,可以使用此功能来进行查看。(6)创建记录

功能描述:保存重要地点的经纬度及相关信息。

应用场景:当用户认为这个地点很重要(以后需要查看或者还来这个地方),可以使用此功能来保存相关的信息。

(7)记录列表

功能描述:显示保存的记录去浏览记录中的地方。

应用场景:当用户想再次查看某个地方或回想自己去过地方的相关信息时,可以使用此功能来进行查看。

(8)手机定位

功能描述:接收你手机所处位置的GPS坐标,从而找到你的手机。

应用场景:当你的手机丢了或者被偷,你可以用别人的手机来使用此功能来找到你的手机。

(9)路线查询功能描述:显示一个地方到另外一个地方的行驶路线。

veb手机 基于Android平台的手机Web地图服务设计

基-f.Android平台的手机Web地图服务设计

应用场景:当用户想知道地方A到地方B的行驶路线时,可以使用此功能进行查看。(www.61k.com)

(10)查看天气

功能描述:查看当前查看地周边地区的天气情况。

应用场景:当用户想了解某个地方的天气情况时,可以使用此功能来进行查f

侣o

4.5布局规划及互动流程

一个系统通常会用多个画面来与使用者进行沟通。用UseCase图来表达使用者与Android应用程序的互动过程,从互动过程中,引导出应用程序的画面布局和Activity类的规划。

现在对系统中的地点查找、创建记录、记录列表(记录列表中包含查看记录、修改记录、删除记录和查看记录代表地图的功能)功能进行幕前的画面布局和幕后的类别规划,如图4.4所示。

Q人嘶

图4.4用例图

Fig.4.4UseCase

规划出幕前的布局和幕后的Activity后,可以使用UML顺序图来表达更详细的互动流程,如图4.5所示。

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

pressSearchO

startActivityForResult0

PressG“)

searchString

mapinformation

pressCreateRecordO

statlActivityForResult()

prcssSavcO

startActivityForResul[O

pressEditRecord()

stsrtActiviOyForResult(

pressSave

行llD讹()pressDclRecordO

61阅读提醒您本文地址:

矗llData()

图4.5时序图

Fig.4.5SequenceDiagram

.42.

veb手机 基于Android平台的手机Web地图服务设计

基y-Android平台的手机Web地图服务设计

4.6地点记录管理流程图

启动模拟器后,模拟器会自动加载指定的图片,然后进入主界面,并在主界面中把图片显示出来,而且会根据屏幕的大小自动调整显示出的图片。[www.61k.com]然后在菜单栏中可以选择地点查找、创建记录和记录列表等功能,并进入相应的界面。如果想退出相应的界面,可以按菜单的Exit键返回到地图服务主界面。现针对4。4节的布局规划和互动,设计出相应的流程图,如图4.7所示。

图4.7地点记录管理流程

Fig.4.7Locationrecordsmanagementprocess

veb手机 基于Android平台的手机Web地图服务设计

第4章丁.机Web地图服务系统设计

4.7系统ActiVity跳转算法

一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,要根据要求的不问,分成不需传回内容和传回内容两项。(www.61k.com)

对于不需返叫信息的,采用COR设计样式来实现多个Activity子类别之间的关系,如图4.6所示。

图4.6活动跳转

Fig.4.6Jumpactivities

其中,TaskSeeDL、qhskMyLoc和TaskFinp是一般类别,由TaskSeeDL调用startActivityO来启动看大连这个Activity或具有相同Intent的其他Activity;由Task_MyLoc调用startActivityO来启动MyLocation这个Activity或具有相同Intent的其他Activity。依此类推,有Task一木调用startActivity0来启动Activity_奉或具有相同Intent的其他Activity。对于需要有返l回信息的,采用startActivityForResultO来启动Activity。对于各

veb手机 基于Android平台的手机Web地图服务设计

基t-Android平台的手机Web地图服务设计

个Activity返回的值,利用消息响应算法进行选择后,再执行相应的功能代码。(www.61k.com]算法如下:

……消息响应算法

INPUT:Data/designatedmaprecord

OUTPUT:Expectedresultsoftheaccordingactivity

IF(requestCode==GET_SEARCH_TEXT){

StringsearchString2data.getStringExtra(”searchString”);

ProgressDialogpd=Showaprogressdialogtouesr;

startSearch(searchString);

}ELsEIF(requestCode==GET_MAPRECORD_INFO){

IF(dataf-null){

Stringname=data.getStringExtra(MR_NAME);

IF(name!=null&&name.1ength0>0){

Stringdesc;

try{

desc=data.getStringExtra(MR_DESC);

}catch(Exceptione){

desc=””;

mDbHelper.insertTitle(name,desc,

MapMark.getLat0,

MapMark.getLon0,

MapMark.getZoomLevel0,

MapMark.isSatellite0,

MapMark.isTraffic0);

}ELSE{

notifyUser(”Can’tsavewithoutaname”);

ENDIF;

}ELSE.【

notifyUser(”Can’tsavewithoutanything”);

ENDIF;

)ELSEIF(requestCode==EDlT'MAPRECORD){

IF(resultCode==RESULTGOTOMAP).f

MapControllermc=myMapView.getController0;

IF(Thesatelliteofdesignatedmaprecordis1)

sat=true;

ELSEsat=false;

ENDIF;

IF(Thetrafficofdesignatedmaprecordis1)

tra=true;

ELSEtra=false;

ENDIF:

IF(myMapView.isSatellite01=sat)

ENDmyMapView.setSatellite(true);

lF:

IF(myMapView.isTraffic01=tra)

ENDIF;myMapView.setTraffic(true);

intlatitude=Thelatitudeofdesignatedmaprecord;

intlongitude=Thelongitudeofdesignatedmaprecord;.45.

veb手机 基于Android平台的手机Web地图服务设计

第4章手机Web地图服务系统设计

GeoPointP=newGeoPoint(1atitude,longitude);

me.animateTo(p);

me.setZoom(TheZOOMLEVELofdesignatedmaprecord);

61阅读提醒您本文地址:

ENDIF;

ENDIF;

另外说明一下,requestCode是用来标识请求对象,刚才在启动Activity的时候使用的是“startActivityForResult(intent,幸)”,这罩的木就是requestCode,可以设置成任何值。(www.61k.com)

4.8系统数据库的设计

Android提供了~些方式来存取数据。一是文件方式:Android可以将文件存储在设备或其他移动媒介上。二是数据库方式:Android有SQLite数据库的API,应用程序可以创建和使用SQLite数据库。三是网络方式:Android还支持使用网络存取数据的方式。除此以外,Android还可以向其他应用程序请求并获得数据。

本系统准备采用SQLite数据库的方式来存取数据,它只有表格一种数据结构。在这里只需创建一个能保存地图的经纬度及相关信息的数据库即可,当然以后可以根据需求与功能的完善和增加,可以对数据库进行升级。数据库取名为maprecord,字段如表2.2所示。

表2.2数据库字段

Tab.2.2Databasefield

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

5.1系统主界面的实现

本系统丌始执行后,便直接进入了系统的主界面,为了系统以后能扩展其他服务,故特意将主界面设置成一般界面,如图5.1所示。[www.61k.com)

图51系统主界面

Fig5lSystemmainintefface

扩展其他服务是通过菜单按钮来实现的,现在柬按下<MENU>按钮,就会在画面上出现2个Menu选项,如图5.2所示。

图52菜单选项

Fig5.2Menuoption

点击<地图服务>选项,画面就跳转到地图服务系统的界面,如图53所示。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图5.3地图服务界面

Fig5.3M蚶serviceinterface

另外可以选择<退出>选项来结束程序,退出MyAndroidSctvicc。[www.61k.com]

主界面的总体实现过程如下:

(1)首先创建布局。打开Layout里的main.xml,在这个布局里需要添加五个Button和四个TcxtVicws的布局。整体布局采用的垂直型方式,里面嵌套一个水平型方式的前j局和相对型布局方式。

(2)在创建好布局后,就开始对这个活动进行编码。一开始,记得导入USeS-libtmy:由于1.0版本的修改,使得maps包不再是默认的了,使用的时候需要在manifest中的application节点下加入<uses-libraryandroid:name=”coin.gcoglc.andmM.maps”膳。否则,将会抛出个异常错误。

O)在程序一开始时,框架就反向调用onCreatc方法,也调用onCreateOptionsMenu0。调用Oncreate0方法时,此函数首先正向调用父类别Activity的onCreateO方法,先执行父类别的预设行为,然后才执行自己(MyAndtoidServicc)的onCl_eatco方法的附加行为。继续执行到setContentView限.1ayout.main)指令时.就去读取main.xml的内容,依据它来进行屏幕画面的布局,并显示出来。另外还添加个Text文本,对它实行TextView伍=(TextView)findViewByld(R.id.text)和tx.setBackgroundResourc£(R.drawable.fly_h520)操作,让它显示WelcometoUSeMyAndioidService和读取,fcs/drawable/中的背景图片资源。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

(4)其中在调用onCreateOptionsMenu0方法时,执行到指令:Menu.add(0,MapService_lD,0,R.string.menu—mapservice)就去读l较/res/values/stfings.xml文档的内容,取得字串“地图服务”,显示于画面的选单上。(www.61k.com)

(5)当选取(地图服务>选项时,框架会反向调用onOptionsltemSelectcd0JY法。(6)在这里,框架是主角,MyAndroidServiee类只是被调用的配角,复杂的控制逻辑都为框架所完成,所以程序代码变得简单清晰很多。

52地图服务系统界面的实现

现在进入到了地图服务系统的界面,如果按下<MENU>按钮,就在画面上出现多个Menu选项,这些选项就是这个系统所提供的服务。当Menu选项太多时,系统会自动显示5个Menu选项,其余的放在‘MoK>选项里,如图5.4和5.5所示。

图54服务进项

Fig5.4Serviceoption

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图55(More>里的服务选项

刊L55Serviceoptioninthe<mOm>option

接下来,介绍各个功能的具体实现

53浏览大连功能的实现

浏览大连模块的功能用来说明如何设定经纬度,并在地图的特定位置贴殊图标或图案,例如下图就以图标形式示出三个地点:大连海事大学、老虎j发现王国,并附加介绍文字。(www.61k.com)在MapService(.愀务)界面下按<MENU>,摹洲览大连>选项,便出现大连地图的界面,并赋以红色图标,如图5.6所示。

图5.6定点浏览大连

Fig5.6Thefixedpo缸Iglan∞savefd“姐

61阅读提醒您本文地址:

veb手机 基于Android平台的手机Web地图服务设计

基丁AIIdrold平台的手机Web地图服务垃计

当点击按键S,地图查看模式会转换为卫星图模式。[www.61k.com]如果用鼠标单击界面或者点击键盘z将会出现对地图进行缩放的按钮,此时,手机用户可以根据自己的需要对地图进行缩放查看。过一会儿,此按钮会自动隐藏。如图57所示:

,黠;。啬勰慧篮骠。

想要把地图重新转换为原先的模式,可以再次点击键盘s即可。现在来点击这三个不同的红标记,它会给出不同的文字提示,告诉有关这个地方的一些信息,如图5.8、5.9、5.10所示。

剀58显示大连海事大学信息

F镕5.8Showthedalianmaritimeuniversityinformation

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图59显示老虎滩信息

Fig.5.9Showthetierbeachinfomlation

图510显示发现王国信息

Fig510Showthediscoverskingdominformation

另外还可以随意移动地图,例如可用鼠标将地图往上推,地图就往上移了。(www.61k.com)如果想退出当前界面,重新回到Mapscrvice的界面,用此界面的菜单按钮,选择<退出>选项即可。

浏览大连模块的总体实现过程:

(1)当启动浏览大连这个活动,一开始,框架就反向调用Dalian的onCrcatc方法,就产生一个MapVicw,代表dalian.xml所定义的MapView,代码如下:

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

(2)接着就是取得mapView背后的MapController,把所给定的经纬度设置为地图的中心,另外设定放大比例尺度。[www.61k.com)代码如下:

map.getController0.setCenter(getPoint(38.97152644869859,121.67284369468477));

map.getController0.setZoom(10);

(3)然后就是提供3个覆盖点坐标,把图标覆盖在地图的这些坐标点上。代码如下:

Drawablemarker=getResources0.getDrawable(R.drawable.marker);

marker.setBounds(0,0,marker.getIntrinsicWidth0,marker.getIntrinsicHeight0);

map.getOverlays0.add(newSitesOverlay(marker));、

(4)最后就是当点击不同的红标记时,使之出现不同的文字提示,告诉这个地方的一些信息。部分代码如下:

5.4自我定位功能的实现

自我定位模块的功能就是把手机用户自己所在地方的地图和经纬度在界面中显示出来。在MapService界面下按<MENU>,再按<自我定位>选项,画面就跳转到查询自我定位的界面,如图5.11所示。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图51l自我定位初始界面

Fig.511Self-locationinillalinterface

由于是在模拟器上运行程序,所以经纬度的接收也只能通过ecl晒e中的DDMS模拟茇送一对数据,如图5.12所示。[www.61k.com)

图512单个经纬度发送界面

F培s.12Singlel砸mdeandlongitudetransuze,sioninteract

当模拟器接收到数据后,用户在屏幕中单击<Vv'hcrcAmI>按钮,在界面中将显示出手机用户自己当时所在地的地图和经纬度,并以一个蓝圆点提示用户当前的确切位置,如图5.13所示。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地幽服务设计

斟513显示用户位置

R&5.13User】o叫i0Ⅱ

另外用户还可以通过四角的按钮来放大、缩小地图,和把地图以不同的视图模式:卫星图,街道图进行查看。[www.61k.com]同样当按下此界面的菜单按钮,选择退出,就会退出当前界面,重新回到MapService的界面。

自我定位模块的总体实现过程:

(1)首先要调整权限级别。为了使Android基于位置的API起作用,必须调整权限级别。使用Android基于位置的API本身不需要任何特定的权限,但使用Android基于位置的API来获取全球定位系统中的位置信息则需要特定的权限。可以通过手动编辑AndroidManifesl.xml来给Activity赋予权限值,需要将下列语句添加到AndroidManifeSt.xml:

(2)调整好权限级别后,就开始创建布局。打开Layout里的whereami.xml,在这个布局里需要添加五个Button和四个TextViews的布局。整体布局采用的垂直型方式,里面嵌套一个水平型方式的布局和相对型布局方式。

在水平型方式里放置的是一个按钮和四个TcxtViews,其中一个按钮将用来调用WhereAmI这个活动来获耿全球定位系统的信息,并把这些信息显示在TextViews里。把此按钮布局在屏幕顶端的左边,里面需要定义

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

【android:layout_width】、【android:kyout_heightl和【android:text】属性。[www.61k.com]其中

【android:text]属性则用来显示文字“WhereAmI”。

61阅读提醒您本文地址:

接着,是要设立四个TextViews。安排它们的布局,使之出现两个TextViews在另外两个TextViews的上面,这就要使用其中两个作为另外两个的标签。要做到这一点,就需要在按钮的右边再定义一个垂直型的布局,里面实现两个LinearLayouts。其中一个水平的LinearLayout去设置两个TextViews。这两个TextViews作为从GPS收集的纬度的标签和数值。接着,再加个水平的LinearLayout去设置余下的那两个TextViews,用来从GPS收集的经度的标签和数值。这就是为这个特定的活动布置的~个嵌套布局。

而对地图和其余四个按钮采用的是相对型方式。其中两个按钮将用来实现GoogleMapView的放大和缩小的功能。把按钮安置在MapView的左上角和左下角,需要对标准按钮布局做一个变动,默认情况下,RelativeLayout增加按钮在视图上缘排列。所以,在布局里,要使用android:layout_alignBottom这个属性和分配它一个MapView的id。另外两个按钮将用来实现GoogleMapView的模式类型转换的功能。把按钮安置在MapView的右上角和右下角,这个跟安置左上角和左下角按钮有部分类似,也需要用RelativeLayout来对增加按钮在视图进行排列。不过有区别的是,在布局里,对安置在右上角的按钮使用android:layout_alignRight这个属性并分配它一个MapView的id。另外对安置在右下角的按钮除使用android:layout_alignRight这个属性和分配它一个MapView的id外,还需要使用android:layout这个属性。这样会将按钮相互排列好。

(3)在创建..a好lig布nB局ot后tom,就开始对这个活动进行编码。首先,设立一个MapView并且从where—am—i.xml给它分配布局。MapViewmyMap=(MapView)findViewByld(R.id.myMap);接着,可以创建一个MapController,用于移动Google地图的焦点中心到定义的点,使用从MapView的getController0方法在特定地图上建立控制器。其次,设立一个点并且赋予它一个精度值和纬度值。最后就是使用控制器将地图移至所设定的位置,设定它的缩放级别为3。

(4)接下来就是从GPS获得用户当前的位置信息,并当用户激发活动后,把获得的精度值和纬度值发送给两个相对应的TextViews,还有就是显示用户所在的

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

地图,并以OverLay的形式给用户指示出来。[www.61k.com]另外两个做为标签的TextViews无须进行编码,因为不会发布任何东西给它们。

首先创建一个LocationManager,用来管理坐标值。这个实例化的重要部分是必须通过使用LOCATION_SERVICE来给LocationManager传送个内容:

LocationManagerlm2

(LocationManager)getSystemService(Context.LOCATION_SERVICE)

接着创建个MyLocationListener0,用来监听位置的改变,它是继承于LocationListener,当位置发生改变时,它会监听到,但只在后台作用,同时用myLocationOverlay.disableMyLocation0使其不起作用,只有当用户点击按钮时,才能将其重新恢复功能。

最后对<WhereAmI>按钮进行编码,当用户点击按钮,将从MyLocationListener0获取位置信息,通过latText.setText(1atPoint.toStrin90)和lngText.setText(1ngPoint.toStrin90)的形式发送给对应的TextViews,然后把地图转换到用户当前的位置,为了使地图更加容易识别,把它的缩放级别设定为lO。同时使用myLocationOverlay.enableMyLocation0使其恢复作用,在地图上指示用户当Ij{『所在位置。

(5)对布置在地图四角的按钮进行编码,创建控制放大、缩小、卫星图和街道图的函数。其中最大放大级别为21,最低为1。因此,在函数里,对地图进行调整前将会判断当前的级别,以确保不会遇到任何问题。

5.5记录行走踪迹功能的实现

记录行驶踪迹的功能就是把用户经过的地方以路线图的形式给画出来,给用户回顾一天的行程提供方便。在MapService界面下按<MENU>,再按<行走踪迹>选项,画面就跳转到此功能的初始界面。然后按下此界面的<MENU>,就会出现如图5.14所示的功能选项。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图5.14记录行驶踪迹界面的菜单选项

Fig.5.14Menuoptionofrecord崦drivingtraces’interface

此功能中经纬度的接收跟自我定位功能一样也只能通过eclipse中的DDMS模拟发送数据.由于这个功能是用来记录形式踪迹,需要使用大量的经纬度数据,所以要改成使用KML来发送一批成对的经纬度数据,如图5.15所示。(www.61k.com]羲唑晒蕊醛:二二

_‘矾d“舒I叵固

淼~黠1肌.^|『lI__

h-?bl?—髭瑚侮弭.i程袭mm篱麓瓣瓣甄玎盯钉托

打群竹打盯扑打杆l薹甜啪蛐¨叫一同同同圃瓣瓣瓣登

图5.15麓送成批经纬度

Fig.5.15TransmitbuIhoflatitudeandlongitude

模拟器在动态接收数据后,并根据接收到的数据,把所对应的点给描绘出来。为

veb手机 基于Android平台的手机Web地图服务设计

61阅读提醒您本文地址:

基于Android平台的手机Web地幽服务设计

便于观看,特地加了个提示框,如图5.16所示。(www.61k.com)

图516记录行走踪迹

Fig516Recordwalkingtraces

由于此功能仅是为了记录用户的踪迹,所以界面就相对简单,只给加了实现街道和卫星视图模式转换的按钮。当然,也可以给这个界面添加缩放等其他功能。同样当按下此界面的菜单按钮,选择退出,就会退出当前界面,重新回到MapService的界面。

行走踪迹模块的总体实现过程;

(1)首先是创建布局。打开Layout里的drivingtracesxml,在这个布局里需要添加两个Button。整体布局采用的垂直型方式,里面嵌套一个相对型布局方式。

其中采用相对型方式的是两个按钮。这两个按钮将用来实现GoogleMapView的视图模式类型转换的功能。预计把按钮安置在MapView的左上角和右上角,需要对标准按钮布局做一个变动,采用RelativeLayout来对增加按钮在视图进行排列。在布局里,对安置在右上角的按钮使用android:layout_alignRight这个属性并分配它一个MapView的jd。这样会将按钮相互排列好。

(2)在创建好布局后,就开始对这个活动进行编码。这次不采用点击按钮的方式来激发活动.而换用点击菜单的方式来引起活动。

首先,设立一个MapView并且从mainxral给它分配布局:myMap=fMapView)findViewByld(R.id.mapview)和setContentView(R.1ayoutdrivingtraces);接着使用mc=mapView.getController0来取得在当前地图上的移动控制权。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

对菜单的选项<启动>进行编码,一点击就会调用pcrfo皿Re∞rdO方法,在此函数中创建位置管理和位置监听(这个跟上面类似),接着进行ovcrlav,这个成坐标点,然后保存到一个数组里。[www.61k.com)接着调用drawO榭J"数组里的坐标点依次进行描绘。Overlay是继承于ItemlzedOveslay<OverlayItera>的,它把接收到得经纬度数据转换

5.6地点查找功能的实现

地点查找模块的功能就是把要查询的地方的地图在界面中显示出来。在MapService界面下按<MENU>,再按<地点查找>选项,画面就跳转到查询的界面,如图5.17所示。

图517地点查找界面

Fig.5.17Locationque叮interface

接着就可以在文本框中输入要查询地点的拼音,比如NewYork,按下<地点查找>按钮.将在界面中显示出要查询地的地图,并且以黑色图案的形式提示这个地方,如图5.18所示。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手帆Web地图服务设计

凹518地点膏找结果

Fig518Resultofloeationquery

这时可以根据需要通过菜单按钮,来选择(放大>或(缩小)选项进行更加详细的查看。[www.61k.com)圈5.19就是对图518放大3级后看到的效果。

蕊519放人地蚓

Fig519Enlargemap

另外,当想看看这个地方的交通情况、街道情况或是卫星图情况,也可以通过菜单按钮,来选择<交通图>、(街道图>或(卫星图>选项进行查看。图5.20是对图519进行街道模式查看的结果。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统宴现

幽520街道幽

魂.5.20SVectmap

地点查找模块的总体实现过程:

(1)首先是创建布局。(www.61k.com]打开LayOUt里的scarchaddrcss.xml,在这个布局里需要添加一个TcxtVJcw、一个EditTcxt和一个Button。整体布局采用的是垂直型方式,由于此布局仅用来作为输入查询地点的界面,没有其他用途,所以非常简单。

(2)在创建好布局后.就开始对这个活动进行编码。选取(地点查找>选项时,框架方向调用FindLocation0方法:

执行到startActiviytForResultO时,就启动了SearchAddress类了。并立即从地图服务的界面变换到地点查询所支持的画面布局了。

(3)接着就是对地点查询界面中的按钮进行0Ilaid池”ncfo监听,当使用者按下id值为id/button的按钮后,将会引发下列活动:

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

当执行到setResult0指令时,就会把

((EditText)findViewByld(R.id.searchText)).getText0.toStrin90的值也就是在文本框里输入的内容回传给MapService类。(www.61k.com)finish0方法就结束SearchAddress,返回到MapService了。

(4)返回到MapService之后,框架又反向调用MapService类的onActivityResult0方法,其中的参数data里,就含有刚才所回传的那个文本框里的值。创建一个新线程,显示出一个对话盒ProgressDialog,提示用户正在进行查询,另外调用startSearch0函数。

(5)在startSearch0方法中创建一个线程,在这个线程中调用getFromLocationName0方法,参数包括刚才回传过来的文本框内容。另外还需要创建个显示地址结果的权柄,此权柄的工作是对经过getFromLocationName0方法处理后的信息进行处理,如地点经纬度的获得及其显示,放大倍数的设置,显示地图模式的设置,另外对地图加载了个Overlay,这个是来源于SitesOverlay.java。

61阅读提醒您本文地址:

(6)SitesOverlay.java调用了draw0等其他方法用来给地图显示标记。

5.7创建地图记录功能的实现

保存重要地点的经纬度模块的功能就是把认为重要的地方的地图的经纬度保存到数据库里。在查询完一个地方如图5.18所示,想把纽约这个地点的相关信息给保存下来时,就可以按下<MENU>,再按<创建记录>选项,画面就跳转到保存经纬度数据的界面(如图5.21所示),可以给这条记录取个名字,当然最好是写地名,另外还有个说明文本框,可以在里面写些重要的关于此地的相关信息。最后点击保存,就可以保存到数据库里了。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

图521刨建记录

Fig.5.21Createrecord

创建记录模块的总体实现过程:

f11首先是创建布局。[www.61k.com)打开Layout里的maprecordxml,在这个布局里需要添加四个TextView、四个EditText和一个Button。整体布局采_I{j的是垂直型方式,里面嵌套一个TableLayout方式的布局。

在TableLayout布局里,安排三个TableRow,在每个TableRow里放置一个TextView、一个EditText,它就会自动把这个布局元素以一前一后的方式排列好。这样就设置好了,Name、Lat、Lon这三个行的布局。

接着去设置Description所对应的TextView和EditText及最后的Save按钮。(2)在创建好布局后,接着去创建个数据库用来存储信息。操作数据库的最佳实践是创建~个辅助类,由它封装所有对数据库的复杂访问,对于调用代码而言它是透明的,因此创建了一个DbmapHelper的辅助类,由它来创建、打开、关闭和使用SQLite数据库。

在DbmapHelper类中,首先扩展了SQLiteOpenHelper类,它是一个Andloid辅助类,主要用于数据库创建和版本管理。通过onCreate0,Y法创建一个新的数据库,onUpgradeO:f法用于升级数据库,这还可以通过检查DATABASE_VERSION常量定义的值来实现,对于onUpgradeO方法而占,只不过是简单地删除表r然后再创建表而已。接着就是定义打开和关闭数据库以及增加/编辑/删除/检索表中行的方法。在

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

Android中是使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,在使用ContentValues对象存储键/值时,它的putO方法允许插入不同数据类型的键值。[www.61k.com)

(3)在创建完辅助类后,在MapService这个类中创建个intent,获取当前地图中心的经纬度、地图的缩放级别、卫星图和街道图的布尔值,然后启动这个intent,调用CreateRecord这个类。

一开始,框架反向调用onCreate0方法,执行到代码:

如果maprecord数据库尚未存在,就生成一个新的数据库。如果maprecord已经存在了,就打开这个已经存在的数据库。然后,加载maprecord的界面,在经度和纬度的地址栏罩将自动填充刚才得到的地图中心的经纬度,并设置为不可修改。

对按钮Save进行监听:

当按钮被激发后,向MapService类传回result的信息,MapService类依据一定的算法进行判断后,去执行相应的代码。从result中获得数据,再进行判断:

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

这样就成功的把记录插入到maprecord数据库中

5.8记录列表及相关功能的实现

这个模块的功能就是对保存到数据库里的记录进行查看、编辑和删除.还有就是去浏览记录中地图。[www.61k.com)在把一些地点的相关地图信息保存下来后,想去看看那些信息时,就可以按下<MENU>,再按(记录列表>进项,画面就跳转到记录列表的界面。它是从SOLite数据库查询出记录,并以ListView的形式显示,如图522所示。

图5.92记录列表

Fig.522P.啪rdlisls

当看到所保存的所有记录后,想对记录进行查看和编辑,就可以单击记录条。它所显示的界面是跟当时创建记录的画面布局是一样的.这时可以对记录进行编辑或者查看,看到的画面只是提供对、记录的名称和说明进行编辑,经纬度设置为不可编辑。现在单击“h蛆gzhou”这条记录,看到的界面如图5.23所示。

veb手机 基于Android平台的手机Web地图服务设计

基于AJadmid平台的手机wcb地图服务设计

图523查看或编辑记录

R&523Vieworeditrecord

如果编辑了信息,最后要按下<Save>按钮,记录信息就会被保存了下来。[www.61k.com]这时数据库就马上进行了更新,界面重新回到记录列表,并以最新的资料显示出来。当然如果仅仅是查看记录信息,查看完后可以通过菜单按钮的t退出,选项进行退出,重新返回到记录列表界面。

在|己录列表界面,先选定记录条,再按下<MENu>就会出现4个Menu选项,如图524所示。

图524记录列表菜单

Fig524Recordlistsmentl

如果选择第一个刊jtMapRecord>5.量项,画面就跳转到对选定记录进行编辑

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

的界面,这跟刚才点击记录条进行编辑是同样的功能,如图5.23所示。[www.61k.com]

现在选定“Beijing'’这个记录,然后选择<DclMapRecord>J撅,就会删除这个选定的记录,并更新数据库.把数据库中的记录重新显示出来,如图5.25所示。

61阅读提醒您本文地址:

图525删除记录后的列表

Fig525Listofdeletedrecold

现在选定“hangzhou”这个记录,然后选择<GotoMapRecord>选项,就会显示出选定记录中所保存的地点的地图,如图5.26所示。

圈526删除记录后的列表

Fig.5.26Listofdeletedt-.cord

记录列表模块的总体实现过程;(1)首先是创建布局。打开Layout里的maplist.xml,在这个布局里需要舔加

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

的布局元素有一个ListView和一个TextViews。[www.61k.com)整体布局采用的垂直型方式,此布局很简单,如果数据库里有记录的话,界面就把记录以ListView即列表的形式呈现给用户;如果数据库里没有记录的话,界面就会以TextView的形式显示“NoNotes”告知用户目前数据库里没有记录。

(2)在创建好布局后,就开始对这个活动进行编码。一开始,框架反向调用onCreate0方法,执行到如下代码:

如果maprecord数据库尚未存在,就生成一个新的数据库。如果maprecord已经存在了,就打开这个已经存在的数据库,同时对数据库进行查询,显示所有记录的标题。

(3)当在界面中点击记录条,就会创建个Intent,并把记录所在数据库的lD存到这个Intent中,然后启动这个Intent。接着就去调用CreateRecord这个类,这时会进行显示这个类对应的布局,然后就从Intent中读取数据库ID,获得后再进行判断。

编辑的界面显示出来后,修改相关的数据,然后数据会保存到数据库里。(4)当选取<Menu>选项时,框架会反向调用onOptionsltemSelected0数。(5)当选取<EditMapRecord>选项时,这里的操作跟第三步是差不多的,区别就是获取数据库ID的方式不同,第三步的在点击记录条时,自动获取记录对应的数据库ID;而这里得需要用getListView0.getSelectedItemldO的方式来获取ID。

(6)当你选取<DelMapRecord>选项时,就会执行如下代码:

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

获取记录1D值,在数据库中删除此记录.接着更新数据库。[www.61k.com]这里的deleteTitle0方法是在创建DbmapHelper的辅助类中已经定义好了的。

(7)当你选取<Ga【oMapRecord)选项时,就会执行如下代码:

先把当前记录的ID赋值于MapService中定义的一个游标变量,同时设置返回值RESULT_GOTO_MAP,MapService类再根据算法执行相应的指令:从数据库获取经纬度、缩放级别、卫星图和街道图的布尔值,然后把这些数据所代表的地图显示出来。

59查看查询地周边地区的天气情况功能的实现

查看查询地周边地区的天气情况模块的功能就是把要查询地周边地区的天气情况在界面中显示出来。在查询完一个地方(如图5.18所示),想知道那个地方和周边地区的天气情况时,町以点击菜单按钮,在界面中显示出对当前地区所能收集到得天气情况,并以overlay的形式显示给用户,如图5.27所示。

图527显示图标

Fig527Showioaa

接着可以点击这些图标,这时就会看到那些地方的天气情况,如图528所示。

veb手机 基于Android平台的手机Web地图服务设计

基于And—d平台的手机Web地图服务设计

幽528天气信息

Fi£.528Wcatherinformation

然后也可以通过点击cMo∞Detail>按钮进行详细的查看如图5.29所示,当然也可以点击<Caacel>按钮来结束信息查看。(www.61k.com]

图529天气详细信息

Fig529Weath盯dcnns

查看天气模块的总体实现过程:

(1)首先是创建布局。这里设计两个布局,先设计第一个,用来显示简单天气信息的。打开Layout里的we抽eLxml,在这个布局里需要添加五个Tcxtview和两个Button。整体布局采用的是相对型布局方式,里面再嵌套一个相对型布局方式。其中对那两个按钮采用嵌套的相对型布局方式,这里要特别说明的是:在每个

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

TextView里要添加如下的属性:android:gravity=”left”(这个属性定义了这个TextView在屏幕的左边)、android:layoutmarginBottom=”引’(这个属性定义了这个TextView与其他TextView的间距)、android:layoutbelow=”事t’(这个属性定义了这个TextView在哪个TextView的下面,用于安排每个TextView显示的顺序)。(www.61k.com)

设计完第一个,再来设计第二个,这个布局是用来显示详细的天气信息。同上,打开Layout里的weatherdetail.xml,在这个布局里需要添加十三个TextView。整体布局采用的是相对型方式,这里的布局方式同上。

(2)在创建好布局后,就开始对这个活动进行编码。选取<查看天气>选项时,先获得当前地图中心的经纬度,然后调用getWeatherData(finalGeoPointpoin0方法,在这个方法里,会显示出一个对话盒ProgressDialog,提示用户正在进行获取天气数据。同时创建新的线程,此线程中先把经纬度转化为字符型。对WeatherFetcher类进行实例化,这个类包括3个参数:经度、纬度和10,它们都是字符型。在这个WeatherFectcher这个类中将会以上面提到的经纬度为中心10海里为半径向后台服务器的天气资源库进行查询,把在这个范围内的经纬度值存放到一个数组列表里。然后对每个经纬度调用这个类中的getData0方法,在这个方法中再对WeatherHandler类进行实例化,用来获取相关的天气数据,并把这些数据存放到一个列表数组里。这样就能把程序所请求的当前点为中心半径10海里范围内的天气信息进行了一一的获取。然后以Overlay的形式,把存放在数组列表里的点一一的进行图标覆盖。这个WeatherltemizedOverlay类是继承于ItemizedOverlay,用来加载图标,其中的重要方法是onTap()。它里面设置了个布局,是用来当用户点击图标时,把天气信息以这个布局形式呈现给用户。在这个布局里安排了2个按钮,其中一个是用来查看更加详细的天气信息,另外一个是结束信息查看回到界面。当点击<MoreDetail>按钮时,就会创建个Intent,并把天气信息的存到这个Intent中,然后启动这个Intent。接着就去调用WeatherDetailActivity这个类,这时会进行显示这个类对应的布局,然后就从Intent中读取所有天气信息,并把它们都显示出来。

61阅读提醒您本文地址:

5.10手机定位功能的实现手机定位功能就是当手机丢了或者被偷,可以使用别人的手机,接收手机所

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

处位置的GPS坐标,从而找到手机。(www.61k.com]本应用需要一个活动让用户输入密码,还需要一个意图过滤嚣来过滤接收到的短信。现在来体验一下这个功能.在MapService界面下按<MENU>,再按<手机定位>选项.就进入密码设置界面,如图5.30所示。

图530密码设置界面

Fig530Passwordsettin95?interface

这个界面里有一个简单的对话框用柬帮助用户输入密码.一旦密码被讵确输入,程序将把密码的MD5置入应用包的SharedPreferences中,并给用户一个提示,这里设置的密码是666666,如图5.31所示。

图531密码设置成功

Fig.531Passwo州seluosuccess,如l在密码设置成功后,接下来就是发送短信了。由于是在模拟器上运行程序

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

所以只能通过eclipse中的DDMS模拟发送一条短信给模拟器。(www.61k.com)另外要注意发送短信的内容必须是这种格式SMSLOCATE:<password>,而这里可以吧<password>换成666666,如图5.32所示。

f雷目Hd“吖c伸trd嚣。、尝巴

l一一,w“m“震垂运正二二二二二]Telephonyk№t皇

:ovoiee

。o%

_esl蚌●捌g优^n帖66∞

图532发送短信

Fig.532Sendmessage

当模拟器接收到短信后,会对接收到的短信内容进行检查,当其中的短信内容包含SMSLOCATE:666666,就会启动GPS,获得手机当前的经纬度,然后把这些数据以短信的方式回复给发送者。为便于观看,程序里安排了一个提示。真正应用到手机上时,这个提示将会被去掉的,如图5.33所示。

幽633自动咧复短信Fig.533Aum-replymessage

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

手机定位模块的总体实现过程:

(1)首先要调整权限级别。[www.61k.com]为了使手机能接收短信和检查接收到的所有短信,并且对感兴趣的短信做出响应,最后回复一条包含任何和目前手机位置相关的信息的短信,必须调整权限级别。通过<uses.permission>标签,来给活动赋予取得接收短信和通过GPS设备获得手机坐标信息的权限。于是在AndroidManifest.xml里需要包含下列语句:

为了实现上述目的,还需要建立一个意图接收器,响应类型为“android.provider.Telephony.SMSRECEIVED"的活动。该意图接收器必须在AndroidManifest.xml文件中声明

另外还要指定FinderReceiver作为一个接收器,同时声明意图过滤器,以此来过滤被广播的所有意图。让系统知道对于这类活动,该调用何种接收器。

(2)调整好权限后,接着就是创建布局。打开Layout里的findphone.xml,在这个布局里需要添加的布局元素有:一个Button、两个EditText和三个TextViews。整体布局采用的垂直型方式,其中的两个EditText是作为标签显示信息,两个TextViews是用来帮助用户输入密码,它所完成的任务就是确保输入的密码在6个字符以上并且密码的2次输入必须匹配。另外还有一个TextView用来显示提示密码修改信息。Layout中所涉及到的字符串都是在strings.xml中定义,以便提供更好的国际化支持。

(3)在创建好布局后,就开始对这个活动进行编码。在onCreate0方法中,对将要在layout中使用的各种视图进行初始化,然后,去创建ok按钮的OnClickListener对象。当ok按钮被点击,onClick0方法将会被调用。在onClick0方法中,要确保密码的最少长度要求被满足,而且2个输入框中输入的密码字串一致。如果所有的条件满足,将创建一个SharedPreferences.Editor对象,通过该

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

对象,可以编辑该应用的sharedpreferences。[www.61k.com)之所以把此类preferences称为“共享”,因为它是一个应用程序范围内的参数,也是一个存储少量持久数据的好地方,包中的其他类也可以访问Preferences。之所以存储密码的MD5,是因为即使密码被读取,它也不会泄露密码的明文,除非这密码本身非常弱。如果想把数据的可见性局限在调用的活动对象内,可以使用Activity.getPreferences(int),这是Activity级别的数据存储方式。一旦有了这个Editor的对象,写preferences就很简单了。只需要调用其中的putXO方法添加key/value对,然后调用commit0方法保存结果就行了。

接着调用方法getMd5Hash(String),它返回字符串形式的MD5,然后把它存储在preferences里面。使用android.security.MessageDigest对象来表达想要使用的算法。digest()方法的输入参数为字符串所对应的字节数组,输出参数也是一个字节数组。输出的字节数组可以转化成一个BigInteger对象,进而利用该对象的toString(16)方法转变成16进制的字符串。因为把字节数组转化成一个BigInteger的时候,前端的0会被删掉,所以要在whileloop里给MD5字符串前面补上足够的0,使它的长度达到32个字符。

61阅读提醒您本文地址:

现在,用户可以在应用的preferences中保存输入的密码了,接下来,将要检查手机接收到的所有短信,并且对感兴趣的短信做出响应。这种短信的格式如下:

SMSLOCATE:<password>

因此,如果某条短信以“SMSLOCATE:”开头,并且紧跟‘:’字符后面的密码的MD5和先前存储的匹配,将回复一条包含任何和目前手机位置相关的信息的短信。

现在需要的就是该短消息的回复地址的字符串和手机目前位置的字符串。要获得位置信息,需要创建一个新的LocationManager,然后简单的调用getLastKnowLocation(”gps”1.toStrin90就行了。它将获得GPS设备提供的最近位置信息。接着我们用一个SmsManager对象发送这条短消息。同时也会显示一个notification(Toast)来提示短消息已经发送成功。

5.11路线查询功能的实现

路线查找功能就是当想知道一个地方到另外一个地方的交通路线时,可以用此功能进行查找。在MapService界面下按<MENU>,再按<路线查询>选项,就进

veb手机 基于Android平台的手机Web地图服务设计

基rAndroid平台的手机Web地幽服务设计

入功能界面,如图5.34所示

图534路线卉询界面

F噜534Linequeryinterface

现在来查找老虎滩到大连市中心,在上面的两个文本框中输入起点和终点按下<Route>按钮,即可得到查询结果,如图535所示。[www.61k.com]

图535查询结果

Fig,5.35Resultofquerying

路线查询模块的总体实现过程:

(1)首先是创建布局。打丌Layout里的routexml,在这个靠局里需要添加的布局元素有:一个Button和二个EditText。整体布局采用的垂直型方式,里面嵌套一个水平型方式的布局和相对型布局方式。

veb手机 基于Android平台的手机Web地图服务设计

第5章手机Web地图服务系统实现

在水平型方式罩放置的是两个EditText和一个按钮,其中这两个文本框是用来输入要查找路线的起点和终点,安排它们的布局,使之出现一个EditText在另外一个editText的上面,要做到这一点,只需再定义一个垂直型的布局即可。(www.61k.com)

接着就是设置按钮,这个按钮将用来调用Route这个活动来获取路线信息,里面需要定义[android:layout_width]、【android:layout_height]和[android:text]属性。其中【android:text]属性则用来显示文字“Route”。

(2)在创建好布局后,就开始对这个活动进行编码。对按钮进行OnClickListener0监听,当使用者按下id值为id/button的按钮后,就去读取文本框里输入的内容。接着就去调用startFindRoute0方法来处理读取的内容,同时会调用一个ProgressDialog:pd=ProgressDialog.show(Route.this,”Working..”,”FindingRoute”,true,false)给用户一个提示。

(3)startFindRoute0方法处理完后,就加载Overlay,显示出交通路线和一些图标来。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

结论

本文首先通过阅读大量的资料文献,对目前应用的Symbian、WindowsMobile、Mac0SX和RIM等平台的现状进行了分析与比较。(www.61k.com]进而分析了Android平台的系统架构和组件模型,接着解析了Android中的重要API和应用构成,以及Intent和生命周期的机制。最后通过在该平台上设计和开发了一个手机Web地图服务,以此来验证了该平台的可用性。系统包括自我定位、地图模式、路线查询、地点查找、浏览大连、手机定位、行走踪迹、创建记录、记录列表和查看天气十一大模块。自我定位模块可以把手机用户所在地的地图和经纬度在界面中显示出来。行驶踪迹模块可以把用户经过的地方以路线图的形式给画出来。地点查找模块可以把用户要查询的地方准确的在地图中标注出来。查看天气模块可以显示查看地及周边地区的天气情况。创建记录模块可以把你认为重要地方的地图经纬度及相关信息保存到数据库里。记录列表模块可以查看、修改、删除已保存的记录及浏览记录中地图。

本系统晃面友好、操作便捷;系统经过测试,可以稳定运行;系统基本实现了上述功能,可以满足手机用户基本的地图服务需求。但是由于时间紧迫以及本人能力有限,本系统在界面设计方面还不是很完美,以及在个别功能上还有不完善的地方。比如在查找路线后,对每个路段具体信息的提示:对行走踪迹的记录还没有好的办法给保存到数据库里等。除本文所列出的不足之处以外,应该还有不够人性化的地方,恳请各位老师批评指正。

为使系统今后更加人性化,能更好给用户带来优质的服务体验,下一版本的系统将从以下几个方面进行功能扩展:

1)对查找后的交通路线的每个路段进行信息提示。

2)把用户的行走踪迹进行保存到数据库里,可供用户分享给其他朋友,或是

上传成为路线图的资源库里。此项功能能更好的为第三项功能的实现提供资源保障。

3)加入步行路线图的查找,再结合自我定位功能,可以让用户自动矫正行走方向和路线,成为一种自助导航系统。

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计

参考文献

[1]董振宁.无线移动位置服务平台的构架与应用.地理信息世界,2003(3):20-25

[2]郑颖.常用移动定位技术的研究和应用.通信技术,2001(8):79-81.

[3]邸烁.Android揭秘和未来发展趋势.http://publish.itpub.net/zt/android/,2008.[4]李长江,安筱鹏.开放手机联盟:重塑移动互联网产业链.中国电子报,2008.

61阅读提醒您本文地址:

[5]李惠,丁革建.智能手机操作系统概述.电脑与电信,2009,(03):67—68.

[6]方银旺,赵向道,李欣.Symbian操作系统及其应用程序开发.计算机工程,2003(1):275-277.

[7]HaithamAL—Hajri,KrishnunSansurooah.Iphone

ProceedingsofForensicsMethodologyandTools.the6thAustralianDigitalForensicsConference,2008:4—18.[8]RobertKao,DanteSarigumba,Marie—ClaudeKao,eta1.BlackBerryPearlUserGuide.Wiley,2007.

[9]http://v.唧.apkcn.com/android一80882—1-1.html

[10]李观华,范辉.J2ME在移动通信程序中的应用.计算机应用,2003,23(3):124—126.

[11]廖永刚,余冬梅,张秋余.J2ME架构与安全机制的研究.计算机工程与设计,2006,27(4):575—577.

[12]ShiY,CaseyK,ErtlMA。[www.61k.com]Virtualmaehineshowdown:Stackversusregisters.ACMTrans.Archit.CodeOptim.2008,4(4):l一36.

[13]范凯.Java技术.程序员,2007,(12).

[14]http://code.google.corm/android/what—is—android.html

[15]马宁.嵌入式移动开发.程序员,2007,(12):14-15.

[16]http://tech.ddvip.com/os/mobile/android/122084331761577.html

[17]http://tech.ddvip.com/os/mobile/android/1237952278112193.html

[18]万玛宁,关永,韩相军.嵌入式数据库典型技术SQLite和BerkeleyDB的研究.微计算机信息,2006:91—93.

[19]张健浪.GoogleAndroid:开放平台攻陷移动互联网.信息产业部电子第五十二研究所,2008,(11):24-26.

[20]http://wⅥnv.10veandroid.com/viewthread.php?tid=168&extra=page%3D1

[21]Benjamin

AvailableSpeckmann.TheAndroidmobileplatform.PDFElectronicBook,2008,from:http:/7删.gogetpapers.com/Papers/Android_Cel1/1.

ElectronicBook.http://androidos.cc/dev/index.php.[22]Android教程,PDF

[23]陈昱,江兰帆.基于GoogleAndroid平台的移动开发研究.福建电.81-

veb手机 基于Android平台的手机Web地图服务设计

参考文献

脑,2008,(11):156—157.

[24]孟岩.Android组件模型评析(上).程序员,2008,(01):49—51.

[25]http://oxen.javaeye.com/blog/142123

[26]EdBurnette.Hello,Android:IntroducingGoogle’SMobileDevelopment

Bookshelf,2008Platform.Pragmatic

[27]差沙.用Android开发手机应用.程序员,2008,(01):56—61.

[28]Sayed

[293JerriY,Hashimi,SatyaKomatineni.ProAndroid.Apress,1edition,2008Ledford,PrasannaAmirthalingam.WebGeek’SGuidetotheAndroidEnabledPhone.Que,2009.

[303ChrisZiegler.T-MobileG1ForDummies.ForDummies,2009.

[31]http://tech.ddvip.com/os/mobile/android/122084378361586.html

[32]http://tech.ddvip.com/os/mobile/android/122084354461581.html

[33]FrankAbleson,CharlieCollins,RobiSen.UnlockingAndroid.ManningPublications,2009.

[34]John

MobileEddy,PatriciaDiGiacomoEddy.GoogleontheGo:UsinganAndroid—PoweredPhone.Que,1stedition,2009

[35]http://oxen.javaeye.com/blog/143701

[36]http://tech.ddvip.com/os/mobile/android/122084370361585.html

[37]ChrisHaseman.AndroidEssentials.PDFElectronicBook,2008.Availablefrom:http://androidos.cc/dev/index.php

[38]RetoMeier.ProfessionalAndroidApplicationDevelopment.Wrox,2008.

Katysovas.Afirstlookat[39]TomasGoogleAndroid.FreeUniversityof

61阅读提醒您本文地址:

Bolzano,InternetTechn0109ies2,2008.

[40]NicolasGramlich.AndroidProgramming.PDFElectronicBook,2008.Availablefrom:http://androidos.cc/dev/index.php

[41]Mark

2008.L.Murphy.TheBusyCoder’SGuidetoAndroidDevelopment.CommonsWare,LLC,

[42]http://oxen.javaeye.com/blog/142125

[43]高焕堂.应用框架原理与程序设计36计.台湾:MIS00设计中心,物泽电脑事业股份有限公司,2008..82.

veb手机 基于Android平台的手机Web地图服务设计

攻读学位期间发表的论文

攻读学位期间发表的论文

[1]XianhuaShu,ZhenjunDesignBasedonDu,RongChen.ResearchonMobileLocationServiceindexed,Accepted).Android.IEEEConfWICOM09,2009(EI

.83.

veb手机 基于Android平台的手机Web地图服务设计

致谢

致谢

在此我要感谢指导过我的老师,是他们让我学习到了更多的知识。(www.61k.com)让我知道应该去学什么。我还要感谢给我帮助的老师,谢谢你们对我的帮助。

首先要感谢我的指导老师杜振军副教授,感谢他一直以来的对我的教导。耐心的给我指点,在他的帮助下我比较顺利的完成这个论文。同时,杜振军老师严谨治学的态度,勤奋、刻苦的敬业精神给我留下了深刻的印象并深受鼓舞。在此,我衷心地向杜振军老师表示感谢,感谢他这些年来对我的指导与帮助。

另外,我要感谢Android论坛上的一些朋友,在我的课题研究中给予了我一些帮助和启发。

感谢我的父母,你们对我学习一如既往的支持,你们无私的付出,你们无微不在的关怀是我前进的最大动力,是我能够顺利完成学业的最大保障。

此外,我还要感谢一直以来陪我走完研究生生活的朋友们,因为有你们,我的研究生生活力过得更加丰富多彩,更加充实。

再一次感谢我的母校大连海事大学,感谢信息工程学院对我的培养,感谢所有帮助过我的老师和同学朋友们!谢谢大家!

veb手机 基于Android平台的手机Web地图服务设计

veb手机 基于Android平台的手机Web地图服务设计

基于Android平台的手机Web地图服务设计作者:

学位授予单位:舒贤华大连海事大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1548258.aspx

61阅读提醒您本文地址:

五 : 轻松架设自己的SMTP服务器

轻松架设自己的SMTP服务器

应用目标:更稳定地发送邮件

实现难度:★★☆☆☆

我们在发送电子邮件的时候,这封E-mail首先来到ISP提供的邮件服务器,再通过它发送出去。(www.61k.com]但如果ISP因为网络出现一些问题,则可能会耽搁邮件的发送,甚至可能会造成邮件丢失。如果用自己的机器做SMTP服务器来发邮件,那肯定不会出现上述情况啦!怎么样,心动了吧?下面咱们就一起来架设一个属于自己的SMTP服务器,让你的E-mail发送更安全。

这里要准备的软件是“逍遥邮”,可以从http://www.mychangshu.com/service/register/mail下载。软件安装很简单,一路回车即可,下面我们就来进行设置。

一、SMTP服务端设置

1. 启动“逍遥邮”软件,它会自动进入“配置向导”窗口(如果你的机器上正在运行Outlook或Foxmail这类的邮件收发软件请先退出)。点击“下一步”按钮,进行DNS服务器配置。在“首选DNS服务器窗口”填上你的DNS服务器的IP地址,如果不知道可以打电话到当地的ISP去查询一下,或者通过当前窗口左侧的“检测”按钮来检测IP地址,并自动填入到地址栏里(见图1)。

smtp服务器 轻松架设自己的SMTP服务器

2. 设置完后点击“下一步”按钮,软件开始检测本机器上的邮件账号,并将检测到的账号显示在列表当中。比如我们将账号的SMTP服务器改为“locahost”,只要在列表中选择要修改的账号并修改之,再单击“下一步”,软件就会帮我们修改好。

(注:如果没有检测到邮件账号,那么您将需要对它进行手动修改)

smtp服务器 轻松架设自己的SMTP服务器

3. 单击“下一步”按钮,打开“中继SMTP服务器列表”窗口,此处是考虑到有时候因为某些特殊的原因,“逍遥”邮不能直接发送邮件给收件人,可以转投信件到其他的SMTP服务器地址里,这样你的信就百分之百的安全了。(www.61k.com]单击“添加”按钮,弹出“SMTP服务器信息”窗口,在主机栏里面填上转投主机的SMTP地址,比如“SMTP.263.net”(以263电子邮局为例)。再选中验证复选框,输入你在263的“用户名”和“密码”,完成后点击“确定”即可。这时在中继SMTP服务器的列表中就会多出一项刚才设置的SMTP服务器。注意要将“启用SMTP服务器列表”选中才能起到真正的中继的作用(如图2)。

smtp服务器 轻松架设自己的SMTP服务器

4. 设置完后点击“下一步”,打开“逍遥邮”的常规设置窗口,这里只有两个选项“Windows启动时自动运行”和“启动时窗口最小化”,你可以根据自己的实际情况进行选择。

5. 单击“下一步”完成全部设置,进入到“逍遥邮”的主窗口。

这样一个SMTP服务器就架设完成了,有了服务器下面就需要对邮件的客户端进行配置了,这样才能起到真正的服务器作用。

二、客户端软件设置

这里以Foxmail为例讲述配置的方法,Outlook Express也可以按这种方法进行类似配置。

1. 启动Foxmail后选中需要更改的邮件账号,点右键选择“属性”。

2. 在弹出的“账户属性”窗口中从左侧的属性列表里找到“邮件服务器”,选中后右侧会有详细的配置信息,找到“发送出邮件服务器SMTP”将里面填上“localost”。点击确定即可。 OK!讲到这你已经拥有了一个属于自己的SMTP服务器了,快用它发封邮件,感觉到什么了吗?对,那就是高速、稳定!

补充:技巧提示,其实想要快速发信还有一个简单的方法,在FOXMAIL中可以设置“快速专递”,把其中的DNS设置成你当地上网的ISP提供的DNS地址即可。

本文标题:web服务器的架设-Fedora-8下Samba服务器的架设详解
本文地址: http://www.61k.com/1135471.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1