android客户端与服务端通信

android客户端与服务端通信
android客户端与服务端通信

1. 网络的基础知识

ip:主机在网络中的唯一标识,是一个逻辑地址。127.0.0.1表示本机地址

端口:是一个为了便于实现服务器与客户端之间通信所使用的抽象概念。

协议:通讯双方为了完成预先制定好的功能而达成的约定。

TCP/IP网络7层模型:物理层Physical(硬件)、数据链路层DataLink(二进制)、网络层Network(IP协议:寻址和路由)、

传输层Transport(TCP、UDP协议)、会话层Session(端口)、表示层Presentation、

应用层Application(HTTP、FTP、SMTP、POPS、DNS)

TCP协议和UDP协议:

TCP:开销大,用于可靠性要求高的场合,TCP的过程就是像打电话的过程。面向连接,可靠,低效

UDP:用在对实时性要求比较高的场合。UDP过程相当于写信的过程。无连接,不可靠,效率高。

2.网络套接字Socket(TCP)

客户端要创建的对象Socket 服务器端要创建的对象ServerSocket。

创建一个TCP服务器端程序的步骤:

a.创建一个ServerSocket

b.从ServerSocket接受客户连接请求

c.创建一个服务线程处理新的连接

d. 在服务线程中,从socket中获得I/O流

e. 对I/O流进行读写操作,完成与客户的交互

f.关闭I/O流

g.关闭Socket

创建一个TCP客户端程序的步骤:

a. 创建Socket

b. 获得I/O流

c.对I/O流进行读写操作

d. 关闭I/O流

e. 关闭Socket

3.为多个客户端服务

服务器端可以处理多个客户端的请求,那么服务器端要有类似以下的代码实现:

while(true){

Socket socket=serverSocket.accept();

Runnable r=new TestThread(socket);

Thread t=new Thread(r);

t.start(); }

TestThread实现了Runnable接口,在它的run方法中包含了与客户端循环通信的代码。

class TestThread implements Runnable{........

public void run(){

try{ ..........;}

catch(IOException e){handle exception}

} }

4. 建立URL连接

1)URL和URI URL和URLConnection类封装了大量复杂的实现细节,这些细节涉及如何从远程站点获取信息。可以通过传递一个字符串来构建一个URL对象,URL url=new URL(urlString);获得资源内容InputStream in=url.openStream();

URL:统一资源定位符URI:统一资源标示符

在JAVA类库中URI类不包含任何用于访问资源的方法,它的唯一作用就是解析;URL类可以打开一个到达资源的流,因此URL类只能作用于Java类库知道该如何处理的模式,如http:、https:、ftp:、本地文件系统file:、JAR文件jar:

2)使用URLConnection获取资源

操作URLConnection对象的步骤:

a.调用URL类中的openConnection()获得URLConnection对象。

URLCOnnection connection=url.openConnection();

b.设置任意的请求属性

c.调用connect()连接远程资源connection.connect();//除了与服务器建立套接字连接外,还可向服务器查询头信息.

d.与服务器建立连接后,可以查询头信息。getHeaderFieldKey和getHeaderField()两个方法列举消息头所有字段。

e.最后访问资源

URLConnectin类的方法:a.先介绍几个可以与服务器建立连接之前设置连接属性的方法

setDoInput()和setDoOutput(),默认情况下建立的连接只有从服务器读取信息的输入流,并没有任何执行写操作的输出流。要想获得输出流(如想服务器提交一个数据),既要调用connection.setDoOutput(true);

setIfModifiedSince()用于告诉连接你只对自某个特定日期依赖修改过的数据感兴趣;

setUseCaches和setAllowUserInteraction():之用于applet。前一个方法命令浏览器首先检查它的缓存,后一个则用于在访问有密码保护的资源是弹出对话框,以便查询用户名和密码。

setRequestProperty():用来设置对特定协议起作用的任何“名-值对”//如访问一个有密码保护的Web页connection.

setRequestProperty("Authorization","Basic"+new

sun.misc.BASE64Encoder().encode(input.getBytes));

b.与服务器建立连接后使用的方法:

getHeaderFieldKey(n):获得响应头的第n个值其中n从1开始。

getHeaderFields(n):得到第n个值。

3)base64编码:用于将字节流编码成可打印的ASCII字符流。

代码如下:{ByteArrayOutputStream bOut=new ByteArrayOutputStream();

Base64OutputStream out=new Base64OutputStream(bOut);

try{out.write(s.getBytes());out.flush();}

catch(IOException e){}

return bOut.toString(); }

关于编码,我们看看这两个类URLEncoder和URLDecoder

