使用互联网资源外文翻译资料

 2023-01-31 11:06:56

英语原文共 20 页,剩余内容已隐藏,支付完成后下载完整资料


使用Internet资源

主要内容

连接Internet 资源

解析XML资源

使用下载管理器下载

查询下载器

利用Account Manager对Google App Engine进行身份验证

本章介绍了Android的互联网连接模型和一些java技术解析网络数据。你将学会如何连接到Internet资源和如何使用SAX解析器和XML解析器解析XML资源。

一个地震监测实例将演示如何配合这些功能,并形成一个正在进行的例子,你将在以后的章节中提高和扩展的基础。

本章介绍了下载管理器,您将学习如何使用它来调度和管理长时间运行的下载。您还将学习如何定制它通知阳离子和查询下载内容提供商来决定你的下载状态。

最后,本章介绍了如何使用Account Manager完成认证从Google App Engine后端的请求。

6.1下载和解析互联网资源

Android提供了几种利用互联网资源的方法。在一个极端,你可以使用一个WebView在Activity包括一个基于WebKit浏览器。在另一个极端,你可以使用客户端的API,如谷歌的API,直接与服务器进程进行交互。在两者之间,你可以处理远程XML源提取和使用一个基于java的XML解析器处理数据,如SAX或XML解析器。

与互联网连接和一个WebKit浏览器,你可能会问,如果有任何理由来创建本地的基于互联网的应用程序时,你可以做一个基于Web的版本。

有许多的给付创建厚和瘦客户机的本地应用程序而不是依靠完全基于网络的解决方案:

带宽 对于带宽有限的设备而言,如图像,布局,和声音的静态资源昂贵的。通过创建一个本地应用程序,您可以限制更改数据的带宽要求。

缓存 基于浏览器的解决方案,一个不完整的网络连接会导致间歇性应用程序的可用性。本机应用程序可以缓存数据和用户操作没有生活提供尽可能多的功能连接和同步云连接恢复时。

减少电池消耗 每次打开一个应用程序连接到服务器无线电台将打开(或保持打开)。本机应用程序包的连接,最小化发起的连接数量。之间的时间越长,网络请求,可以离开无线广播的时间越长。

本地功能 Android设备不仅仅是简单的平台运行一个浏览器。小部件,包括基于位置的服务,Notifications,微件,摄像头硬件,背景服务和硬件传感器。通过创建一个本地应用程序,您可以组合这些数据设备上的硬件特性提供在线提供更丰富的用户体验。

现代移动设备提供一个替代的数量来访问互联网。一般来说,Android提供了两个连接互联网连接的技术。每种技术都是透明的提供给应用程序层。

移动互联网 GPRS、EDGE、3 G、4 G、LTE网络是可以通过运营商提供移动数据。

Wi-Fi Wi-Fi接收器和移动热点正变得越来越普遍。

如果在应用程序中使用网络资源,请记住,你的用户的数据连接依赖于通信技术。EDGE和GSM是出了名的低带宽连接,而一个wi-fi连接可能是不可靠的

手机设置。

优化用户体验通过限制数据传输和确保您的数量足够健壮应用程序来处理网络中断和带宽限制。

6.1.1连接到网络资源

您可以访问互联网资源之前,您需要添加一个互联网uses-permission节点应用程序清单,如以下所示的XML代码片段:

lt;uses-permission android:name=”android.permission.INTERNET”/gt;

清单6 - 1显示了开放网络数据流的基本模式

清单6 - 1:打开一个网络数据流

String myFeed = getString(R.string.my_feed);

try {

URL url = new URL(myFeed);

// Create a new HTTP URL connection

URLConnection connection = url.openConnection();

HttpURLConnection httpConnection = (HttpURLConnection)connection;

int responseCode = httpConnection.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

InputStream in = httpConnection.getInputStream();

processStream(in);

}

}

catch (MalformedURLException e) {

Log.d(TAG, “Malformed URL Exception.”);

}

catch (IOException e) {

Log.d(TAG, “IO Exception.”);

}

代码片段PA4AD_Ch06_Internet / src / MyActivity.java

在Android平台的最新版本,试图在主UI线程上执行网络操作将导致NetworkOnMainThreadException异常 。所以一定要在后台线程中执行代码(如清单6 - 1所示的代码)

Android包含了多个类来帮助处理网络通信,可以在java.net.*和android.net.*包中找到它们。

6.1.2使用XML Pull Parser分析XML

