基于Android系统环境的嵌入式Web服务器设计

发布者:自由漫步最新更新时间:2018-02-05 来源: eefocus关键字:Android  系统环境  Web服务器 手机看文章 扫描二维码
随时随地手机看文章

    随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流。本文主要论述了基于Android系统环境,在家庭网关中实现嵌入式Web服务器的设计方法,介绍了i-jetty嵌入式Web服务器,及其Web应用功能的实现。

    只要在嵌入式设备中集成了Web服务器,就能实现用户与嵌入式设备低成本、高通用性的信息交流,即客户端利用HTTP浏览器,在任何时间、任何地点都能实现与嵌入式设备的信息交互。可以说,嵌入式Web的应用极大地促进嵌入式设备,特别是家电设备、通信终端、仪器仪表的信息交互和远程控制功能。
    在三网融合的大背景下,通过家庭网关实现外部网络即电视网、电信网、因特网与家庭内部电话、电视、电脑以及家庭电器设备的通讯,是当前家居智能化、现代化的重要发展趋势。本文的主要内容是研究基于家庭网关的嵌入式系统,实现简单实用的Web服务器功能,为外部网络提供一个方便快捷地访问和控制家庭内部资源的平台。由于Android操作系统能方便地将各种应用程序嵌入网络,以及开放性好、支持硬件丰富的特点,本文选择Android操作系统作为家庭网关设计的软件平台来建立Web服务器。

1 Android系统介绍
    Android移动设备平台是基于Linux内核再度开发的一个开源的操作系统和软件平台,最早期由Google公司进行研究和开发的。后来Goog le为了推广此技术,它和中国移动、HTC、三星、摩托罗拉等几十家手机通信运营商和制造商,建立了开放手机联盟,共同开发Android移动设备平台。
    Android采用了软件堆层的架构,主要分为三部分:其最底层是基于Linux内核进行再度开发的,Linux内核只提供最为基础的功能;中间层包括由C++开发的虚拟机Virtual Machine(VM)和函数库Library;最上层是各种应用软件,包括通话程序、短信程序等。应用软件则由各公司自行开发,以Java编写。每个Android应用程序都在VM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中。
    本文实现的Web应用虽然基于Android操作系统,但并不像通常的Android APP那样,需要一个AndroiDMAnifest.xml文件包含必要的配置信息,且需要一个Activity类来提供UI。因为是Web服务不需要用户图形界面,只要用到Android提供的接口而已,即android.jar,这是一个Java归档文件,其中包含构建应用程序所需的所有的Android SDK类。而且,由于Android VM的原因,不能直接使用.class文件,需要转换为.dex文件,这些内容将在下文详细介绍。

2 系统设计
    在嵌入式系统中,主控制芯片的选择对于整个系统性能和良好运行有着至关重要的影响,在选择主控芯片的过程中,需综合考虑芯片自身的性能、兼容性、价格以及后续的升级等因素。综合考虑以上因素,本文设计的家庭网关采用了Cortex—A8处理器作为硬件平台。因为Cor tex—A8支持大型的操作系统,高频率、高级存储管理及丰富的外设接口,为Android系统的运行提供了良好的硬件基础。
    一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。这个客户端通常指的是Web浏览器。Web服务器监听浏览器的服务请求,根据用户请求的类型提供相应的服务;Web服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。这些数据通常以格式固定、含有文本和图片的页面出现在用户端浏览器。本文Web服务器系统的设计架构如图1所示。

a.JPG

    
    目前常用的嵌入式Web服务器主要有boa、thttpd、mini_httpd、shttpd和lighttpd等,但它们都不能直接应用于Android系统上。本文选用代码精炼、扩展性强的开源i-jettyWeb服务器,它可直接运行在Android系统上,为Servlet提供运行环境钝能。
    Servlet是一种独立于平台和协议的Web服务器端的Java应用程序,可以生成动态的Web页面。与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载。
    一个Web服务器系统是离不开数据库的支持。SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它是针对嵌入式产品而设计的,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。Android平台集成了SQLite数据库,并提供了操作的API。所以,只要在Servlet中引入开发Android程序提供的API,就能实现用Servlet操作SQLite。
    本文下面主要介绍i—ierry web嵌入式服务器的搭建,以及如何实现Servlet对SQIrite数据库的操作。
