基于Android平台的应用程序开发研究

2013-10-17 06:09牟星亮单康康
网络安全技术与应用 2013年10期
关键词:接入点应用程序组件

朱 生 牟星亮 单康康

(浙江大学 浙江 310027)

0 引言

Android操作系统最初由Andy Rubin开发,主要是支持智能手机,在2005年由Google收购,然后组建开放手机联盟对其进行研发,慢慢的扩展到平板电脑和其他领域。Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中,他将外表像人的机器起名为Android,Android的Logo是由Ascender公司设计的一个全身绿色的机器人。

Android是一个开放、自由的移动终端平台,底层是以Linux kernel为核心,包括操作系统、中间件、应用软件。平台开放性保证该平台不存在任何阻碍移动产业创新的专用权障碍,在平台上开发的应用程序,主要是应用java语言编写,运行在Dalvik虚拟机上。

1 Android平台的架构

android平台由以下几个部分组成:Linux kernel、Android运行时库和一些其他的库、应用框架和应用程序。

1.1 Linux内核

Android系统的Linux内核是作为硬件和软件栈直接的抽象层。它是基于Linux kernel开发的,但这个系统并非是类GNU/Linux,它没有采用Linux系统的虚拟内存文件系统,而是采用了YAFFS2文件系统(一种开源的文件系统,专为NAND Flash所设计,具有很好的移植性,能在多种系统上运行),多种内GNU/Linux所支持的功能,android Linux kernel都没有给予支持。另外,还添加了一个名为Goldfish的虚拟CPU和Android运行所需的特定驱动代码。目前,Linux kernel控制包括安全,存储器管理,程序管理,网络堆栈,驱动程序模型等。

1.2 运行时库和其他库

Android的运行时库主要包含了一组核心库和Dalvik虚拟机[3],另外还提供了大量的库类支持,且大部分是开源代码。在这些代码中,提供了诸如对SQlite(android系统采用的嵌入式数据库)、Webkit的支持。

Dalvik 可以同时运行多个虚拟系统,对没一个Android应用程序,它都在自己的进程中运行,拥有一个独立的Dalvik虚拟机实例。该虚拟机执行(.dex)文件,这种格式的文件对小内存使用做了优化。

1.3 应用框架

Android的应用框架的架构设计简化了组件的重用。开发人员可以访问核心应用程序所使用的所有API框架。任何一个应用程序都可以发布它的功能模块,而且在框架的安全限制内,其他任何的应用程序也可以使用该功能模块。

对于这一要求,即当某一部分功能块被请求时,系统要能够及时启动一个应用程序的进程,并实例化其Java对象。所以,Android应用不像其他应用一样,它并没有如main()函数这样的单一入口点。而是由系统提供的四种类型的组件来提供的。四种组件包括:

(1)Activity 在Android中,Activity是所有应用程序的根本,程序的运行流程都是在Activity中,它是Android中最基本的模块之一。

(2)service Service是和Activity级别差不多的一种组件,但它不能自己运行,只能在后台运行,和其他组件进行交互。

(3)Broadcast 在Android中,Broadcast是一种广泛运用在各种应用程序之间进行信息传输的机制。

(4)Content Provider Content Provider是Android提供的第三方应用数据的访问方案。它使一个应用程序的指定数据集提供给其他应用程序。

1.4 应用程序

Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。一个Android App包含一个称为APK的压缩文件中,如图一所示,一个SDK APP的构成。

图1中需要注意的是 Android manifest文件,它是一个介于App和Android System的接口。它在app中位于整个项目的根目录,描述package中暴露的组件(各种activity、service等),以及他们各自的实现类,能被处理的各种数据和启动位置,另外还指定了permissions和instrumentation。

2 Android应用开发例程

本文的开发实例是一个获取wifi信息,并把扫描到的wifi信号写入一个sdcard中的文件的程序。Android平台提供了很多接口,供开发者使用,开发者通过这些接口可以方便的对移动终端上的各种设备进行读写等操作。

图1 SDK APP构成

2.1 开发环境搭建

搭建android的开发环境,要依次安装 JAVA 的JDK平台,Eclipse开发平台,SDK平台,在eclipse中安装ADT插件,之后,在eclipse中设置SDK路径。开发环境搭建完成后,可以创建运行android软件的虚拟机avd了,一种是通过eclipse中的Android SDK 安定 AVD Manager创建,一种是利用SDK提供的android 命令来创建。

通过eclipse创建AVD 过程如下:

1、在Eclipse中。选择Windows > Android SDK and AVD Manager

2、点击左侧面板的Virtual Devices,再右侧点击New

3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值,点击create avd 即可完成。