URLEncoder.encode(String s,String encoding)采用指定的字符编码模式对字符串s进行编码,如按UTF-8编码;

URLDecoder.decode(String s,String encoding)采用指定编码模式对已编码字符串s进行解码,并返回结果。

5 高级套接字编程

1)套接字超时:在实际应用中,我们可能并不想从套接字读取信息,因为在数据可以被访问之前,读操作将会被阻塞,如果此时主机不可达,那么我们的应用将要等待很长的时间,并且因为受底层操作系统的限制而最终会导致超时。

解决方案:在构造socket对象时设置超时值

Socket s=new Socket(String host,int port); s.setSoTimeout(10000);或

Socket s=new Socket(); s.connect(new InetSocketAddress(host,port),timeout);

注意:如果设置了超时值,并且以后的读操作和写操作在没有被完成之前就超过了时间限制,那么这些操作就会抛

出SocketTimeoutException异常。

2)可中断套接字:当连接一个套接字,当前线程会被阻塞知道建立连接或超时为止,同样当通过套接字读取数据或写时,当前线程也会被阻塞知道操作成功或超时为止,这个时候我们就要有一个功能用以取消那些看似不会成功的连接,即中断套接字。

为了中断套接字操作,可以使用java.nio包提供的一个特性—SocketChannel类;

SocketChannel channel=SocketChannel.open(new

InetSocketAddress(host,port));

因为channel(通道)并没有与之相关联的流,它所拥有的read和write方法时通过Buffer对象来实现的ReadableByteChannel和WriteableByteChannel接口都声明者两个方法。

如果不想处理缓存,可以使用Scanner类来读取信息,因为Scanner有一个带ReadableByteChannel参数的构造器:

Scanner in =new Scanner(channel);

通过调用静态方法Channels.newOutputStream(channel)获得输出流。

3)半关闭:

当客户端程序发送一个请求给服务器时,服务器必须能够确定该请求何时结束。断开与服务器的连接不像写一个文件时只需在数据写完后关闭文件即可,如果关闭一个套接字,那么僵立即断开与服务器的连接。

使用半关闭的方法就可以解决上述问题,不会立即与服务器断开。

半关闭:通过关闭一个套接字的输出流来表示发送给服务器的请求数据已经结束,保留输入流打开用以读取服务器返回的响应信息。

在客户端使用半关闭的代码如下:Socket socket=new Socket(host,port);

Scanner in=new Scanner(scoket.getInputStream);

PrintWriter writer=new PrintWriter(socket.getOutputStream())

writer.print(......);

writer.flush();

socket.shutdownOutput();//现在套接字是半关闭状态了

while(in.hasNextLine()!=null){String line=in.nextLine();......}

socket.close();

Android简单的登陆界面的设计开发

通信实训报告 -Android移动平台开发 学院:信息工程学院 班级: 学号: 姓名:

实训内容: 一.1.Andriod的简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread 和Android 3.0 Honeycomb。 Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。 2.Android构架图 二.1软件下载 Android SDK,网址是https://www.360docs.net/doc/903304423.html,. JDK的下载地址https://www.360docs.net/doc/903304423.html,/javase/downloads/widget/jdk6.jsp。Eclipse的下载网址是https://www.360docs.net/doc/903304423.html,/downloads/ 2.Android开发环境搭建

Android客户端缓存方案

