APP下载

基于Android平台的豆瓣网客户端的设计与实现

2015-01-13宜昌市第七中学陈羽修

电子世界 2015年21期
关键词:令牌客户端界面

宜昌市第七中学 陈羽修

基于Android平台的豆瓣网客户端的设计与实现

宜昌市第七中学 陈羽修

豆瓣网是一个以生活文化为内容的社区网站,提供图书与影音作品信息及其他多种功能的服务。随着Android智能手机的普及,加上Android操作系统强大的功能和开放性的特点,本文基于Android平台及豆瓣网,使用java语言设计并实现了豆瓣网手机客户端,经测试,该客户端在Android手机上能正确有效的运行,具有一定的实用性。

Android;豆瓣网;Java;智能手机

1  引言

Android是一种专为智能手机设计的操作系统平台,除了操作系统以外,还包括中间件、手机应用软件、及Android SDK应用开发组件,供开发人员开发Android平台的应用程序。目前Android限定所有的应用程序用java语言来编写。本文利用JDK、 Android SDK和eclipse相结合的开发环境实现了豆瓣网的手机客户端,功能包括:首次登陆界面、豆瓣网客户端授权、我说功能和友邻广播功能。

2  应用开发环境介绍

Android开发环境搭建包括JDK、Eclipse、Android SDK、ADT的安装以及AVD的创建,具体安装内容如下:

Java应用程序开发环境JDK(Java Development Kit)安装,安装完成之后,检查JDK是否安装成功;

集成开发环境Eclipse安装;

软件开发工具包Android SDK(Software Development Kit)安装,检查SDK是否安装成功;

集成开发环境插件ADT(Android Development Tools Plugin for the Eclipse IDE)安装;

虚拟设备AVD(Android Virtual Devices),为使Android应用程序可以在模拟器上运行,必须创建AVD,创建AVD完毕后,检查测试环境是否搭建成功。

3  豆瓣网客户端的设计思路与步骤

设计主要完成用户第一次登录界面,授权界面(用户未登录),用户登录界面,显示“我说”界面,编辑框中输入“我说”内容,发送“我说”内容。

3.1 认证及访问资源的流程

豆瓣网API通过以下四个步骤完成认证授权,并访问或修改受限资源的流程。

步骤一:通过申请的apikey和他的私钥来获取未授权的请求令牌。

通过http://www.douban.com/service/auth/ request-token,获取未授权的令牌。

步骤二:获取请求令牌后请求用户授权这个请求令牌。获取请求令牌之后,需要请求用户授权该请求令牌request token需要将浏览器跳转到如下网站:http:// www.douban.com/service/oauth/authorize跳转后,用户会看到请求授权的页面用户可以选择同意或拒绝授权。

步骤三:如果用户授权了这个请求令牌,那么就用授权后的请求令牌换取访问令牌用户完成授权后第三方应用可以通过访问如下网址,将已授权的request token换取access token access token将被用于修改和访问第三方应用已完成授权http://www.douban.com/service/ auth/access-token。

步骤四:使用访问令牌访问或修改受保护的资源。获得accesstoken后,用户的应用就可以使用accesstoken访问或修改资源。

3.2 客户端功能规划设计

步骤一:用户第一次登录时程序会弹出一个对话框提示用户。

步骤二:进入认证授权界面。

步骤三:显示用户登录界面,提示输入用户名和密码,用户登录后显示API授权界面,单机确定完成授权,完成授权后进入显示所有广播界面,在编辑框里输入“我说”的内容,手机发送“我说”的内容发送到服务器,并在手机屏幕上显示出来。

3.3 数据存储设计

需要存储的主要有以下几个数据:请求令牌值、请求令牌对应的密钥、授权令牌值、授权令牌对应的密钥、用户的id,这些数据直接存储在Android提供的类SharePreference中。

4  豆瓣网客户端的实现

4.1 首次登陆界面设计

类Activitymain的实现,Activitymain继承了Activity类,在Activitymain中实现用户首次登陆界面,如果用户登陆的话,会直接跳转到显示说说,部分实现代码如下:

private void showAlertDialog() {

final AlertDialog alert = new AlertDialog.Builder(this).

create();

alert.setMessage(“这是您是第一次登陆,只需要进行简单的配置,您就可以正常使用啦:)”);

alert.setButton(“登陆”, new DialogInterface.

OnClickListener();

}

Acesstokenisvalid()函数判断Acesstoken是否合法,如果用户第一次登录那么返回的false,表示acesstoken不合法。Showalertdialog()显示用户第一次登录的提示框,程序跳转到activityauth中。首次登陆如图1所示:

