- 浏览: 1018416 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
Android 基于 Linux® 内核,包含一组优秀的联网功能。如果尚未安装 Android SDK,那么需要 下载 它才能实践本文的示例。
表 1 展示了 Android SDK 中一些与网络有关的包。
java.net | 提供与联网有关的类,包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。该包是一个多功能网络资源。有经验的 Java 开发人员可以立即使用这个熟悉的包创建应用程序。 |
java.io | 虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他 Java 包中提供的 socket 和连接使用。它们还用于与本地文件(在与网络进行交互时会经常出现)的交互。 |
java.nio | 包含表示特定数据类型的缓冲区的类。适合用于两个基于 Java 语言的端点之间的通信。 |
org.apache.* | 表示许多为 HTTP 通信提供精确控制和功能的包。可以将 Apache 视为流行的开源 Web 服务器。 |
android.net | 除核心 java.net.* 类以外,包含额外的网络访问 socket。该包包括 URI 类,后者频繁用于 Android 应用程序开发,而不仅仅是传统的联网方面。 |
android.net.http | 包含处理 SSL 证书的类。 |
android.net.wifi | 包含在 Android 平台上管理有关 WiFi(802.11 无线 Ethernet)所有方面的类。并不是所有设备都配备了 WiFi 功能,特别是 Android 在 Motorola 和 LG 等手机制造商的 “翻盖手机” 领域获得了成功。 |
android.telephony.gsm | 包含用于管理和发送 SMS(文本)消息的类。一段时间后,可能会引入额外的包来来为非 GSM 网络提供类似的功能,比如 CDMA 或 android.telephony.cdma 等网络。 |
上表并没有列出所有包,但是可以让您清楚地意识到该平台的强大功能。下一小节将介绍一些简单的网络示例。
![]() ![]() |
![]()
|
为了演示将 Android 连接到一个网络有多么简单,这个示例将展示如何从 Web 页面发送文本。可以 下载 本例的源代码。图 1 展示了应用程序的实际使用。
本节提供了构建示例应用程序所需的代码。我们将首先查看 UI 部分,然后介绍与网络有关的代码。
共有三个 UI 元素:
- EditText 让用户能够进入一个 Web 页面(图 1 和 清单 2 所示的 http://developer.android.com)。
- 使用一个按钮告诉程序取回 Web 页面文本。
- 检索回数据后,它将显示在 TextView 中。
清单 1 展示了 main.xml 文件,这是该应用程序的完整 UI 布局。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:layout_height="wrap_content" android:id="@+id/address" android:layout_width="fill_parent" android:text="http://google.com" > </EditText> <Button android:id="@+id/ButtonGo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="go!" > </Button> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:textColor="#000000" android:id="@+id/pagetext" /> </LinearLayout> |
清单 2 展示了本示例使用的 Java 代码。
package com.msi.getwebpage; import android.app.Activity; import android.os.Bundle; // used for interacting with user interface import android.widget.Button; import android.widget.TextView; import android.widget.EditText; import android.view.View; // used for passing data import android.os.Handler; import android.os.Message; // used for connectivity import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; public class GetWebPage extends Activity { /** Called when the activity is first created. */ Handler h; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText eText = (EditText) findViewById(R.id.address); final TextView tView = (TextView) findViewById(R.id.pagetext); this.h = new Handler() { @Override public void handleMessage(Message msg) { // process incoming messages here switch (msg.what) { case 0: tView.append((String) msg.obj); break; } super.handleMessage(msg); } }; final Button button = (Button) findViewById(R.id.ButtonGo); button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { try { tView.setText(""); // Perform action on click URL url = new URL(eText.getText().toString()); URLConnection conn = url.openConnection(); // Get the response BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = ""; while ((line = rd.readLine()) != null) { Message lmsg; lmsg = new Message(); lmsg.obj = line; lmsg.what = 0; GetWebPage.this.h.sendMessage(lmsg); } } catch (Exception e) { } } }); } } |
这些代码可以分解成一些常见的部分。这里使用一些重要(必需)的导入语句来恰当地引用 UI、数据传递以及应用程序中使用的与网络有关的类。所有与网络相关的代码出现在 OnClickListener
的 OnClick
方法中。在选择 图 1 所示的标签为 go!
的按钮之后调用这些代码。
URL
和 URLConnection
类共同提供与用户所选的 Web 站点的连接。BufferedReader
的一个实例负责从 Web 站点连接中读取传入的数据。每读取一行代码,文本就被附加到一个 TextView。数据并没有直接指定给 TextView(但是在本例中可以)。我们引入了一种设计模式,即创建一个消息对象并将该对象发送到一个处理程序的实例。这是更新 UI 的一种比较可取的方法,对可能需要同时运行多个线程的应用程序而言尤其如此。
在示例中,Android 应用程序与 HTTP Web 服务器进行通信,比如 Apache 或 Internet Information Server(IIS 位于 Microsoft® 服务器上)。如果应用程序直接与 TCP socket 对话,那么您将以不同的方式实现应用程序。清单 3 所示的代码片段展示了另一种与远程服务器交互的方式。这个清单被实现为一个单独的线程。
public class Requester extends Thread { Socket requestSocket; String message; StringBuilder returnStringBuffer = new StringBuilder(); Message lmsg; int ch; @Override public void run() { try { this.requestSocket = new Socket("remote.servername.com", 13); InputStreamReader isr = new InputStreamReader(this.requestSocket. getInputStream(), "ISO-8859-1"); while ((this.ch = isr.read()) != -1) { this.returnStringBuffer.append((char) this.ch); } this.message = this.returnStringBuffer.toString(); this.lmsg = new Message(); this.lmsg.obj = this.message; this.lmsg.what = 0; h.sendMessage(this.lmsg); this.requestSocket.close(); } catch (Exception ee) { Log.d("sample application", "failed to read data" + ee.getMessage()); } } } |
与前面的示例类似,上面的代码使用消息和处理程序方法来将数据发送给调用者,调用者将更新 UI 并执行后续处理。与 清单 1 不同,这个例子并没有与 HTTP 服务器通信,因此没有使用 URLConnection
类。相反,使用了较低级的 Socket
类在端口 13 打开与远程服务器的基于流的 socket 连接。端口 13 是典型的 “Daytime Server” 应用程序。
Daytime Server 接受传入的 socket 连接并以文本的形式将日期和时间发送给调用 socket。一旦发送完数据,服务器将关闭 socket。示例也展示了 InputStreamReader
的使用和一个特定字符编码。
发送文本消息是您需要使用 Android 完成的另一项任务。清单 4 展示了一个示例。
void sendMessage(String recipient,String myMessage) { SmsManager sm = SmsManager.getDefault(); sm.sendTextMessage("destination number",null,"hello there",null,null); } |
发送文本消息非常简单。首先,使用静态方法 getDefault()
获取对 SmsManager 的引用。然后调用 sendTextMessage
方法。参数为:
不管是连接到 Web 页面还是连接到定制 TCP 应用程序,Android 平台都可以立即反应并且能够提供帮助。如 清单 4 所示,发送文本消息非常简单。通过使用可选的 intent 参数,甚至可以在消息被发送并交付后采取操作。这是其他移动平台所不具备的强大特性。
发表评论
-
android屏幕适配
2012-11-16 17:24 2209屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2659可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2390在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3116private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3754<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1361TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2641设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1070刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1459最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1629屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1944首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1213要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3223看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2319所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3494直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3097好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2380问题描述: 用 Hessian 实现 web se ... -
理解 Android 本地数据存储 AP(转)
2011-05-18 14:25 1924样例应用程序 为了突出 Android 应用程序开发的本 ... -
Android 本地数据存储 API(二)(转)
2011-05-18 14:23 1999使用 SQLite 数据库 Android 通过 S ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2586为私有数据使用设备的内部存储器 有了数据存储 API ...
相关推荐
【使用Android实现联网】 在Android平台上,实现联网功能是一项关键任务,这使得应用程序能够与互联网交互,接收和发送数据。Android提供了丰富的API和工具来支持网络编程,使其成为开发联网应用的理想选择。以下是...
### Android开发从入门到精通6-使用Android实现联网 #### Android平台概述及联网特性 Android作为一款面向应用程序开发的丰富平台,不仅提供了出色的用户界面元素和数据管理功能,还为开发者构建连接到真实世界的...
"使用AndroidStudio开发Android App实现联网功能" 概述: 本文主要介绍使用Android Studio开发Android App实现联网功能的步骤和关键知识点。互联网功能是 Android App 的核心功能之一,本文将详细讲解如何使用...
此pdf是教学Android中联网的教程
【Android联网实现】 Android平台为开发者提供了丰富的网络功能,使其能轻松实现应用程序的联网功能。主要的联网方式包括使用WIFI和GPRS两种,适用于各种网络环境。Android平台的网络功能基于Linux内核,提供了多样...
6. **《使用 Android 实现联网.htm》**:联网是大多数Android应用的基本需求,这篇文档可能涵盖了Android的网络编程,包括HTTP请求、WebSocket通信、Socket编程,以及如何处理网络权限和网络状态的变化。 7. **《让...
在Android开发中,联网是一项基本且重要的技能,它使得应用能够获取远程数据、与服务器进行交互,从而实现各种丰富的功能。本教程将深入探讨“Android简单联网”的概念及其实践。 一、Android网络访问基础 1. 网络...
##### 使用Android实现联网 Android平台的强大之处,在于其丰富的网络选项。无论你是希望与全球分享你的想法,还是想获取本地商家的信息,Android都能提供所需的技术支持。本文将引导读者探索Android的网络功能,...
- **使用Android实现联网**:Android平台为开发者提供了丰富的网络功能,无论是社交媒体集成,如Twitter,还是本地服务查询,均可轻松实现。本文详解了如何将Android应用与现实世界连接,增强应用的实用价值。 - **...
- **使用Android实现联网**: - **网络选项**:介绍Android平台提供的各种网络连接选项。 - **实际应用场景**:比如通过Twitter分享信息或接收本地服务的通知等。 - **深入探讨Android传感器**: - **传感器种类...
本话题主要探讨了如何通过代码实现Android应用的联网优化,特别是针对线程池的管理和单例模式的应用。 首先,我们来看`HttpThreadPool.java`,这是一个可能实现了线程池管理的类。在Android中,频繁的网络请求可能...
文章《基于Android平台的车联网系统的设计与实现》主要介绍了设计并实现了一种基于Android平台的车联网系统。该系统设计的目标是通过收集和分析车辆运行数据以及周边环境信息,向驾驶员提供一系列便捷的服务功能,如...
本文将深入探讨如何在Android应用中实现这些功能,并基于提供的"Android例子源码使用百度定位和车联网天气查询"进行分析。 首先,我们要了解如何在Android应用中集成百度定位服务。百度定位SDK提供了丰富的接口,...
以上就是关于Android实现网络访问的基本知识,通过理解并掌握这些概念,开发者可以构建出能够有效与Web服务器进行通信的Android应用。在实际开发中,应根据项目需求选择合适的网络访问方式,并注意性能优化和用户...
此外,对于网络功能的实现,可能涉及到Android的网络编程,包括HTTP请求、WebSocket等网络协议的使用。 二、数独游戏逻辑 数独是一种逻辑推理游戏,APP的核心部分是实现数独的生成、解析和验证算法。这包括生成随机...
【Android OkHttp 联网框架详解】 OkHttp 是一个高效、强大且广泛使用的网络通信库,由 Square 公司开发并开源。它为 Android 应用程序提供了简单易用的 API,使得开发者能够轻松地进行 HTTP 请求和响应操作。...