概述: 客户端缓存机制是android应用开发中非常重要的一项工作,使用缓存机制不仅仅可以为用户节省3G流量,同时在用户体验方面也是非常好的选择. 缓存机制分为两部分,一部分是文字缓存,另一部分是多媒体文件缓存. 缓存文件保存策略: 1.文字缓存: 文字缓存应该分为两种,一种是更新比较频繁的区域,一种是更新不频繁的区域. 根据两者的更新频率区分它们的过期时间. 更新比较频繁的区域,它的缓存过期时间应该为应用程序内(即应用程序从打开到关闭的这段时间).这种情况会有专门的缓存文件夹存放该类缓存文件,以及专门的缓存数据库表存放信息.每次应用程序启动的时候都会先将该类数据清空. 另一种很少更新的区域,它的缓存不设置过期时间,而是提供一个按钮或者Menu可以让用户选择手动更新(如我的好友列表,我的订阅,我的分享.等等….) 具体的文字缓存划分,详见附录1. (1)通常情况下,我们与服务器交互都是采用JSON格式获取数据的,获取的JSON数 据仅仅是一段字符串,我们可以考虑将这些字符串使用文件流写入一个TXT,保存到 SD卡中,在数据库添加该数据的记录.添加数据库记录时,提供两个关键字段,一个是 请求的URL,另一个则是本地保存后的文件地址.日后每次向服务器发起请求之前都会根据URL在数据库中检索. 该方法好处:降低系统数据库数据量,不会出现数据库满了的现象. 缺点:IO操作频繁,有时代码书写有误会造成内存泄露等状况. (2)将JSON数据解析后装入List对象中,然后遍历List,将数据统统写入相应的 数据库表结构中,以后每次向服务器发起请求之前可以先在数据库中检索,如果有直接返回. 该方法好处:如果本地存在文字缓存,那么读取缓存速度快. 缺点:增加数据库数据量. 2.多媒体文件缓存 (1)图片缓存 图片的缓存可以根据当前日期,时间为名字缓存到SD卡中的指定图片缓存目录, 同时数据库中做相应记录,记录办法可以采用两个关键字段控制,一个字段是该图片 的URL地址,另一个字段是该图片的本机地址.取图片时根据URL在数据中检索, 如果没有则连接服务器下载,下载之后再服务器中作出相应记录. (2)视频文件缓存 考虑到视频文件就是动画片,每一集的大小应该超过20MB,如果边播放边下载的话 用户的3G流量负担是很大的,而且用户看完一集动画片,基本上不会再去看第二遍. 从这个状况来看,建议不要对视频文件进行下载缓存.另外也能降低程序员的编码负 担.

Android界面设计教程

这样的话就比较容易实现了,再看一下整体的Layout布局情况: xml布局文件如下:注意层次的嵌套。先是一个RelativeLayout,它有两个子布局,RelativeLayout和LinearLayout。

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:padding="10.0dip" android:singleLine="true" android:text="设置" android:textColor="@color/white" android:textSize="15dp" />

Android客户端与服务器数据交互流程

Android客户端与服务器数据交互流程 一个门户网站的制作的流程:首先,由网页设计师只做网页设计,即画出来网站在浏览器中显示的样子,然后由前端人员编写 Html+CSS+JS来实现网站的动态效果,比如说导航栏的下拉显示,然后Ajax的局部信息更新等,然后通过后台程序如JSP,PHP, .NET等语言将数据库中的信息与前台页面相结合,这样,一个站就这样被建好了。而Android客户端,也是有UI设计师,UI前端,程序构成的,同样程序这边的话,最近Html5+CSS3的火热开启,很多公司也需要html5+css3进行Android程序的开发了。呜呜,抢我的饭碗。虽然说哥也是懂html+css的。嘿嘿,这样解释的话,可能大家不清楚,其实木有必要弄清楚网站的建站过程,这里只是给大家普及一下知识,没必要弄清楚。 基础知识:我们需要知道,Http协议是基于TCP协议的,而TCP协议是一种有连接,可靠的传输协议,如果丢失的话,会重传。所以这样的话,就不会有数据的丢失了。而Http协议有三种方法,Get,Post,Head 方法,但是用的多的只有Get和Post方法,Get方法是将请求参数放在请求头中,所以请求的参数在URL中可见,而Post方法是将请求参数放在数据部分,所以在URL中不可见,Post相对来说保密,所以在提交重要信息的时候,用的都是HttpPost方法来实现的. 而在B/S模式中,B代表浏览器,S代表服务器,在浏览器和服务器的通信之中,因为B/S之间不会一直保持连接,所以才会加入Cookie 机制,来辨认所操作的对象。用户浏览网页的操作如下:当用户点击

一个连接或者一个按钮的时候,浏览器通过发送一个请求给服务器,然后由服务器接收该请求,然后解析到用户请求的是哪些内容,然后查找到相关资源,再将数据返回给浏览器,由浏览器解析数据,然后显示给用户看到用户所需要看到的页面。所以,Android和B/S模式差不多,其实也就是发送请求,接收数据,然后解析数据,显示到手机上的过程,没什么太大的区别,谁让咱用的是互联网,用的是TCP/IP 协议呢,是吧。要理解是:所有的操作都是向服务器请求数据的过程。 hp文件,然后浏览器会将php文件解析成为html然后显示在浏览器上显示。

基于Android系统的App界面设计