另外一种方法是在cmd中运用命令创建,在cmd命令行中输入以下命令:

其中avd-name是创建的avd的名字,target后面是所使用的sdk的版本号。这个命令可以创建一个名为avd-name的avd。在在命令行中输入命令:

通过这个命令在c盘目录下创建了一个512m大小的名为sdcard的sdcard文件。然后通过下面这个命令,可以带sdcard文件启动avd。

启动后,就可以把各种android dex文件安装到该虚拟机中进行运行。

2.2 程序开发实例

Wi-fi是一种可以将一些移动终端以无线方式互联的技术。在android的应用框架[10]中,提供了一些访问操作wifi设备的包,包含在android.net.wifi下面,主要包含四个类:

ScanResult:通过移动终端的wifi设备扫描获取到的周边的wifi信号的信息。

wifiConfiguration:主要包含一些接入一个wifi接入点的时候,需要获取到的一些信息。

wifiInfo:在接入wifi接入点后,通过这个类,可以获得当前连接的一些信息。

wifiManager:这个类就是用来管理wifi设备的,获得一定权限后,通过它可以对wifi设备进行各种操作。

在本文的这个开发实例中,将实现一个很小的程序,它首先对移动终端周边的wifi接入点进行扫描,获取这些接入点的信息,然后把这些信息写入一个sdcard中的一个文本文件中,程序首先要获取到操作wifi设备和sdcard设备的权限,android中的权限设置都是在AndroidMenifest.xml中定义的。权限设置如下:

因为开发使用的sdk是最新的版本,而目前很多移动终端的android系统还没有更新,所以还要在这个文件中设置android:minSdkVersion,它表示可运行此程序的最低sdk的版本。

设定好这些之后,就可以开始程序的设计与开发了。这个程序中,需要一个用户界面,包含一个启动扫描的按钮,和一个文本框,告知一个简单的扫描结果给用户。在Android中,UI的定义需要通过layout来进行,一般view可以直接在layout里面进行声明。我们需要在Layout的main.xml中定义一个textview和两个button。

图2 UI设计

部分代码如下:

然后根据这两个文件,android会自动生成一个R.java的文件。里面用java代码定义了这几个UI组件及其属性。

然后我们先来定义一个类,来封装一些对wifi的操作。在这个类中,我们取得一个WifiManager对象,然后通过它扫描wifi接入点,得到周边的wifi信号的信息。主要代码如下:

然后创建一个继承Activity的主类ScanActivity,这个主类将创建一个UI界面,使用在layout文件当中定义好的textview和button,然后获取一个的封装了wifi操作的类的对象,之后就可以扫描所需要的信息了,在写入sdcard之前,需要检查该设备的状态,如果不可写的话,就在内存里面创建一个文件进行写入操作,一般在内存中,写入的位置上/data/data/app下的项目文件夹里面。如图3,是程序扫描的结果。

图3 扫描结果

图4 虚拟机界面

3 总结

Android平台是一个高度开放和兼容的平台,在这个平台上进行开发不受任何限制,其应用框架提供了丰富的接口,还有很多成熟的功能块可调用。另外Android系统还能无缝的结合Google的如地图、邮件、搜索等服务。对于android的发展而言,良好的开放性,有利于积累人气,包括软件开发商和硬件提供商。对于广大的消费,最大的受益是在这个平台上越来越丰富的软件资源。而由于其开放和兼容性,将带来更大的竞争,促使android的快速向前发展。

[1]Rogers R,Meike B,Mednieks Z.Android应用开发[M].北京:人民邮电出版社,2010.

[2]Android Developers[EB/OL].http://developer.android.com.

[3]Reto Meier.Android 高级编程[M].北京:清华大学出版社,2010.

[4]开放手机联盟.Android[DB/OL].http://code.google.com/android.

[5]Android实验室.Android[DB/OL].http://androidlab.cn.

[6]Android开发网.Android[DB/OL].http://www.android123.com.cn.

[7]张烨. 基于Android平台WIFI的实现及应用[D]. 北京邮电大学.2012

[8]朱婷婷,李惠. 基于Android的应用软件的综述[J].电脑与电信.2011.

[9]姚昱旻,刘卫国. Android的架构与应用开发研究[J].计算机系统应用.2008

[10 ]公磊,周聪. 基于Android的移动终端应用程序开发与研究[J].计算机与现代化2008

猜你喜欢
接入点应用程序组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
基于无线通信的信号系统AP接入点改造方案
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
高校 WiFi 9 大谬论
关于综合业务接入点选点方案的探讨
风起新一代光伏组件膜层:SSG纳米自清洁膜层
罗克韦尔自动化 无线接入点Stratix 5100