2.1 i-jetty Web服务器及其安装
    i—jetty是一个将开源Web容器Jetty移植到GoogleAndroid手机平台的开源项目,可以使嵌入式设备上运行Web应用。Jetty是一个100%由Java实现的、开源的HTYP服务器和javax.servlet容器,它不仅仅作为一个独立服务软件(如Tomcat)被使用,而且其优良的组件(Compone t)设计、高内聚低耦合、高扩展性等特性使得Jetty非常易于作为嵌入式工具使用。总之,Jetty具有的优点包括:
    1)配置使用简单;
    2)设计模块化,代码简练易懂;
    3)Tomcat的应用移植到Jetty基本不用修改;
    4)非常适合嵌入式产品,可扩展性好;
    i—jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以j将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand—alone)的Java应用提供网络和web连接。使用简单、配置简单,体积很小,但它的功能齐全,并且还是一个Servlet容器,这就让动态网页实现和后台操作(例如数据库操作)成为可能。同时,i—jetty可以使用Android的接口,这就降低了开发的难度和复杂度。i—jetty与其他主流的服务器一样,只要将已经做好的Web项目发布到服务器的Webapps目录下,就能实现网站的正常运行,十分的方便。
    下面介绍i—jetty服务器的安装:
    首先,在eclipse里创建i—jetty的android项目,将下载的i—jetty源码覆盖进去。然后,将下面目录下的jar引入到i—jetty项目中:C:\Documents and Settings\org\eclipse\jetty,还需要servlet-api-2.5.jar。最后,编译i-jetty,并将其安装到设备中。此后,即可对服务器进行各种配置。若想要使用自己的Web应用,则可以将自己的Web工程打包成war包,并将war包直接放到/sdeard/jetty /webapps/目录下。

2.2 Servlet和SQLite的设计与使用
    Servlet是位于服务器端的Java应用程序,它由Web服务器进行加载。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet可以用来扩充Java—enabLED Server的基本功能,目前最常使用的是增加Web服务器的互动性。但它可以被用来扩充任何种类的服务器,如FTP服务器。
    最早用来产生动态网页服务的方法是CGI(Common Gateway Interface)。它的做法是透过Web服务器将客户端的请求送给一个进程,这个进程再将请求的执行结果传回客户端,只要是一个新的请求,不管它是否和先前的请求相同,CGI都产生一个新的进程来处理,这样非常耗费系统资源。在Servlet中每一个请求都是由同一个进程下的线程所服务,而且相同的请求会由同一个线程所执行。同时Servlet使用Java语言来开发的,具有跨平台特性,而这个优点更是CGI所没有的。因此,Servlet提供了强有力且具有效率的技术来取代CGI。
    要在一个i—jetty的web工程中支持servlet,大致的步骤如下:
    1)在ecplise中新建Android项目,并添加servlet的支持文件;
    2)在项目中新建servlet并配置web.xml,编写servlet;
    3)编译完成后会自动生成.class文件,需要将.class文件转换成Android能执行的.dex文件;
    4)将.dex文件和web.xml等文件按一定顺序保存在一个web工程目录下,然后打包成一个war包。
    SQLite是一款轻型的数据库,能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比它们都快。不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。Android操作系统采用标准SQLite数据库,提供管理数据库相关的API。所以,只要在Servlet中引入开发Android程序提供的API,就能实现用Servlet操作SQLite。Setv let调用SQLite数据库的方法如下:
    首先是数据库的建立,在Android中使用SQLitEDAtabase的静态方法openOrCreateDatabase(String path,SQLiteDatabae.Cursor Fact ory factory)打开或者创建一个数据库。然后创建表,为数据库添加插入数据,删除数据,修改数据,查询数据等功能。最后是Servlet的设计,在eclipse中建立Androidproiect,在Web工程中导入android.jar,再引入需要的操作数据库的类:
b.JPG   

    3 系统方案的测试
    将装载了Android系统的嵌入式设备连接网络,查到其网络连接的IP地址为192.168.137.96,将嵌入式web服务器i—jetty安装到该设备,并且将设计好的web工程放在SD卡中的/jetty/webapps/目录下。打开服务器,设置好HTTP的通信端口,开启服务。
    可知,家庭网关服务器端的地址为192.168.137.96。启动i—jetty后,在浏览器地址栏输入192.168.137.96:8080/temp,可以看到系统登陆页面,如图2所示。

 