基于Android系统的App界面设计 智能手机时代的来临改变了大多数人的生活习惯,时至今日智能手机已经成为了人们工作生活中的一部分,在工作生活中发挥着重要的作用。App作为智能手机应用程序的核心,构建以用户体验为核心的页面设计是智能手机App设计的核心与要点,同时也是满足用户使用需求的重要途径与方式。现今的智能手机App主要分为IOS与Android两大市场,与IOS的封闭不同的是Android系统具有极强的开放性,而这一开放性在为Android系统App带来无限可能的同时也使得基于Android系统所开发的App界面本身缺乏统一的规范,从而造成基于Android系统所开发的App界面具有极大的开放性。新时期为做好基于Android 系统App的设计需要从情感、认知以及感官三个层面入手做好基于Android系统的App界面的开发设计,使之具有良好的用户使用体验。 标签:Android系统;App;界面设计 Abstract:The advent of the smart phone era has changed the habits of most people. Today,smart phone s have become a part of people’s work and life,and play an important role in the work and life. As the core of smart phone applications,App plays an important role in the work and life. The design of page based on user experience is the core and key point of the App design of smart phone,and it is also an important way and way to meet the needs of users. Today’s smartphone App is mainly divided into IOS and Android two major markets,Different from the closure of IOS,Android system has a very strong openness,and this openness not only brings infinite possibility to App of Android system,but also makes the App interface based on Android system lack of unified specification. As a result,the App interface based on Android system is very open. In order to do well the design of App based on Android system in the new period,it is necessary to develop and design the App interface based on Android system from the three aspects of emotion,cognition and sense organ,to make it have a good user experience. Keywords:Android system;App;interface design 前言 Android系统是与IOS系统所并行的应用于智能手机中的两大智能系统,在基于Android系统App界面开发的过程中受多种因素的影响使得一些App的界面具有很大的不协调性,从而影响了广大用户的使用体验。本文在分析影响智能手机App界面设计因素的基础上对如何做好基于Android系统的App界面设计进行分析阐述。 1 影响智能手机App界面设计的因素分析 智能手机App是智能手机的灵魂,用户结合自身需求可以下载安装自身所

Android客户端与服务器数据交互流程

A n d r o i d客户端与服务器数 据交互流程 标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

Android客户端与服务器数据交互流程 一个门户网站的制作的流程:首先,由网页设计师只做网页设计,即画出来网站在浏览器中显示的样子,然后由前端人员编写 Html+CSS+JS来实现网站的动态效果,比如说导航栏的下拉显示,然后Ajax的局部信息更新等,然后通过后台程序如JSP,PHP, .NET等语言将数据库中的信息与前台页面相结合,这样,一个站就这样被建好了。而Android客户端,也是有UI设计师,UI前端,程序构成的,同样程序这边的话,最近Html5+CSS3的火热开启,很多公司也需要html5+css3进行Android程序的开发了。呜呜,抢我的饭碗。虽然说哥也是懂html+css的。嘿嘿,这样解释的话,可能大家不清楚,其实木有必要弄清楚网站的建站过程,这里只是给大家普及一下知识,没必要弄清楚。 基础知识:我们需要知道,Http协议是基于TCP协议的,而TCP协议是一种有连接,可靠的传输协议,如果丢失的话,会重传。所以这样的话,就不会有数据的丢失了。而Http协议有三种方法,Get,Post,Head方法,但是用的多的只有Get和Post方法,Get方法是将请求参数放在请求头中,所以请求的参数在URL中可见,而Post方法是将请求参数放在数据部分,所以在URL中不可见,Post 相对来说保密,所以在提交重要信息的时候,用的都是HttpPost方法来实现的. 而在B/S模式中,B代表浏览器,S代表服务器,在浏览器和服务器的通信之中,因为B/S之间不会一直保持连接,所以才会加入

Android的UI设计

UI设计9要素: Do: ◆为高分辨率的屏幕创建资源(缩小总比放大好) ◆需要点击的元素要够大 ◆图标设计遵循 Android 的准则 ◆使用适当的间距(margins, padding) ◆支持D-pad和trackball导航 ◆正确管理活动(activity)堆栈 ◆正确处理屏幕方向变化 ◆使用主题/样式,尺寸和颜色资源来减少多余的值 ◆和视觉交互设计师合作! UI设计5不要 Don’t: ◆不要照搬你在其它平台的UI设计,应该让用户感觉是在真正使用一个 Android 软件,在你的商标显示和平台整体观感之间做好平衡 ◆不要过度使用模态对话框 ◆不要使用固定的绝对定位的布局 ◆不要使用px单位,使用dp或者为文本使用sp ◆不要使用太小的字体 4则Android UI的设计哲学: ◆干净而不过于简单 ◆关注内容而非修饰 ◆保存一致,让用户容易投入其中,可附加少许变化 ◆使用云端服务(存储和同步用户资料)来加强用户体验 优秀界面的设计5条准则: ◆关注用户 ◆显示正确的内容 ◆给予用户适当的回馈