图1  首次登陆图

4.2 获取未授权的请求令牌并请求用户授权的实现

主要实现了豆瓣网客户端的授权过程的两个步骤:

步骤一:获取未授权的请求令牌;

步骤二:请求用户授权。

在getrequest()函数里主要得到未授权的请求令牌和对应的请求令牌密钥并存储到类SharePreference里。

4.3 授权令牌换取访问令牌的实现

Activityauthsuccess的实现,当用户在豆瓣网的授权界面单击同意按钮后Activiy跳转到Activitysuccess,在这个Activity里主要完成豆瓣网授权的第三个步骤:使用授权后的令牌换取访问令牌并保存用户ID,部分实现代码如下:

//保存token

private String saveAccessToken() {

myService = new DoubanService("subApplication",

DoubanUtil.apiKey, DoubanUtil.secret, true);

String url = myService.getAuthorizationUrl(DoubanUtil. callback);

settings = getSharedPreferences(PreferencesUtil. preferencesDouban, 0);

String requestToken = settings.getString(PreferencesUtil .oauthToken,"false");

String requestTokenSecret = settings.getString(Preferen cesUtil.oauthTokenSecret,

"false");

Log.i("jinyan", "requestToken=" + requestToken);

myService.setRequestToken(requestToken);

myService.setRequestTokenSecret(requestTokenSecret);

ArrayList<String> list = myService.getAccessToken();

String acessToken = list.get(0);

String acessTokenSecret = list.get(1);

Log.i("jinyan", "acessToken=" + acessToken);

Log.i("jinyan", "acessTokenSecret=" + acessTokenSecret);

settings.edit().putString(PreferencesUtil.acessToken, acessToken).putString(PreferencesUtil.acessTokenSecret, acessTokenSecret).commit();

return url;

}

在saveaccesstoken()里我们得到了访问令牌和与之对应的密钥,并将其保存在SharePreference里,登陆界面如图2所示。

图2  登陆界面

4.4 “我说”功能和友邻广播功能实现

Activityshowsaying的实现,为应用中最核心的功能,实现豆瓣网中的“我说”功能和友邻广播功能,实现部分代码如下:

public View getView(int position, View convertView, ViewGroup parent) {

SayingView sayingView;

Saying saying = sayingList.get(position);

if (convertView == null) {

sayingView = new SayingView(mContext, saying);

} else {

sayingView = (SayingView) convertView;

sayingView.setNickname(saying.nickname);

sayingView.setContent(saying.content);

}

return sayingView;

}

图3  显示“说说”

4.5 豆瓣网开放API的调用

主要完成Abstractactivity的实现,Abstractactivity是一个抽象的Activity,其中Activityauthsuccess和Activityshowsaying继承了这个Abstractactivity。在Abstractactivity实现后,通过获得一个授权后的豆瓣网服务,可以直接使用java豆瓣网库的API来调用豆瓣网开放出来的API。

5  结论

本文基于Android开发环境,结合豆瓣网的API,采用Java语言编程,设计并实现了一个Android手机的应用软件豆瓣网客户端。经在手机上运行测试,该客户端操作方便,运行结果正确,软件性能好,连接速度快,具有一定的实用价值。

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

[2]郭宏志.Android应用开发详解[M].电子工业出版社,2010.

[3]杨丰盛.Android应用开发揭秘[M].机械工业出版社,2010.

[4]韩超.Android系统移植开发概述[M].电子工业出版社,2011.

[5]张利国,代闻,龚海平.Android移动开发案例详解[M].人民邮电出版社,2010.

[6]杨文志.google android程序设计指南[M].电子工业出版社,2009.

[7]杨丰盛.android应用开发揭秘[M].机械工业出版社,2010.

[8]郭本俊.移动软件开发技术[M].中国水利水电出版社,2010.

[9]李钟尉,周小彤,陈丹丹.Java从入门到精通[M].清华大学出版社,2010.

[10]闫迎利.Java编程[M].清华大学出版社,2010.

[11]刘培文.Java程序设计教程[M].中国人民大学出版社,2009.

[12]Y.Daniel Liang.Introduction to Java Programming[M].机械工业出版社,2008.

陈羽修(1998-),湖北宜昌人,现就读于宜昌市第七中学。

猜你喜欢

令牌客户端界面
称金块
国企党委前置研究的“四个界面”
基于路由和QoS令牌桶的集中式限速网关
如何看待传统媒体新闻客户端的“断舍离”?
动态令牌分配的TCSN多级令牌桶流量监管算法
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究