c.JPG

    
    这是一个用户登陆界面,输入用户名和密码后,主页会将输入信息提交到Login.java的Servlet里,由此Servlet来查询数据库,判断该用户是否合法。当用户合法后,可以进入主页界面,如图3所示。

d.JPG

    4 结束语
    本文首先简要介绍了Android系统,然后论述了实现嵌入式Web服务器和相关Internet技术,指出了在Android系统下实现Web服务器应要注意的事项。接着介绍了i—jetty的优点以及编译安装方法,了解了i—jetty是为数不多的可以在Android下运行的Web服务器,并且还是一个Servlet容器。将传统的CGI与Servlet做了比较,说明了Servlet在Android系统下的优势:Setvlet在动态网页的实现方面更有效率。在后台操作方面,Android并不支持类似PHP的网页脚本语言,所以,Servlet是一个很好的选择。在嵌入式系统里存储信息,SQLite以其方便的操作,无需额外配置,体积小等优点,得到了广泛的应用。


关键字:Android  系统环境  Web服务器 引用地址:基于Android系统环境的嵌入式Web服务器设计

上一篇:基于ARM的嵌入式系统的MP3软解码器研究与实现
下一篇:基于S3C2410的串行外围设备接口SPI及Linux下嵌入式驱动的实现

推荐阅读最新更新时间:2024-03-16 15:54

国外一加5停止推送安卓8.0:出现错误 等待下次更新
近日,一加5正式推送安卓8.0系统,并且增加了面部识别功能。 不过最近国外的用户投诉了一加5在更新安卓8.0时出现错误,所以一加5在国外版本的安卓8.0推送已经被取消。 以下是一加官方在国外一加论坛上的说法: 由于Oxygen 5.0的一个错误,我们已经取消了它的全球推送。不过我们正在为Oxygen 5.0.1做准备,部分版本很快就会推送。 至于Oxygen 5.0出现了什么错误,一加并没有透露。所以,对于一加5还没升级安卓8.0的用户,就只能等待下个版本推送更新。 但国内一加5的推送并没有受到影响,截至发稿时,还能继续在官方论坛下载安卓8.0公测版升级包。
[手机便携]
那些号称挑战Android和iOS的系统如今在哪里?
   对于渴望听到一个新故事的人来讲,今年的智能手机市场依旧没有什么惊天动地的改变,Android和iOS双雄垄断局面甚至愈演愈烈,如果非要说有些什么蛛丝马迹的话,那么三星业绩的下滑可能是个大变前的征兆,但是Android的市场份额一次又一次的创历史新高。   根据分析机构IDC的调查数据显示,目前在移动市场,Android系统依然排名首位,市场占有率为84.7%,排名第二的iOS占11.7%,微软的WP排名第三,为2.5%,剩余的部分叫做“其他”。   在这剩余的1.1%其他之中,还有黑莓这个没落玩家,而今天要说的是,在Android、iOS、WP和BB之外的系统们。这些系统在诞生之初,就宣称,或者被宣称要颠覆移动互联网格局,成为
[手机便携]
取消Home键 Android 5.0或迎来大变化
    从今年年初开始,大量安卓新机均搭载最新的安卓4.4系统。虽然从安卓2.0时代到安卓4.0时代外观和操作都没有产生太大的风格变化,但是增加的ATR模式还是对机身的性能提升显著的。而近日有传闻称,安卓5.0将对手机的UI和操作进行大调整。   该消息最先由外媒曝光,根据内部员工表述,Android 5.0将弃用现在的虚拟主页键,取而代之的是以Google为名称的按键,主要功能依旧为搜索服务。另外,在取消虚拟的Home键后,谷歌将采用“从多任务界面向左滑”的手势操作来完成返回主界面的动作。 ▲全新的三个虚拟键 功能似乎和本土化有着不少差异   当然,我们并不能确定这一最新的操作系统代号是否为安卓5.0,毕竟谷歌已经
