摘要: 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用 层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定 义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 1) Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层。 而http是个应用层的协议,它实际上也建立在TCP协议之上。(HTTP是轿车,提供了封装或者显示数据的具体形式;Socket. 阅读全文
posted @ 2012-05-11 12:16 精灵博客园 阅读(198) 评论(0) 推荐(0) 编辑
摘要: HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。 1.Get是从服务器上获取数据,Post是向服务器传送数据。GET 用于信息获取,是安全的和幂等的。安全的意味着该操作用于获取信息而非修改信息,幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。 2.GET请求请提交的数据放置在HTTP请求协议头中,附加在url之后,以?分开与url分开;而POST提交的数据则放在实体数据中,即在HTML HEADER内提交。 3.GET方式提交的数据最多只能有1024字节,而POST则没有此限制。 4.安全性问题。使用 Get 的时... 阅读全文
posted @ 2012-05-11 12:15 精灵博客园 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 1.概念 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。 除此之外,在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发... 阅读全文
posted @ 2012-05-11 12:15 精灵博客园 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 引言 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。HTTP协议的主要特点是: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。类型由Content-Type加以标记。 4.无连接:即每次连接只处理一个请求,处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:无状态是指协议对于事务处理没有记忆能力。 http1.0协议默认的... 阅读全文
posted @ 2012-05-11 12:14 精灵博客园 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1.引言 所谓的消息推送就是从服务器端向移动终端发送连接,传输一定的信息。比如一些新闻客户端,每隔一段时间收到一条或者多条通知,这就是从服务器端传来的推送消息;还比如常用的一些IM软件如微信、GTalk等,都具有服务器推送功能。 推送方法如下: 1)通过SMS进行服务器端和客户端的交流通信。 在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,且依赖于运营商。 2)循环主动定时获取 这种方法需要客户端来做一个定时或者周期性的访问服务器端接口,以获得最新的消息。轮询的频率太慢可能导致某些消息的... 阅读全文
posted @ 2012-05-11 12:13 精灵博客园 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 1.简介 AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。该项目地址位于:http://code.google.com/p/achartengine/。关于里面类的具体使用,请下载响应的文档说明(主页上有)。2.开发步骤1)在工程中新建一个文件夹比如lib,用于存放ACE Libraries,把achartegine-0.5.0.jar包复制到lib里面。然后把这个jar的路径添加到项目的Build Path中。2)修改AndroidManifest.xml 主要.. 阅读全文
posted @ 2012-05-11 12:12 精灵博客园 阅读(436) 评论(0) 推荐(0) 编辑
摘要: Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。 所有的布局方式都可以归类为ViewGroup的5个类别,即ViewGroup的5个直接子类。其它的一些布局都扩展自这5个类。1.LinearLayout,线性布局方式 这种布局比较常用,也比较简单,就是每个元素占一行,当然也可能声明为横向排放,也就是每个元素占一列。 LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一 个N行单列的结构,每一行只会有一个元素... 阅读全文
posted @ 2012-05-11 12:11 精灵博客园 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 1.概念 盛放Tab的容器就是TabHost。TabHost的实现有两种方式: 第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。 第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。2.案例1)继承TabActivityres/layout/main.xml<?xml version="1.0" 阅读全文
posted @ 2012-05-11 12:11 精灵博客园 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1.概念:在开发一些复杂界面,尤其是开发平板电脑页面时,界面布局往往比手机布局 复杂很多。此时就需要用到嵌套布局。同时为了达到某种效果,需要局部的页面能够动态的变化,最典型的就是在一个页面中使用多个ViewPager。当这些 ViewPager所在的页面也是动态变化的时候,就需要实现多层LinearLayout的嵌套。比如一个标签页面,头部是静态的,内容部分是动态变化 的,同时每个内容中又需要动态变化,代码实现时就需要通过多次添加来实现。 2.下面是一个简单的案例(该案例只是实现了多层嵌套的添加,如果需要实现动态的添加效果,只需通过控制条件改变每次添加的内容即可。) PadTestAc... 阅读全文
posted @ 2012-05-11 12:10 精灵博客园 阅读(289) 评论(0) 推荐(0) 编辑
摘要: import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;public 阅读全文
posted @ 2012-05-11 12:09 精灵博客园 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 一、NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于 AndroidSDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在AndroidSDK首次发布 时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台 上,“Java+C”的编程方式是一直都可以实现的。 不过,Google也表示,使用原生SDK编程相比Dalvik虚拟机也有一些劣势,AndroidSDK文档里,找不到任何JN.. 阅读全文
posted @ 2012-05-11 12:08 精灵博客园 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1)创建/** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); shortcut.putExtra("duplicate", false); //不允许重复创建 ... 阅读全文
posted @ 2012-05-11 12:08 精灵博客园 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对Android工程的编 译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么。那么我们就来挖掘一下Android的编译过程中的 细节。首先,我们假定你的系统(什么系统都行,不限于Linux还是Windows系统,当然,我在这里默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK。再假定你的Android SDK的路径是ANDROID_SDK_HOME,你想要编译的Android 阅读全文
posted @ 2012-05-11 11:36 精灵博客园 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。在移植的过程中,把握关键要点,减少工作量是一个重要的方面。从 工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系 统,也应该适当地了解上层对硬件抽象层的调用情况。 移植方面主要的工作有两个部分: Linux驱动 Android系统硬件抽象层 Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。 Android移植的... 阅读全文
posted @ 2012-05-11 11:36 精灵博客园 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 最近公司配置Android开发环境, Android SDK无论如何也更新不成功(google相关网站被屏蔽),试了各种方法,终于成功,解决方法就是修改 C:\Windows\System32\drivers\etc\hosts文件。在文件的最后添加一行:74.125.237.1 dl-ssl.google.com 这里需要注意的是hosts文件是只读的,我们没有权限修改,需要我们将hosts文件复制到桌面或者其他地方,然后修改保存,复制修改后的hosts文件到 C:\Windows\System32\drivers\etc 目录,替换文件就好! 这样修改的原因是:dl-s... 阅读全文
posted @ 2012-05-11 11:35 精灵博客园 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。一直以来都有人在猜测,选择基于寄存器的 方式是因为它对提前优化(ahead-of-time optimization)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的。 Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik应用作为一个独立的Linux进程执行。 每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在... 阅读全文
posted @ 2012-05-11 11:35 精灵博客园 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC、Motorola和Samsung等知名厂商只要使用电容屏触控 原理的手机均可以支持多点触控Multitouch技术,对于网页缩放、手势操作上有更好的用户体验。 在Android平台上事件均使用了MotionEvent对象方式处理,比如开始触控时会触发ACTION_DOWN,而移动操作时为 ACTION_MOVE,最终放开手指时触发ACTION_UP事件。当然还有用户无规则的操作可能触发ACTION_CANCEL这个动作。 需要注意的是:Android的多点触控功能需要运行在Android 2... 阅读全文
posted @ 2012-05-11 11:34 精灵博客园 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 在SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为Android Debug Bridge,就是调试桥的作用 在SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为Android Debug Bridge,就是调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。 adb的工作方式比较特殊采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运 阅读全文
posted @ 2012-05-11 11:33 精灵博客园 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 在SDK的Tools文件夹下包含着Android模拟器操作的重要命令ADB,ADB的全称为Android Debug Bridge,就是调试桥的作用,借助这个工具,我们可以管理设备或手机模拟器的状态,还可以进行以下的操作:(1)快速更新设备或手机模拟器中的代码,如应用或Android系统升级;(2)在设备上运行Shell命令;(3)管理设备或手机模拟器上的预定端口;(4)在设备或手机模拟器上复制或粘贴文件。ADB的工作方式比较特殊采用监听Socket TCP 5554等端口的方式让IDE和Qemu通信,默认情况下ADB会daemon相关的网络端口,所以当我们运行Eclipse时ADB进程就会自 阅读全文
posted @ 2012-05-11 11:33 精灵博客园 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 用 Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的; 2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”; 3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息; 4. 点击选中想要监测的进程,比如system_process进程; 5. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标; 6. 点击Heap视图中的“Cause ... 阅读全文
posted @ 2012-05-11 11:32 精灵博客园 阅读(157) 评论(0) 推荐(0) 编辑