Android平台的桌面插件的研究与实现

时间:2022-09-04 05:39:26

Android平台的桌面插件的研究与实现

摘要:本文介绍Android平台的系统架构,并通过一个例子研究了在Andriod平台上开发widget的详细过程。

关键词:Android;Widget;快捷键

中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 10-0000-02

The Research and Implementation of Desktop Plug-in for Android Platform

Zhao Shitian

(Xingtan College of Qufu Normal University,Qufu273100,China)

Abstract:This paper introduces the system structure,the Android platform and through an example in the Andriod platform development widget detailed process.

Keywords:Android;Widget;Shortcuts

一、引言

Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器。

二、Android系统平台的结构

Android平台自底向上由以下四个层次组成:Linux内核层、运行时库和其他库层、应用框架层、应用程序层。如图1所示。

(一)Linux内核层:Android底层是一个基于Linux内核来开发的独立操作系统,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。

(二)Android运行时库和其他库层:Android运行时库包含一组核心库和Dalvik虚拟机,同时Android提供了丰富的库类支持且大部分为开源代码。

(三)应用框架层:在应用框架层Android开发人员可以跟那些核心应用一样拥有访问框架APIs的全部权限。应用的系结构化设计简化了各组件之间的重用,任何应用都可以分发自己的组件,任何应用也可以使用这些分发的组件。

(四)应用程序层:Android本身会附带一些核心的应用程序,包括e-mail客户端、短信程序、日历、地图、浏览器、通讯录等,目前所有的应用程序都是由Java语言开发的。

三、Android Widget桌面插件初探

Widget也称为应用程序窗口小部件,它是微小的应用程序视图,可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget provider来一个Widget。可以容纳其它App Widget的应用程序组件被称为App Widget宿主。

Android SDK从1.5版本开始支持App Widget framework,这个框架允许开发者开发Widgets,这些Widgets可以被用户通过长按桌面进行添加,与应用程序进行数据交互。 App Widget框架类

(一)App Widget Provider:继承自Broadcast Recevier,在App Widget应用update、enable、disable和delete时接收通知。其中,on Update、on Receive是最常用到的方法,它们接收更新通知。

(二)App Widget Provder Info:描述App Widget的大小、更新频率和初始界面等信息,以XML文件形式存在于应用的res/xml/目录下。

(三)App Widget Manger:负责管理App Widget,向App widget Provider发送通知。常用的方法:

Bind App Widget Id(int app Widget Id,Component Name provider):通过给定的Component Name绑定app Widget Id。

Get App Widget Ids(Component Name provider):通过给定的Component Name获取App Widget Id。

get App Widget Info(int app Widget Id):通过App Widget Id获取App Widget信息。

Get Installed Providers():返回一个List的信息。

Get Instance(Context context):获取App Widget Manger实例使用的上下文对象。

Update App Widget(int[]app Widget Ids,Remote Views views):通过app Widget Id对传进来的Remote View进行修改,并重新刷新App Widget组件。

Update App Widget(Component Name provider,Remote Views views):通过Component Name对传进来的Remoete View进行修改,并重新刷新App Widget组件。

Update App Widget(int app Widget Id,Remote Views views):通过app Widget Id对传进来的Remote View进行修改,并重新刷新App Widget组件。

(四)Remote Views:一个可以在其他应用进程中运行的类,向App Widget Provider发送通知。

四、Widget开发详解

本文所做的Widget,灵感来自于联想乐Phone的四叶草插件,可以在插件上添加快捷方式,并可以更换主题,效果如图2,设置页面如图3:

图2.四叶草插件图3.设置界面

(一)新建工程lephone,然后修改widget.java的代码,让其继承类App Widget Provider,App Widget Provider中有两个方法on Update和on Deleted,前者实现在widget创建及被更新时调用,后者实现在widget被删除时调用。我们可以在lephone.java中重写这两个方法。本文的例子在on Update中实现了数据库复制到存储卡,并从数据库读取初始界面数据,实现Widget的界面初始化。数据库功能的实现是在类Database.java中定义。部分代码如下:

(二)在Android Manifest.xml中声明App Widget

(三)新建widget参数配置文件widget-provider.xml,并保存在工程的res/xml/文件夹下。Widget的基本属性可以在这个文件中定义,例如它的最小尺寸的布局,它的初始layout,多久更新Widget,还有在创建时期的一个配置Activity。Update Period Millis属性定义了App Widget应该多久向App Widget Provider请求更新。

(四)widget外观布局定义文件。和其他android程序开发方法一样,但是由于App Widget的布局是基于Remote Views,所以只能使用RemoteViews所支持的layout或者view。在本文的例子中是在widget.xml定义布局。其他设置界面也有相应的布局文件。

到这里,我们已经可以实现在手机桌面长按添加这个例子中的Widget了。但是还无法实现添加、修改快捷键的功能,所以我们还需要以下几个步骤。

(五)实现添加、修改快捷键,并实现点击事件。在例子中Widget是一个四叶草的形状,四个花瓣可以从手机的系统软件和用户安装软件中选择,并可以更改快捷方式的图标。中间的按钮可以选择通讯录或Widget设置。在widget.java的update App Widget方法中定义按钮事件。部分代码如下:

(六)Widget背景的更换。在widget.java的update App Widget方法中实现该功能,从数据库中读取数据,通过case语句判断从而实现背景的更改。

(七)widget设置的实现。这个功能的实现已经不在涉及到widget的开发。方法和普通的android app的开发方法一样。五个快捷键分别对应两个个类,分别用于修改快捷键图标和名称。代码主要涉及到数据库的读取、更新等。稍微复杂点的就是将图标文件存储到数据库中时需要进行格式的转换。读取时进行相反的格式转换。这个功能是在data base.java中的Bitmap draw able To Bitmap(Draw able draw able)和public byte[]flatten Bitmap(Bitmap icon)方法中定义。

至此这个widget已经完成。

五、结束语

本文介绍Android平台的系统架构,并通过一个例子研究了在Andriod平台上开发widget的详细过程。

参考文献:

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

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

[3]张仕成.基于Google Android平台的应用程序开发与研究[J].电脑知识与技术,2009,28

[4]/silenceburn/archive/2010/12/23/6093074.aspx

上一篇:谈非线性编辑中的影视艺术性基本原则 下一篇:B/S模式下网站制作技术浅析