◆有章可循的行为模式 ◆容忍错误 设计需要考量的8地方: ◆屏幕的物理尺寸 ◆屏幕密度 ◆屏幕的方向(竖向和横向) ◆主要的UI交互方式(触屏还是使用D-pad/trackball) ◆软键盘还是物理键盘 ◆了解不同设备之间的相异之处是非常重要的! ◆阅读CDD,学习设备可能差异的地方 ◆了解屏幕尺寸和密度分类 TextView重要属性: RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘 android:layout_alignParentTop 贴紧父元素的上边缘 android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物 第二类:属性值必须为id的引用名“@id/id-name” android:layout_below在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边 android:layout_toRightOf 在某元素的右边 android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐 android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐 android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐 第三类:属性值为具体的像素值,如30dip,40px android:layout_marginBottom 离某元素底边缘的距离

移动客户端Android开发规范

移动客户端开发规范之Android 一、编码规范 (1)常量命名:只能包含字母和_,字母全部大写,单词之间用_隔开。 单词名称要能体现变量的逻辑说明。 (2)变量命名:变量类型简称+变量逻辑名称 变量类型:String=str;Integer=int;Boolean=bool; (3)控件命名:控件类型简称+逻辑名称 控件类型:LayoutView:lv RelativeView:rv Button:btn TextView:tv ImageView:iv EditText:et …………… (4)Activity命名及对应的页面命名 Activity命令:逻辑名称(首字母大写)+Activity 页面命令:逻辑名称(小写,跟Activity的逻辑名称同名,单词间用_分隔)+.xml (5)Strings.xml中的id命名 对于针对特定Actvity命名:activity名称_逻辑名称(小写) 其它命名:strings_逻辑名称(小写) (6)包的命名 规则:com.al.ec+.应用程序名称+.目录分类(全部小写)

二、版本控制 (1)采用代码管理工具,进行代码的管理。如:SVN 代码在完成一个大版本的时候,需对此大版本打标签,以方便下次可以快速取出代码。 代码提示,需注明开发或修改了什么内容。 (2)程序的文件头注释按以下格式 /** * 亚信联创电信EC产品部 * * @author翁德辉 * @date 2012-04-05 * @Description: 基类,用于集合页面的常用操作 * @version V1.0 */ 如果有修改需在其下面写明修改日期,修改人,修改内容。 (3)函数或过程的注释按以下格式 /** * 函数或过程说明 * * @param参数名:参数说明 */ (4)对于变量需要在变量上面对变量进行注解。 // 弹出选号 private AlertDialog dialogNumber = null; (5)在eclipse进行开发当中,可以使用Ctrl+Shit+F对代码按格式排版 可以使用CTRL+SHIFT+O对不需要的引用类进行去除。

android UI界面设计