有关分析XML以及与特定的Web服务进行交瓦的细节内容不在本书讨论的范围之内,但是理解可以使用的技术是非常重要的。

本节简单地概述XML Pull Parser.下一节则演示如何使用DOM分析器从United States Geological Survey (USGS)检索地震信息。

XML Pull Parser API可从下面的库中获得:

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import org.xmlpull.v1.XmlPullParserFactory;

它允许在一个类中分折XML文档。与DOM分析器不同。Pull Parser用顺序的事件和标记序列来呈现文档的元素。

你在文档中的位置是由当前的事件表示的。通过调用getEventType,可以确定当前的事件。每个文档部从START_DOCUMENT事件开始,到END_DOCUMENT事件结束。

要遍历标记,只需要调用next,这会遍历一系列匹配的(并且通常是嵌套的)START_TAG和END_AG事件。通过调用getName可以提取每个标记的名称,通过调用getNextText可以提取每组标记间的文本。

程序清单6-2演示了如何使用XML Pull Parser从Google Places API返回的兴趣点列表中提取详细信息。

程序清单6-2使用XML Pull解析器解析XML

private void processStream(InputStream inputStream) {

// 创建一个新的XML Pull解析器.

XmlPullParserFactory factory;

try {

factory = XmlPullParserFactory.newInstance();

factory.setNamespaceAware(true);

XmlPullParser xpp = factory.newPullParser();

// 分配一个新的输入流。

xpp.setInput(inputStream, null);

int eventType = xpp.getEventType();

//持续到结束的文档。

while (eventType != XmlPullParser.END_DOCUMENT) {

// 检查结果的开始标记标签。

if (eventType == XmlPullParser.START_TAG amp;amp;

xpp.getName().equals(“result”)) {

eventType = xpp.next();

String name = “”;

// 过程中的每个结果结果标记。

while (!(eventType == XmlPullParser.END_TAG amp;amp;

xpp.getName().equals(“result”))) {

//检查结果标签内的名称标签。

if (eventType == XmlPullParser.START_TAG amp;amp;

xpp.getName().equals(“name”))

// 提取POI的名字。

name = xpp.nextText();

// 继续下一个标记。

eventType = xpp.next();

}

//对每个POI的名字执行某些操作。

}

// 移动到下一个标记结果。

eventType = xpp.next();

}

} catch (XmlPullParserException e) {

Log.d(“PULLPARSER”, “XML Pull Parser Exception”, e);

} catch (IOException e) {

Log.d(“PULLPARSER”, “IO Exception”, e);

}

}

代码片段 PA4AD_ Ch6_Internet/src/MyActivity.java

6.1.3创建一个地震查看器

在下面的示例中,将会创建一个工具,它使用一个USGS她震源来显示最近发生的地震的列表。在后面的章节中,还将会多次回到这个地震应用程序,逐渐为它添加更多的功能。

这里的地震源XML是用DOM分析嚣分析的。不过也可以选择其他分析器,包括前一节所介绍的XML Pull Parser,前面已经提过,对其他XML分析技术的详细讨论不在本书的范围内。

在这个示例中,将会创建一个基于列表的Activity,它可以连接到一个地震源,并显示它所包含的地震的位置、震级和发生的时问。

为了方便阅读,每个示例都没有包含import语句,如果你正在使用Eclipse,可以按CtrI Shift o键(在Mac上按Cmd Shift o犍)来自动填充支持代码中使用的类所需的import语句。

(1)首先,创建一个Earthquake项目,该项目使用了Earthquake Activity.

(2)创建一个新的EarthquakeListFragment,让它扩展ListFragmen.该Fragment将用于显示地震列表。

{public class EarthquakeListFragment extends ListFragment}

(3)修改main.xml布局资源来包含第(2)步中创建的Fragmmt。一定要保证对它进行命名,这样就可以在Activity代码中对它进行引用。

lt;?xml version=”1.0” encoding=”utf-8”?gt;

lt;LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical”

android:layout_width=”match_parent”

android:layout_height=”match_parent”gt;

lt;fragment android:name=”com.paad.earthquake.EarthquakeListFragment”

android:id=”@ id/EarthquakeListFragment”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

/gt;

lt;/LinearLayoutgt;

(4)创建一个新的公有Quake类。这个类用来存储每一次地震的详细信息(日期、细节、位置、震级和链接)。重写toString方法以提供用来以列表视图表示每一个地震的字符串

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[149942],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。