用 Eclipse 开发 Android 应用程序
转自:http://www.apkbus.com/android-13828-1-1.html
- Android 基础知识和必需的工具
- Android Software Developer Kit
- 构建和调试 SaySomething Android 应用程序
- 创建内容提供器和 Google Maps 应用程序
Eclipse 平台Eclipse 是一个运行插件的平台。您应该安装 Eclipse Classic 的最新版本(本教程使用 V3.3.1)。Android Developer Tools按照 安装 Android SDK 中的说明安装 Android Developer Tools(Eclipse 插件)。
源代码本教程中的源代码片段包括:
- AndroidManifest.xml(片段)— 这个文件是 Android 应用程序的应用程序部署描述符。
- IntentReceiver — 演示 IntentReceiver 的实现,这个类处理 AndroidManifest.xml 文件中 IntentFilter 标记所公布的 intent。
- SaySomething.java — 实现一个 Android 活动,这是本教程的示例应用程序的主要入口点。
- Main.xml — 这个文件包含 Android 活动所用的视觉元素或资源。
- R.java — 这个文件是由 Android Developer Tools 自动生成的,它把视觉资源 “连接” 到 Java 源代码。
- AndroidManifest.xml(完整)— 这是完整的 AndroidManfest.xml 文件,包含每个重要元素的描述。
- MobileServiceCallContacts.java — 这个文件包含的代码显示联系人并对用户输入做出反应,执行 Google Maps 地址查找。
Open Handset Alliance这是一个由 Google 公司主导的组织,它由许多公共和私人组织组成。Android这是 Open Handset Alliance 的主打产品。它是一种针对移动设备的开放源码操作环境。模拟器模拟另一个系统的软件工具 — 这常常是在个人计算机(IBM®、Mac、Linux®)上运行的一个环境,它模拟另一个环境,比如移动计算设备。Linux一种开放源码的操作系统内核,许多计算平台都使用这种操作系统,包括服务器、桌面计算机、网络设备和移动计算设备。Android 在 Linux 内核上运行。Dalvik Virtual MachineDalvik VM 是 Android 产品组合中的一种操作环境,它在运行时解释应用程序代码。Dalvik VM 与 Java VM 相似,但是两者不兼容。
- 基于 Linux 内核的操作系统
- Java 编程环境
- 工具集,包括编译器、资源编译器、调试器和模拟器
- 用来运行应用程序的 Dalvik VM
清单 1. 对 SMS 进行响应的 Android 应用程序
- <receiver class=".MySMSMailBox" >
- <intent-filter>
- <action android:value="android.provider.Telephony.SMS_RECEIVED" />
- </intent-filter>
- </receiver>
复制代码
清单 2. 接收器代码
- package com.msi.samplereceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentReceiver;
- public class myreceiver extends IntentReceiver
- {
- public void onReceiveIntent(Context arg0, Intent arg1)
- {
- // do something when this method is invoked.
- }
- }
复制代码
LinearVertical后续的每个元素都排在前一个元素下面,形成一个单一列。LinearHorizontal后续的每个元素都排在前一个元素右边,形成一个单一行。Relative后续的每个元素相对于前一个元素有一定的偏移量。Table与 HTML 表相似的一系列行和列。每个单元格可以包含一个视图元素。
- Button
- ImageButton
- EditText
- TextView(与标签相似)
- CheckBox
- Radio Button
- Gallery 和 ImageSwitcher(用来显示多个图像)
- List
- Grid
- DatePicker
- TimePicker
- Spinner(与组合框相似)
- AutoComplete(具有文本自动补全特性的 EditText)
清单 3. 简单的 LinearVertical 布局
- <?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"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Activity 1!"
- />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Activity 1, second text view!"
- />
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Switch To Activity 2"
- id="@+id/switchto2"
- />
- </LinearLayout>
复制代码
- 在 Eclipse 中运行 “Find and Install” 特性(在 Help > Software Updates 菜单下面)。
- 选择 Search for new features to install 选项。
- 选择 New Remote Site。给站点命名,比如 “Android Developer Tools”。在对话框中输入以下 URL:https://dl-ssl.google.com/android/eclipse。注意,这个 URL 使用 HTTPS 协议。这是一个安全的下载。
图 1. New Update Site
<ignore_js_op> - 列表中会增加一个新条目并被默认选中。单击 Finish。搜索结果会显示 Android Developer Tools。选择 Developer Tools 并单击 Next。
- 阅读并接受许可协议之后,单击 Next。注意,许可协议中对于使用 Google Maps API 有一个特殊的要求。
- 检查并接受安装位置,然后单击 Finish。
- Build 部分中的选项用来自动地重新构建资源。保持这个选项的设置不变。Build 选项可以改变输出的详细程度。Normal 是默认设置。
- DDMS — Dalvik Debug Monitor Service 用来监视正在运行的 VM。这些设置指定调试器用来连接 VM 的 TCP/IP 端口号、各个日志记录级别和选项。默认设置应该是合适的。
- LogCat — 这是在底层 Linux 系统上创建的一个日志文件。可以在这个对话框中选择字体。根据需要调整这个选项。
图 2. New project 向导
<ignore_js_op>
- Name
- Location
- Package name
- Activity name — 可以认为这是应用程序的主 “表单” 或屏幕
- Application name
图 3. 新的 Android 项目
<ignore_js_op>
图 4. Package Explorer
<ignore_js_op>
src 文件夹包含示例应用程序的包,即 com.msi.ibmtutorial。R.javaAndroid Developer Tools 自动创建这个文件,它提供访问 Android 应用程序的各种资源所需的常量。后面会详细讨论 R 类与资源之间的关系。SaySomething.java应用程序的主活动类的实现。Referenced libraries包含 android.jar,这是 Android SDK 中的 Android 运行时类的 jar 文件。res 文件夹包含应用程序的资源,包括:
- 图标
- 布局文件
- 字符串
AndriodManifest.xml示例应用程序的部署描述符。
清单 4. SaySomething.java
- package com.msi.ibmtutorial;
- import android.app.Activity;
- import android.os.Bundle;
- public class SaySomething extends Activity
- {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle icicle)
- {
- super.onCreate(icicle);
- setContentView(R.layout.main);
- }
- }
复制代码
- SaySomething 是一个普通的 Java 类,包含包和导入语句。
- SaySomething 扩展 android.app 包中的 Android 基类 Activity。
- onCreate() 方法是这个活动的入口点,它接受一个 Bundle 类型的参数。Bundle 类本质上是 map 或 hashmap 的包装器。在这个参数中传递构造活动所需的元素。本教程不讨论这个参数。
- setContentView(..) 负责用 R.layout.main 参数创建主 UI。R.layout.main 是应用程序资源中主布局的标识符。
Drawables这个文件夹包含图形文件,比如图标和位图。Layouts这个文件夹包含表示应用程序布局和视图的 XML 文件。后面会详细研究这些文件。Values这个文件夹包含 strings.xml 文件。这是为应用程序实现字符串本地化的主要方法。
清单 5. 布局文件
- <?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"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Hello World, SaySomething"
- />
- </LinearLayout>
复制代码
fill_parent使视图元素占满可用的空间。也可以认为这就是 “拉伸”。wrap_content这个值让 Android 把元素一个接一个地排列,不进行拉伸。
清单 6. R.java 文件
- /* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
- package com.msi.ibmtutorial;
- public final class R {
- public static final class attr {
- }
- public static final class drawable {
- public static final int icon=0x7f020000;
- }
- public static final class layout {
- public static final int main=0x7f030000;
- }
- public static final class string {
- public static final int app_name=0x7f040000;
- }
- }
复制代码
图 5. 错误面板
<ignore_js_op>
清单 7. AndroidManifest.xml 文件
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.msi.ibmtutorial">
- <application android:icon="@drawable/icon">
- <activity class=".SaySomething" android:label="@string/app_name">
- <intent-filter>
- <action android:value="android.intent.action.MAIN" />
- <category android:value="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
复制代码
- 这里指定了源文件中的包名。这里采用与 Java 源文件和导入语句相似的模式。<manifest> 标记的实际作用是 “导入” 这个包中的类。在这个文件中,所有非完全限定的类都属于 package 属性指定的包。
- <application> 标记的一个属性引用了应用程序的一个资源。请注意 drawable 标识符前面的 @ 符号。这里的意思是,在应用程序资源的 drawable 文件夹中寻找名为 “icon” 的资源。
- <activity> 标记包含以下属性和值:
- class 属性表示实现这个活动的 Java 类。
- android:label 是应用程序的名称。注意,它来自一个字符串资源。string.xml 文件包含应用程序的本地化字符串。
- <intent-filter> 表示应用程序中可用的 IntentFilter。这是 Android 应用程序中最常见的 IntentFilter。这个过滤器的实际意思是,它实现 “主” 操作(也就是入口点),而且它位于 OS 的启动器中。这意味着可以在 Android 设备上像启动其他应用程序一样,从应用程序主列表中启动它。
图 6. Run 对话框
<ignore_js_op>
图 7. Run 对话框,Emulator 选项卡
<ignore_js_op>
图 8. 模拟器
<ignore_js_op>
图 9. LogCat
<ignore_js_op>
图 10. 在模拟器上部署的示例应用程序
<ignore_js_op>
图 11. 正在运行的进程列表
<ignore_js_op>
图 12. 模拟器中与联系人应用程序相关的条目
<ignore_js_op>
清单 8. 第一个代码片段
- public class MobileServiceCallContacts extends ListActivity
- {
- final String tag = "MSCC";
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle icicle)
- {
- super.onCreate(icicle);
- setContentView(R.layout.main);
- // Get a cursor with all people
- Cursor c = getContentResolver().query(People.CONTENT_URI, null, null,
- null, null);
- startManagingCursor(c);
- ListAdapter adapter = new SimpleCursorAdapter(this,android.R.
- layout.simple_list_item_1,c,new String[] {People.NAME} ,new int[]
- {android.R.id.text1});
- setListAdapter(adapter);
- }
- ...
- }
复制代码
图 13. 应用程序的运行效果
<ignore_js_op>
清单 9. 覆盖的 onListItemClick() 方法
- @Override
- protected void onListItemClick(ListView list,View view,int position,long
- dbidentifier)
- {
- super.onListItemClick(list,view,position,dbidentifier);
- try
- {
- // this commented out code below will launch the Contacts application
- // and "view" the contact Intent myIntent = \
- new Intent(android.content.
- // Intent.VIEW_ACTION,new ContentURI("content://contacts/people/"
- // + dbidentifier)); startSubActivity(myIntent,position);
- // let's lookup specifics on this record
- ContentURI theContact = \
- new ContentURI(android.provider.Contacts.ContactMethods.CONTENT_URI.toURI());
- // IMPORTANT
- // in order to use this sample application, you need to have at least
- // one Contact record on your Android emulator\
- // and be sure to have populated the 'Home Address field'
- //
- // this "where clause" is for HOME address and for the person record
- // selected in the GUI (id, dbidentifier)
- Cursor c = managedQuery(theContact,null," type = 1 and person = " +
- dbidentifier,null);
- if (!c.first())
- {
- showAlert("MSCC","No Contact Methods Available!","",true);
- return;
- }
- String address = c.getString(c.getColumnIndex("data"));
- address = address.replace("\n","");
- address = address.replace(",","");
- address = address.replace(" ","+");
- Intent geoIntent = new Intent("android.intent.action.VIEW",
- new ContentURI\
- ("geo:0,0?q=" + address));
- startActivity(geoIntent);
- }
- catch (Exception ee)
- {
- Log.i(tag,ee.getMessage());
- }
- }
复制代码
示例源代码
|
<ignore_js_op> os-eclipse-android.examples.zip (66.18 KB, 下载次数: 723)
|
用 Eclipse 开发 Android 应用程序的更多相关文章
- Eclipse开发Android程序如何在手机上运行
android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...
- Unity开发Android应用程序:调用安卓应用程序功能
开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...
- Eclipse开发Android项目安装配置
在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建, ...
- Linux下使用Eclipse开发Hadoop应用程序
在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后 ...
- 使用jQuery Mobile + PhoneGap 开发Android应用程序(转)
使用jQuery Mobile + PhoneGap 开发Android应用程序(转) 一.简介 jQuery Mobile是jQuery在手机上和平板设备上的版本.jQuery Mobile 不仅给 ...
- 【转】使用NetBeans和Eclipse开发PHP应用程序
[51CTO独家特稿]各位用户如果单独看NetBeans和Eclipse的市场占有率,你可能会认为使用其中任何一种IDE开发PHP应用程序都没有 问题,例如: 1.NetBeans:一款开源的集成开发 ...
- Eclipse开发android安装环境
好久没有用Eclipse开发android了,今天安装了一下,发现之前的andorid的sdk不能用了,然后去官网下载了一个最新的SDK,由于现在的android的官网需要FQ才能访问到,所以在这里我 ...
- Linux下使用Eclipse开发C/C++程序
相信好多人和我一样困惑,在网上查各种安装配置方法,可是试了所有的方法也还是没有成功,其实,这个并不能怪网上的方法不对,可能只是你没有点击一个键的原因,下面,我就来讲下怎样使用Eclipse ...
- C#使用Xamarin开发Android应用程序 -- 系列文章
Xamarin开发Android应用程序 利用Xamaria构建Android应用-公交发车信息屏 Xamarin版的C# SVG路径解析器 C#使用Xamarin开发可移植移动应用(1.入门与Xam ...
随机推荐
- C#下如何用NPlot绘制期货股票K线图(3):设计要显示的股票价格图表窗口并定义相应类的成员及函数
[内容简介] 上一篇介绍了要显示K线图所需要的数据结构,及要动态显示K线图,需要动态读取数据文件必需的几个功能函数.本篇介绍要显示蜡烛图所用到的窗口界面设计及对应类定义.下面分述如下: [窗口界面] ...
- TreeListView的用法
public void ProductBind() { tlvProduct.Items.Clear(); List<ProductInfo> list = ppbll.GetProduc ...
- html-----011--子窗体iframe
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Mybatis-generator使用和扩展
Mybatis-generator使用和扩展 mybatis-generator使用 pom.xml配置 <plugin> <groupId>org.mybatis.gener ...
- 关于C++对汉字拼音的处理(2)
对于前面获取字符串汉字全拼音的功能,大家应该有个了解了.现在我又综合广大网友流传的获取字符串汉字拼音首字母的功能进行了整理.介绍如下 这个功能写的稍微有点复杂 使用3个函数解决了获取字符串汉字首拼音串 ...
- 九度OJ 1452 搬寝室 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1452 题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3 ...
- CentOS系统Apache服务器优化详解
1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...
- 网站前端优化 -saveForSelf
九.网站前端优化 – IMG 9.1.可以优化的图片 图片总共可以分为两类,一个是CSS IMAGES,另一个是产品图片. 9.2.CSS IMAGES CSS图片现在采用的方式是图片合并的方式,这样 ...
- sirius的学习笔记(3)
毕业论文什么的终于搞完了,重拾我的python Creating the python skeleton project directory $ mkdir project $ cd project ...
- cygwin下的第一次编程记录
今天在window7上安装了cygwin,体验了一把unix,编了个小c,c++程序 先把过程记录下来 1.先删除以前建立的source文件夹 rm -rf source linux删除目录很简单,很 ...