Android UI开发专题(一) 之界面设计 发帖日期:2010-02-09 10:49:28 标签:ophone 近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露。本次主要涉及以下四个包的相关内容: android.content.res 资源类 android.graphics 底层图形类 android.view 显示类 android.widget 控件类 一、android.content.res.Resources 对于Android平台的资源类android.content.res.Resources可能很多网友比较陌生,一起来看看SDK上是怎么介绍的吧,Contains classes for accessing application resources, such as raw asset files, colors, drawables, media or other other files in the package, plus important device configuration details (orientation, input types, etc.) that affect how the application may behave.平时用到的二进制源文件raw、颜色colors、图形drawables和多媒体文件media的相关资源均通过该类来管理。 int getColor(int id) 对应res/values/colors.xml Drawable getDrawable(int id) 对应res/drawable/ XmlResourceParser getLayout(int id) 对应res/layout/ String getString(int id) 和CharSequence getText(int id) 对应 res/values/strings.xml InputStream openRawResource(int id) 对应res/raw/ void parseBundleExtra (String tagName, AttributeSet attrs, Bundle outBundle) 对应res/xml/ String[] getStringArray(int id) res/values/arrays.xml float getDimension(int id) res/values/dimens.xml 二、android.graphics.Bitmap 作为位图操作类,Bitmap提供了很多实用的方法,常用的我们总结如下: boolean compress(https://www.360docs.net/doc/903304423.html,pressFormat format, int quality, OutputStream stream) 压缩一个Bitmap对象根据相关的编码、画质保存到一个OutputStream中。其中第一个压缩格式目前有JPG和PNG void copyPixelsFromBuffer(Buffer src) 从一个Buffer缓冲区复制位图像素

一步步教你为网站开发Android客户端

一步步教你为网站开发Android客户端 注:本文来自友盟-安卓巴士教程大赛第一名获奖作品,作者安卓巴士的ID为liupeinye。推荐给所有刚刚开始接触Android开发的朋友们! 本文面向Android初级开发者,有一定的Java和Android知识即可。 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView 背景介绍:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。而android 系统上的90%客户端软件都有一个共性,就是为了改善网页在android系统上体验不佳而生,最具有影响力的软件有:新浪微博、人人网、淘宝等,这类软件最突出的特点就是,先有网站再有软件。由于网络技术发展的多样性,手机浏览器往往无法跟随它的步伐,为改善用户体验,网站客户端软件印运而生。 以下内容100%原创,并在安卓巴士论坛首发,如需转载,请注明作者和出处。谢谢合作。 开发Android网站客户端通常有两种方法:第一种,通过服务端的开放平台,调用提供的API接口来开发,比如说open sina;第二种,服务端没有提供任何接口,你也没有服务端任何数据库访问权限,就是一个纯纯粹粹的网站,要你做客户端。今天,我要和大家分享的正是第二种情况。 这是一个简单的示意图,告诉我们,数据是由网页从数据库中取出,我们要为这个系统做客户端,我们就应该这样去改造它。

通过这样间接的方法来访问数据库,只要网页能看到的内容,我们的客户端都能获取到,而UI是由你自行制作,就可以使使用体验上一个台阶。 既然网页是我们的数据枢纽,我们就从网页分析着手。 该教程来自本人项目-掌上民大-真实经验,所以用项目中的”掌上图书馆”板块来示范。 该项目任务为中南民族大学图书馆图书查询功能制作客户端。 首先打开该网址https://www.360docs.net/doc/903304423.html,/,我们会看到主界面

Android课程设计

移动互联网开发 课程设计报告 学生姓名:余安慧学号:031440407 专业:计算机科学与技术班级:0314404 设计题目:茶百科 学年学期:2016 年秋季学期 指导教师:张华

目录 一、设计题目 (1) 二、设计目的 (1) 三、设计原理及方案 (1) 1使用的软件工具和环境 (1) 2需求分析与概要设计 (2) 3数据库设计 (3) 4详细设计和关键问题 (5) 四、实现效果 (13) 五、设计体会 (16) 参考文献 (17)

一、设计题目 茶百科 二、设计目的 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。因此,手机的应用服务将会有很大的发展空间,手机茶百科软件就是其中的一项。Android平台提供给用户非常方便的茶百科查询功能,这将为茶百科查询服务的设计与实现提供了更好的平台。另外,Android平台基本上是免费的,所以能够有效降低软件的成本,最终让每个用户能够自由地获取信息,也为手机茶百科查询服务的普及做出贡献。 本文对目前应用的Symbian、WindowsMobile、MacOSX和RIM等平台的现状进行了分析与比较。进而研究分析了Android平台的系统架构和组件模型,接着解析了Android中的重要API 和应用构成。主要应用了数据库,碎片,图片缓存等技术,在此基础上,基于Android平台设计和开发手机茶百科查询软件。本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户的基本需求。 通过设计开发茶百科安卓客户端,综合训练安卓系统开发能力,进一步提升对安卓程序开发及运行的理解和认识,复习、巩固java语言的基础知识,进一步加深对java语言的理解和掌握,搭建一个完整的安卓开发环境。为学生提供了一个既动手又动脑,独立实践的机会,开发出界面与功能都有特色的安卓应用软件。 三、设计原理及方案 1使用的软件工具和环境 (1)PC计算机 (2)JDK安装包:JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上 的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库 (3)Eclipse安装包:是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言, 它只是一个框架和一组服务,用于通过插件组件构建开发环境 (4)Android SDK安装包:Android SDK 指的是Android专属的软件开发工具包 (5)ADT插件:使用Eclipse进行android应用开发需要给Eclipse装ADT件,这样Eclipse 就可以和android sdk建立连接

Android手机客户端和服务器交互开发实例

本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。 AD:笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。 首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码: 首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下: 1. 2. 3.result 4. 5. 6. 7. 8. 9. result 10. 11. 手机端的代码如下: 首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的: 1.packagecom.jclick.cache; 2. https://www.360docs.net/doc/903304423.html,er; 4. 5.publicclassCache{ 6. 7.privateUserUser; 8. 9.privateCache(){ 10. 11.} 12./**构造单例*/ 13.Private static class CacheHolder{ 14.Private static final CacheINSTANCE=newCache(); 15.} 16.Public Cache getInstance(){ 17.returnCacheHolder.INSTANCE; 18.} 19.publicUsergetUser(){

实验2 android的界面设计(控件与布局)

实验2 android的界面设计(控件与布局) 学时:4学时 一、实验目的: 1、了解Android编程原理 2、掌握界面控件设计 3、了解和熟悉常用控件的使用、界面布局等内容。 二、实验内容: 1.基本控件的制作: (1)TextView的制作: a)体会Autolink,依次更换属性:web/phone/all/email/ b) 制作跑马灯效果 android:ellipsize 设置当文字过长时,该控件该如何显示。有如下值设置:”start”—-省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee”——以跑马灯的方式显示(动画横向移动) android:marqueeRepeatLimit 在ellipsize 指定marquee 的情况下,设置重复滚动的次数,当设置为marquee_forever 时表示无限次。 android:focusableInTouchMode:是否在触摸模式下获得焦点。 android:focusable 控件是否能够获取焦点 (2)EditView制作 (a) maxLength:最大输入长度属性

(b) singleLine:多行文本框 (c) inputType:限制输入文本类型 (d) hint:设置提示信息 2.布局设计 (1) LinearLayout布局: (2)Relative Layout:

(3)Table Layout 3.建立一个如图所示的图形界面:

4.用ListView制作如图界面(图片自定) (将该题以你的学号命名,发给你班的学习委员,以班为单位统一发给我,我的邮箱为:610083060@https://www.360docs.net/doc/903304423.html,): 5.用expandablelistview制作如下界面:

android客户端在多个界面切换时保持socket的链接

android客户端在多个界面切换时保持socket的链接 研究一个socket在多个界面切换时保持链接的问题,现在我提供客户端的源码给有需要的人参考。 1、ApplicationUtil类: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import https://www.360docs.net/doc/903304423.html,.Socket; import https://www.360docs.net/doc/903304423.html,.UnknownHostException; import android.app.Application; public class ApplicationUtil extends Application{ private Socket socket; private DataOutputStream out = null; private DataInputStream in = null; public void init() throws IOException, Exception{ this.socket = new Socket("192.168.1.104",10202); this.out = new DataOutputStream(socket.getOutputStream()); this.in = new DataInputStream(socket.getInputStream()); } public Socket getSocket() { return socket; } public void setSocket(Socket socket) { this.socket = socket; } public DataOutputStream getOut() { return out; } public void setOut(DataOutputStream out) { this.out = out; }

Android人机界面设计规范

Android 人机界面设计规范 1Android 设计的依据 1.1 框架结构及流程 是什么使得android 有着独特的用户体验? 后台处理支持多任务功能 正在进行和事件驱动的提示信息 通过Widgets 和live folders 来实现实时信息的预览 用户想用时,任一应用程序都可以挑选和选择 android 不是关于程序的,它是关于活动,把任务分层, 1.2 架构基础 硬件平台 android 设备代表的是硬件和软件的完美组合。硬件辅助导航操作,并给android 提供更多更好的功能。当菜单没有开启,要把屏幕最大化时,菜单按钮可以在屏幕上提供更多的内容。返回按钮允许使用返回堆(back stack)。 竖屏与横屏 一般来说,用户界面开发竖屏与横屏。在新横屏也仍存在于新的Android 手机中。99%的android 布局支持横屏。 焦点和菜单 在触摸模式里没有焦点,只有轨迹球。Android 平台里没有鼠标焦点。确定你从未显示焦点。主菜单应该包括全部功能;它们与活动联系一起形成整体。菜单上的图标按重要性排序。如果有多于5 个图标,使用点击more menu 菜单来查看那些不太重要的菜单项。上下文菜单(长按)集中在一个特定对象。 总是把那些与所选项最相关的行为放在长按菜单的顶部。 需要记住的几点: 设计时要考虑速度和简洁 尽量分层来分等级 屏幕上的活动尽量最小 使用下载进度条,下载数据时,而不是让用户等待去看一个加载完全的页面。 考虑活动流而不是线性行为 1.3 屏幕上的行为

android 设计了特定的行为方式。在你的应用程序里利用好这一点。应该坚持android 行为的标准,避免混淆用户。 1.4 表达 细节使得产品集中在细节。程序的美学会帮助你集中注意在那些应用体验核心的关键任务上。API DEMO 是开始你的工具包的好地方。 2 用户界面原则 这部分试图讲述创造一个好的用户界面的一些基本的交互设计原则。这些原则是基本的,不止能应用于android 的用户界面设计,也可以应用于其他。苹果建议开发者花费60%的开发时间来进行设计工作。下面的用户界面原则将为好的设计提供一个基础。 2.1 隐喻 隐喻是构建一个基于操作任务心智模型的模块;用它们来传递应用程序的概念和功能。基于真实世界的应用对象可以帮助用户很快的理解该应用程序。当你设计你的应用程序时,要注意andriod 中存在的隐喻,不要重新定义它们。同时,检查你的应用程序执行的任务,看是否有些自然隐喻你可以使用。 2.2 反映用户的心智模型 用户已经有了一个来描述你的程序正在进行的任务的心智模型。这个心智模型产生于真实世界经验、其它软件和一般电脑基本知识的结合。比如说,用户在真实世界里有写字、寄信的经验,也会产生特定的期待,像写一封新的信,选一个接受者,然后寄出信。一个忽略用户心智模型的电子邮件程序用起来会很困难和不舒服。这是因为程序强加给用户一个不熟悉的概念模型,而不是建立一个用户已有的知识经验模式。 在设计程序用户界面之前,试着去发现你的用户的心智模型,这样帮助用户去执行任务。心智模型中内在的隐喻,它代表了任务的概念组成。在写信这个例子中,隐喻包括信件、邮包和信封。在涉及到照片的任务的思考模式中,隐喻包括照片、照相机和专辑。我们要努力地发现用户的期望,包括任务组成、组织、窗口布局的工作流、菜单和工具栏组织、控制面板的使用。 要通过努力地何必把个下面的特征与用户心智模型相融合: 熟悉性 用户的心智模型主要是建立在经验的基础上 简单化 一项任务的心智模型通常是流线型,关注任务的基本组成部分。尽管对于一个给定的任务有很多可选的细节,但是基本的组成部分占大部分,并且不会占用用户的注意。 可利用性Availability

Android手机客户端与Web服务器的通信

1.Android手机访问Web服务器 大多数中间件技术开发人员熟悉如何用计算机浏览器访问互联网,浏览器的主要作用是给互联网的Web服务器提交数据、验证数据和解析显示数据。其工作原理是通过Http协议.提交数据用GET或者POST方法,客户端的数据通过浏览器网页提交给web应用服务器,应用服务器通过Web页面接收各种不同类型数据,将数据通过服务器的Servlet子类Http Servlet对象提交给服务器端处理逻辑.服务器逻辑将接收到的数据按照客户端的要求在Web服务器端进行运算,再将运算的结果返回给客户端浏览器进行解析和显示。这里关键是Web服务器端的Servlet.它是服务器和客户端交互据的服务器端端口,即所有客户端的数据都要通过Servlet提交给Web服务器.所有要返回给客户端的数据都要通过Web服务器端的Servlet响应给客户端。在实际应用的服务器端,创建Servlet的子类对象HttpServlet (HttpServletRequest和 HttpServletResponse),分别用来接收客户端的数据和将数据返回给客户端。现在的问题就在Android手机终端.如何能够把客户的数据通过手机界面提交给Web服务器? Android 手机终端访问Web服务器的技术架构是怎样的?又如何能够在手机终端把web服务器响应的数据按照服务器的不同数据类型恢复原型?这就是下面要解决的问题。 1.1 手机客户端向Web应用服务器发送请求信息 以实际开发的Android手机终端登录功能为案例介绍如何利用Sun公

司提供的 java 数据流和过滤流结合Android提供的API提取Web服务器端不同类型的数据。 1) 首先引用所需要的各种API在Android手机终端开发应用程序时.首先需要利用Google和Sun公司提供的必要类包(API),包括http 通信协议类org.apache.http,*消息类org.apache.http.Message.*数据流类java.io.*android.app.Activity等。 2)定义访问网站的URL 3)创建Android程序界面类创建一个手机界面,需要继承Android提供的Activity,在该类中创建提交给Web服务器的数据的 H ttpPost 对象。覆盖Activity类的方法on—Create(Bundle b),创建事件监听器OnClickListener对象,在其中实现 onClick(View v)方法,再把该事件监听器注册到相应的事件源 loginB utton上。 4)创建HttpPost对象HttpPost对象的主要作用是将Android手机端的数据提交给Web应用服务器,为此Android提供了很好的AP I.这里就利用Android和Sun公司提供的这些类把需要提交给服务器的数据(NameValuePair对象)保存到一个List对象中。 5 )设置数据编码方式Android手机在将准备好的数据发送到Web服务器之前,需要对数据的编码进行规定,这样服务器在接收到这些数据后,就会根据发送过去的文字编码处理和显示。 6 ) 提交HttpPost对象和获取服务器HttpResponse响应数据完成

相关文档
最新文档