[手机便携]
STM32移植lwip之建立web服务器
本篇目标:在之前能ping通pc机的工程基础上搭建web服务器,借鉴官方web服务器的程序与网页,能够用pc机浏览器访问web服务器,并返回设置的网页 材料准备: 基础工程:修改后能ping通pc机的工程(STM32官方移植lwip修改代码) 搭建工程:最终搭建好的web服务器工程(STM32搭建web服务器工程) 调试工具:用来调试tcp连接下的数据接收(网络调试助手) 测试浏览器:这里使用的是Chrome谷歌浏览器 ps:通过修改官方搭建web服务器的代码,来了解搭建的过程,其中暂时去掉了ssi和cgi的程序,仅仅实现网页数据的返回和网页的跳转,并将官方的代码简化到相对最简,以便以后的学习之用 浏览器请求指令探索
[单片机]
STM32移植lwip之建立<font color='red'>web服务器</font>
Google推迟发布新版Android系统
      Google今天表示,新版的Android软件推出时间将延后。Google手机操作系统Android的主要设计人安迪·鲁宾称,Google最新版的Android系统还没有准备充分,针对各种设备的优化工作也未完成,因此暂时不会公布源码。       最新版的Android代号为Honeycomb,它将针对平板电脑有所改良。   安迪·鲁宾说:“针对Android平板将有新的功能,我们对此很满意,但在匹配其它设备时,比如手机,我们还有许多工作要做。因此,我们决定不开放Honeycomb的源码。”   安迪·鲁宾进一步说,在Honeycomb内有许多功能是面向平板电脑的,Google工程师担心源码不适合其它非平板设备
[手机便携]
一个没有密码的世界会更方便 也会让切换iOS与安卓更难
5月31日上午消息,5月初“世界密码日”那天,安全机构FIDO获得了苹果、谷歌和微软的新支持,这几家大科技公司都宣布他们正在扩大对无密码登录标准的支持。用户或许不用再输入密码了,但也有人担忧,没有密码的世界可能会进一步将用户锁定在苹果和谷歌的生态系统中。   外媒的9to5mac的作者Ben Lovejoy就对此事进行了探讨。 “一个没有密码的世界”   一个没有密码的世界是FIDO联盟(Fast IDentity Online)的使命。   目前,要登录网站或应用程序,我们通常输入用户名和密码。多年来,密码是一种非常可怕的保安方式——而且随着我们使用的每一项附加服务,密码(多了)更是如此。安全问题作为一种粗略的身份验证形式,
[手机便携]
Android系统多版本并存 无序发展威胁产业链
        半年前,首款搭载谷歌Android4.0系统Ice Cream Sandwich(冰激凌三明治)的galaxy nexus正式推出。半年后,包括HTC、三星、摩托罗拉在内的主力Android系统商才“不紧不慢”地慢慢推出4.0机型。5月3日,三星正式发布第三代galaxys机型,并搭载Android4.0系统。南都记者另从摩托罗拉中国获悉,从5月开始,摩托罗拉也将推出部分现有机型的4.0升级。至于HTC,也是在今年的MWC大会之后才陆续“上马”Android4.0系统。由于本质为开源,Android系统发展至今,几乎完全脱离了谷歌的控制,其花费巨大开发的新版本系统往往在手机厂商需要为新品添加噱头的时候才会用上。更值
[手机便携]
LG Q92 5G现跑分库:骁龙765G+6GB内存+Android 10
7 月下旬,LG Q92 5G 现身 Google Play Console 网站,正面谍照和关键规格参数被曝光。现在,这款型号为“LGE LM-Q920N”的 5G 手机现身 GeekBench 跑分库,确认搭载高通骁龙 765G 处理器,6GB 的内存,Android 10 系统。   渲染图显示 Q92 正面将会采用打孔屏,里面为一枚自拍相机。根据列出的详细信息显示,LG Q92 将搭载高通骁龙 765 芯片组,该移动平台是基于 ARM 的中端 SoC,也是首批集成 5G 调制解调器的芯片组-Snapdragon X5。 该调制解调器支持高达 3.7 / 1.6 Mbps(下行和上载)以及 mmWave 和 S
[手机便携]
LG Q92 5G现跑分库:骁龙765G+6GB内存+<font color='red'>Android</font> 10
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved