<4D F736F F D20B5DA36D5C220D7E9BCFEBCE4CDA8D0C52E646F6378>

Size: px
Start display at page:

Download "<4D F736F F D20B5DA36D5C220D7E9BCFEBCE4CDA8D0C52E646F6378>"

Transcription

1 Android 应用程序开发与典型案例 作者 : 华清远见 第 6 章组件间通信 本章简介 在第 5 章的学习中, 主要了解了 Android 程序界面的开发, 包括用户界面基础 用户界面控件的使用 界面布局的特点及使用方法 菜单的使用方法 界面事件的 处理方法等 在此基础上, 本章将对 Android 组件间的通信进行学习, 包括 Intent 进行组件通信的原理 Intent 启动 Activity 的方法 获取 Activity 返回值的方法 Intent 过滤器的原理及其匹配机制 发送和接收广播消息的方法等

2 6.1 Intent 对象及其属性 Intent 是一个动作的完整描述, 包含了动作的产生组件 接收组件和传递的数据信息 Android 则根据 Intent 的描述, 在不同组件间传递消息, 负责找到对应的组件, 将 Intent 传递给调用的组件, 组件接收到 传递的消息, 执行相关动作, 完成组件的调用 Intent 不仅可用于应用程序之间, 也可用于应用程序内部的 Activity/Service 之间的交互 Intent 为 Activity Service 和 BroadcastReceiver 等组件提供交互能力, 还可以启动 Activity 和 Service, 在 Android 系统上发布广播消息 这里的广播消息是指可以接收到的特定数据或消息, 也可以是手机的信号变化或电 池的电量过低等信息 因此,Intent 在这里起着一个媒体中介的作用, 专门提供组件互相调用的相关信息, 实现调用者与被 调用者之间的解耦 在 SDK 中给出了 Intent 作用的表现形式 通过 Context.startActivity() or Activity.startActivityForResult() 启动一个 Activity 通过 Context.startService() 启动一个服务, 或者通过 Context.bindService() 和后台服务交互 通 过 广 播 方 法 ( 比 如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给 broadcast receivers 一般情况下,Intent 对某操作的抽象描述包含下面几个部分 对执行动作的描述 : 操作 (action) 对这次动作相关联的数据进行描述 : 数据 (data) 对数据类型的描述 : 数据类型 (type) 对执行动作的附加信息进行描述 : 类别 (category) 其他一切附加信息的描述 : 附件信息 (extras) 对目标组件的描述 : 目标组件 (component) Intent 的 action 属性 action 是要执行的动作, 也可以是在广播 Intent 中已发生且正被报告的动作 action 部分是一个字符串对象 它描述了 Intent 会触发的动作 Android 系统中已经预定义了一些 action 常量, 可以参看 SDK 帮助文档, 下表给出了一些标准的 action 常量, 如表 6-1 所示 表 6-1 SDK 中定义的标准动作常量 目标组件 描述 ACTION_CALL activity 初始化一个电话呼叫 ACTION_EDIT activity 显示可供用户编辑的数据 ACTION_MAIN activity 将该 Activity 作为 task 的第一个 Activity, 没有数据输入, 也没有数据返回 ACTION_SYNC activity 使服务器上的数据与移动设备上数据同步 ACTION_BATTERY_LOW broadcast receiver 提示电池电量低 ACTION_HEADSET_PLUG broadcast receiver 提示耳机塞入或拔出 ACTION_SCREEN_ON broadcast receiver 屏幕已点亮 ACTION_TIMEZONE_CHANGED broadcast receiver 时区设置改变 问 : 除了 SDK 中定义的标准动作外, 可以使用自定义动作吗? 答 : 当然, 可以自定义动作 自定义的动作在使用时, 一般要加上包名作为前缀 ( 为防止重复定义 ), 如 com.example.project.show_color, 并可定义相应的 Activity 来处理自定义动作 2

3 除上表介绍的 action 常量外, 开发者也可以定义自己的 action 描述 一般来讲, 定义自己的 action 字符串应该以应用程序的包名为前缀 ( 防止重复定义 ) 由于 action 部分很大程度上决定了一个 Intent 的内容, 特别是数据 (data) 和附加 (extras) 字段, 就像一个方法名决定了参数和返回值 正是这个原因, 应该尽可能明确指定动作, 并紧密关联到其他 Intent 字段 即应该定义组件能够处理的 Intent 对象的整个协议, 而不仅仅是单独地定义一个动作 一个 Intent 对象的动作通过 setaction() 方法设置, 通过 getaction() 方法读取 Intent 的 data 属性 data, 即执行动作要操作的数据 data 描述了 Intent 的动作所能操作数据的 MIME 类型和 URL, 不同的 Action 用不同的操作数据 例如, 如果 Activity 字段是 ACTION_EDIT,data 字段将显示包含用于编辑的文档的 URI; 如果 Activity 是 ACTION_CALL,data 字段是一个 tel://uri 和将拨打的号码 ; 如果 Activity 是 ACTION_VIEW,data 字段是一个 接收活动将被调用去下载和显示 URI 指向的数据 在许多情况下, 数据类型能够从 URI 中推测出来, 特别是 content://uris, 它表示位于设备上的数据且被内容提供者 (Content Provider) 控制 但是类型也能够显示设置,setData() 方法指定数据的 URI,setType() 指定 MIME 类型,setDataAndType() 指定数据的 URI 和 MIME 类型 通过 getdata() 读取 URI,getType() 读取类型 匹配一个 Intent 到一个能够处理 data 的组件, 知道 data 的类型 ( 它的 MIME 类型 ) 和它的 URI 很重要 例如, 一个组件能够显示图像数据就不应该被调用去播放音频文件 Intent 的 type 属性数据类型 (type), 显式指定 Intent 的数据类型 (MIME) 一般 Intent 的数据类型能够根据数据本身进行判定, 但是通过设置这个属性, 可以强制采用显式指定的类型而不再进行推导 Intent 的 category 属性 category( 类别 ), 被执行动作的附加信息 例如,LAUNCHER_CATEGORY 表示 Intent 的接受者应该在 Launcher 中作为顶级应用出现 ; 而 ALTERNATIVE_CATEGORY 表示当前的 Intent 是一系列的可选动作中的一个, 这些动作可以在同一块数据上执行 其他的如表 6-2 所示 表 6-2 SDK 中定义的标准动作 常量 CATEGORY_BROWSABLE CATEGORY_GADGET CATEGORY_HOME CATEGORY_LAUNCHER CATEGORY_PREFERENCE 描述 目标 Activity 可通过浏览器安全启动以显示一个链接相关的数据, 如图片或邮件信息 Activity 可被嵌入另外一个拥有 gadget 的 Activity 中 Activity 显示主页, 即设备打开时用户看到的第一个界面或是用户按 Home 键时的界面 Activity 是一个 task 的初始 Activity, 是程序启动的高优先级 Activity 目标 Activity 为 preference panel. 通过 addcategory() 方法添加一个种类到 Intent 对象中 ; 通过 removecategory() 方法删除一个之前添加的种类 ; 通过 getcategories() 方法获取 Intent 对象中的所有种类 Intent 的 extras 属性 extras( 附加信息 ) 是一组键值对, 包含了需要传递给目标组件并有其处理的一些附加信息 就像动作关联的特定种类的数据 URIs, 也关联到某些特定的附加信息 例如, 一个 ACTION_TIMEZONE_CHANGE intent 有一个 time-zone 的附加信息, 标识新的时区, ACTION_HEADSET_PLUG 有一个 state 附加信息, 标识头部现在是否塞满或未塞满 ; 有一个 name 3

4 附加信息, 标识头部的类型 如果你自定义了一个 SHOW_COLOR 动作, 颜色值将可以设置在附加的键值对中 例如, 如果要执行 发送电子邮件 这个动作, 可以将电子邮件的标题 正文等保存在 extras 里, 传给电子邮件发送组件 Intent 有一系列 putxxx() 方法用于插入各种附加数据, 有一系列 getxxx() 方法可以取出一系列数据 使用 Extras 可以为组件提供扩展信息 Intent 的 ComponentName 属性 ComponentName( 组件 ), 指定 Intent 的目标组件的类名称 ComponentName 包含两个 String 成员, 分别代表组件的全称类名和包名, 包名必须和 AndroidManifest.xml 文件标记中的对应信息一致 ComponentName 通过 setcomponent() setclass() 或 setclassname() 设置, 通过 getcomponent() 读取 通常 Android 会根据 Intent 中包含的其他属性的信息 ( 如 action data/type category) 进行查找, 最终找到一个与之匹配的目标组件 但是, 如果 ComponentName 这个属性有指定, 将直接使用指定的组件, 而不再执行上述查找过程 指定了这个属性以后,Intent 的其他所有属性都是可选的 对于 Intent, 组件名并不是必需的 如果一个 Intent 对象添加了组件名, 则称该 Intent 为 显式 Intent, 这样的 Intent 在传递时会直接根据组件名去寻找目标组件 如果没有添加组件名, 则称为 隐式 Intent, Android 会根据 Intent 中的其他信息来确定响应该 Intent 的组件 总之,action data/type category 和 extras 一起使系统能够理解诸如 查看某联系人的详细信息 或 给某人打电话 之类的短语 随着应用不断地加入系统中,Android 系统可以添加新的 action data/type category 来扩展功能 当然, 最受益的还是应用本身, 可以利用这套语言机制来处理不同的动作和数据 6.2 系统标准 ActivityAction 应用 启动 Activity 在 Android 系统中, 应用程序一般都有多个 Activity,Intent 可以实现不同 Activity 之间的切换和数据传递 启动 Activity 方式有以下两种方式 显式启动, 必须在 Intent 中指明启动的 Activity 所在的类 隐式启动,Android 系统根据 Intent 的动作和数据来决定启动哪一个 Activity, 即在隐式启动时, Intent 中只包含需要执行的动作和所包含的数据, 而无须指明具体启动哪一个 Activity, 选择权由 Android 系统和最终用户来决定 1. 显式启动使用 Intent 显式启动 Activity, 首先需要创建一个 Intent, 指定当前的应用程序上下文及要启动的 Activity, 并把创建好的 Intent 作为参数传递给 startactivity() 方法 代码如代码清单 6-1 所示 代码清单 6-1 显式启动 Intent intent = new Intent(IntentDemo.this, Activity2.class); startactivity(intent); 以下将通过一个 IntentDemo 示例来详细讲解如何使用 Intent 显式启动新的 Activity IntentDemo 示例中包含 IntentDemo 和 Activity2 这两个 Activity 类, 程序启动是默认启动 IntentDemo 这个 Activity, 启动画面如图 6-1 所示 在图 6-1 的界面中, 单击 跳转到 Activity2 按钮后, 程序启动 Activity2 这个 Activity, 界面如图 6-2 所示 4

5 图 6-1 名为 IntentDemo 的 Activity 界面 图 6-2 名为 Activity2 的 Activity 界面 为使程序达到上述效果, 首先, 在 AndroidManifest.xml 文件中注册上面两个 Activity, 应使用 <activity> 标签, 嵌套在 <application> 标签内部 代码如代码清单 6-2 所示 <?xml version="1.0" encoding="utf-8"?> 代码清单 6-2 AndroidManifest.xml <manifest xmlns:android=" package="com.example.intentdemo" android:versioncode="1" android:versionname="1.0"> <application <activity android:name=".intentdemo" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".activity2" </activity> </application> <uses-sdk android:minsdkversion="3" /> </manifest> 在 Android 应用程序中, 用户使用的每个组件都必须在 AndroidManifest.xml 文件中的 <application> 节点内定义, 所以 <application> 节点下共有两个 <activity> 节点, 分别代表应用程序中所使用的两个 Activity: IntentDemo 和 Activity2 在 IntentDemo.java 文件中, 包含了显示使用 Intent 启动 Activity2 的核心代码, 如代码清单 6-3 所示 Button button = (Button)findViewById(R.id.btn); 代码清单 6-3 IntentDemo.java button.setonclicklistener(new OnClickListener(){ public void onclick(view view){ Intent intent = new Intent(IntentDemo.this, Activity2.class); ); startactivity(intent); 在单击事件的处理函数中,Intent 构造函数的第 1 个参数是应用程序上下文, 应用程序上下文是 IntentDemo; 第 2 个参数是接收 Intent 的目标组件, 使用的是显式启动方式, 直接指明了需要启动的 Activity 同理, 在 Activity2.java 文件中, 包含了显示使用 Intent 启动 IntentDemo 的核心代码, 如代码清单 6-4 所示 Button button = (Button)findViewById(R.id.btn); button2.setonclicklistener(new OnClickListener(){ 代码清单 6-4 Activity2.java public void onclick(view view){ Intent intent = new Intent(Activity2.this, IntentDemo.class); startactivity(intent); ); 5

6 2. 隐式启动 隐式启动 Activity 时,Android 系统在应用程序运行时解析 Intent, 并根据一定的规则对 Intent 和 Activity 进行匹配, 使 Intent 上的动作 数据与 Activity 完全吻合 而匹配的 Activity 可以是应用程序本身的, 也可以是 Android 系统内置的, 还可以是第三方应用程序提供的 因此, 这种方式更强调了 Android 应用程序中组件的可复用性 由此可以看出, 隐式启动不需要指明需要启动哪一个 Activity, 而由 Android 系统来决定, 有利于使用第三方组件 在默认情况下,Android 系统会调用内置的 Web 浏览器, 代码如代码清单 6-5 所示 代码清单 6-5 隐式启动默认情况调用内置 Web 浏览器 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(" startactivity(intent); 在上述代码中,Intent 的动作是 Intent.ACTION_VIEW, 是根据 Uri 的数据类型来匹配动作 ; 数据部分的 Uri 是 Web 地址, 使用 Uri.parse(urlString) 方法, 可以简单地把一个字符串解释成 Uri 对象 Intent 的语法如代码清单 6-6 所示 代码清单 6-6 Intent 语法 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString)); Intent 构造函数的第 1 个参数是 Intent 需要执行的动作 ; 第 2 个参数是 Uri, 表示需要传递的数据 Android 系统支持的常见动作字符串常量表, 如表 6-3 所示 表 6-3 Android 系统支持的常见动作字符串常量表 动作 ACTION_ANSWER ACTION_CALL ACTION_DELETE ACTION_DIAL ACTION_EDIT ACTION_INSERT ACTION_PICK ACTION_SEARCH ACTION_SENDTO ACTION_SEND ACTION_VIEW 说明 打开接听电话的 Activity, 默认为 Android 内置的拨号盘界面 打开拨号盘界面并拨打电话, 使用 Uri 中的数字部分作为电话号码 打开一个 Activity, 对所提供的数据进行删除操作 打开内置拨号盘界面, 显示 Uri 中提供的电话号码 打开一个 Activity, 对所提供的数据进行编辑操作 打开一个 Activity, 在提供数据的当前位置插入新项 启动一个子 Activity, 从提供的数据列表中选取一项 启动一个 Activity, 执行搜索动作 启动一个 Activity, 向数据提供的联系人发送信息 启动一个可以发送数据的 Activity 最常用的动作, 对以 Uri 方式传送的数据, 根据 Uri 协议部分以最佳方式启动相应的 Activity 进行处理 对于 将打开浏览器查看 ; 对于 tel:address 将打开拨号呼叫指定的电话号码 ACTION_WEB_SEARCH 打开一个 Activity, 对提供的数据进行 Web 搜索以下将通过一个 WebViewIntentDemo 示例来了解如何隐式启动 Activity 如图 6-3 所示, 当用户在文本框中输入要访问的网址后, 通过单击 Go 按钮, 程序根据用户输入的网址生成一个 Intent, 并以隐式启动的方式调用 Android 内置的 Web 浏览器, 并打开指定的 Web 页面 本例输入的网址是 google 主页的主站地址, 地址是 : 6

7 其中,main.xml 代码如代码清单 6-7 所示 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 图 6-3 隐式启动 Activity 代码清单 6-7 main.xml xmlns:android=" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:lines="1" android:inputtype="texturi" android:imeoptions="actiongo" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 其中,strings.xml 代码如代码清单 6-8 所示 <?xml version="1.0" encoding="utf-8"?> <resources> 代码清单 6-8 strings.xml <string name="app_name"> WebViewIntentDemo </string> <string name="go_button">go</string> </resources> WebViewIntentDemo.java 代码如代码清单 6-9 所示 import android.app.activity; import android.content.intent; import android.net.uri; import android.os.bundle; import android.view.keyevent; import android.view.view; import android.view.view.onclicklistener; import android.view.view.onkeylistener; import android.widget.button; import android.widget.edittext; 代码清单 6-9 WebViewIntentDemo.java public class WebViewIntentDemo extends Activity { private EditText urltext; private Button public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // Get a handle to all user interface elements urltext = (EditText) findviewbyid(r.id.url_field); gobutton = (Button) findviewbyid(r.id.go_button); 7

8 // Setup event handlers gobutton.setonclicklistener(new OnClickListener() { public void onclick(view view) { openbrowser(); ); urltext.setonkeylistener(new OnKeyListener() { ); public boolean onkey(view view, int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_ENTER) { openbrowser(); return true; return false; 在上述代码中第 26 行对按钮 Go 添加监听, 当触摸单击或通过手机按键单击该按钮时, 触发 openbrowser() 方法 其中,openBrowser() 方法代码如代码清单 6-10 所示 代码清单 6-10 openbrowser() 方法 /** Open a browser on the URL specified in the text box */ private void openbrowser() { Uri uri = Uri.parse(urlText.getText().toString()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startactivity(intent); 获取 Activity 返回值 在 节的 IntentDemo 示例中, 通过使用 startactivity(intent) 方法启动 Activity 后, 两个 Activity 之间相互独立, 没有任何关联 然而, 在很多情况下, 后启动的 Activity 是为了让用户对特定信息进行选择, 在关闭这个 Activity 后, 用户的选择信息需要返回给未关闭的那个 Activity 由此, 按照 Activity 启动的先后顺序, 先启动的称为父 Activity, 后启动的称为子 Activity, 如果需要将子 Activity 的部分信息返回给父 Activity, 则可以使用 Sub-Activity 的方式去启动子 Activity 获取子 Activity 的返回值, 一般分以下 3 个步骤 1. 以 Sub-Activity 的方式启动子 Activity 首先, 调用 startactivityforresult(intent, requestcode) 函数, 其中, 参数 Intent 用于决定启动哪个 Activity, 参数 requestcode 是唯一的标识子 Activity 的请求码 显式启动子 Activity 的代码如代码清单 6-11 所示 代码清单 6-11 显式启动子 Activity int SUBACTIVITY1 = 1; Intent intent = new Intent(this, SubActivity1.class); startactivityforresult(intent, SUBACTIVITY1); 隐式启动子 Activity 的代码如代码清单 6-12 所示 int SUBACTIVITY2 = 2; 代码清单 6-12 隐式启动子 Activity Uri uri = Uri.parse("content://contacts/people"); Intent intent = new Intent(Intent.ACTION_PICK, uri); startactivityforresult(intent, SUBACTIVITY2); 2. 设置子 Activity 的返回值 8

9 在子 Activity 调用 finish() 函数关闭前, 调用 setresult() 函数将所需的数据返回给父 Activity 其中, setresult() 函数有两个参数 : 结果码和返回值 结果码表明了子 Activity 的返回状态, 通常为 Activity.RESULT_OK 或 Activity.RESULT_CANCELED, 或自定义的结果码, 结果码均为整数类型 ; 返回值封装在 Intent 中, 子 Activity 通过 Intent 将需要返回的数据传递给父 Activity 数据主要是 Uri 形式, 可以附加一些额外信息, 这些额外信息用 Extra 的集合表示 代码清单 6-13 所示代码说明了如何在子 Activity 中设置返回值 Uri data = Uri.parse( tel: + tel_number); Intent result = new Intent(null, data); result.putextra( address, ); setresult(result_ok, result); finish(); 3. 在父 Activity 中获取返回值 代码清单 6-13 在子 Activity 中设置返回值 当子 Activity 关闭时, 启动它的父 Activity 的 onactivityresult() 函数将被调用 ; 如果需要在父 Activity 中处理子 Activity 的返回值, 则覆盖此函数即可 此函数的语法如代码清单 6-14 所示 代码清单 6-14 onactivityresult() 语法 public void onactivityresult(int requestcode, int resultcode, Intent data); 在上述代码中, 第 1 个参数 requestcode, 用来表示是哪一个子 Activity 的返回值 ; 第 2 个参数 resultcode 用于表示子 Activity 的返回状态 ; 第 3 个参数 data 是子 Activity 的返回数据, 返回数据类型是 Intent 返回数据的用途不同,Uri 数据的协议也就不同 也可以使用 Extra 方法返回一些原始类型的数据 代码清单 6-15 所示代码说明如何在父 Activity 中处理子 Activity 的返回值 private static final int SUBACTIVITY1 = 1; private static final int SUBACTIVITY2 = 2; 代码清单 6-15 在父 Activity 中处理子 Activity public void onactivityresult(int requestcode, int resultcode, Intent data){ Super.onActivityResult(requestCode, resultcode, data); switch(requestcode){ case SUBACTIVITY1: if (resultcode == Activity.RESULT_OK){ Uri uridata = data.getdata(); else if (resultcode == Activity.RESULT_CANCEL){ break; case SUBACTIVITY2: if (resultcode == Activity.RESULT_OK){ Uri uridata = data.getdata(); break; 在上述代码中, 第 1 行代码和第 2 行代码是两个子 Activity 的请求码 ; 第 7 行代码对请求码进行匹配 ; 第 9 行和第 11 行代码对结果码进行判断, 如果返回的结果码是 Activity.RESULT_OK, 则在代码的第 10 行使用 getdata() 函数获取 Intent 中的 Uri 数据 ; 反之, 若返回的结果码是 Activity.RESULT_CANCELED, 则不进行任何操作 ActivityCommunication 示例说明了如何以 Sub-Activity 方式启动子 Activity, 以及使用 Intent 进行组件间的通信 9

10 图 6-4 ActivityCommunication 主界面 在如图 6-4 所示的主界面中, 当用户单击 启动 Activity1 和 启动 Activity2 按钮时, 程序将分别启动两个不同的子 Activity: 子 SubActivity1 和 SubActivity2, 它们的界面分别如图 6-5 所示 图 6-5 SubActivity1 和 SubActivity2 界面 SubActivity1 提供了一个输入框, 以及 接受 和 撤销 两个按钮, 如果在输入框中输入信息后单击 接受 按钮, 程序会把输入框中的信息传递给父 Activity, 并在父 Activity 界面上显示 ; 如果用户单击 撤销 按钮, 则程序不会向父 Activity 传递任何信息 SubActivity2 主要为了说明如何在父 Activity 中处理多个子 Activity, 因此仅提供了用于关闭 SubActivity2 的 关闭 按钮 下面介绍 ActivityCommunication 的核心代码 首先是 ActivityCommunication.java 文件, 如代码清单 6-16 所示 代码清单 6-16 ActivityCommunication.java public class ActivityCommunication extends Activity { private static final int SUBACTIVITY1 = 1; private static final int SUBACTIVITY2 = 2; TextView public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); textview = (TextView)findViewById(R.id.textShow); final Button btn1 = (Button)findViewById(R.id.btn1); final Button btn2 = (Button)findViewById(R.id.btn2); btn1.setonclicklistener(new OnClickListener(){ public void onclick(view view){ Intent intent = new Intent(ActivityCommunication.this, SubActivity1.class); startactivityforresult(intent, SUBACTIVITY1); ); btn2.setonclicklistener(new OnClickListener(){ public void onclick(view view){ ); Intent intent = new Intent(ActivityCommunication.this, SubActivity2.class); startactivityforresult(intent, protected void onactivityresult(int requestcode, int resultcode, Intent data) { 10

11 super.onactivityresult(requestcode, resultcode, data); switch(requestcode){ case SUBACTIVITY1: if (resultcode == RESULT_OK){ Uri uridata = data.getdata(); textview.settext(uridata.tostring()); break; case SUBACTIVITY2: break; 在上述代码中, 第 2 行和第 3 行分别定义了两个子 Activity 的请求码, 而在第 16 行和第 23 行以 Sub-Activity 的方式分别启动两个子 Activity 第 29 行代码是子 Activity 关闭后的返回值处理函数, 其中 requestcode 是子 Activity 返回的请求码, 应与第 2 行和第 3 行定义的两个请求码相匹配 ;resultcode 是结果码, 在第 32 行代码对结果码进行判断, 如果等于 RESULT_OK, 则在第 35 行代码获取子 Activity 的返回值中的数据, 其中,data 是返回值, 子 Activity 需要返回的数据就保存在 data 中 SubActivity1.java 的核心代码如代码清单 6-17 所示 代码清单 6-17 SubActivity1.java public class SubActivity1 extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.subactivity1); final EditText edittext = (EditText)findViewById(R.id.edit); Button btnok = (Button)findViewById(R.id.btn_ok); Button btncancel = (Button)findViewById(R.id.btn_cancel); btnok.setonclicklistener(new OnClickListener(){ public void onclick(view view){ String uristring = EditText.getText().toString(); Uri data = Uri.parse(uriString); Intent result = new Intent(null, data); setresult(result_ok, result); finish(); ); btncancel.setonclicklistener(new OnClickListener(){ public void onclick(view view){ setresult(result_canceled, null); finish(); ); 上述 SubActivity1.java 的核心代码中, 第 13 行代码将 EditText 控件的内容作为数据保存在 Uri 中 ; 第 14 行代码中使用这个 Uri 构造 Intent; 第 15 行代码中, 将 Intent 作为返回值,RESUIT_OK 作为结果码, 通过调用 setresult() 函数, 将返回值和结果码传递给父 Activity; 第 16 行代码调用 finish() 函数关闭当前的子 Activity SubActivity2.java 的核心代码如代码清单 6-18 所示 代码清单 6-18 SubActivity2.java 11

12 public class SubActivity2 extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.subactivity2); Button btnreturn = (Button)findViewById(R.id.btn_return); btnreturn.setonclicklistener(new OnClickListener(){ public void onclick(view view){ setresult(result_canceled, null); finish(); ); 上述 SubActivity2.java 的核心代码中, 第 10 行的 setresult() 函数仅设置了结果码, 第 2 个参数为 null, 表示数据需要传递给父 Activity 6.3 Intent 过滤器 Intent 过滤器是一种根据 Intent 中的动作 (Action) 类别(Categorie) 和数据 (Data) 等内容, 对适合接收该 Intent 的组件进行匹配和筛选的机制 它可以匹配数据类型 路径和协议, 还可以用来确定多个匹配项顺序的优先级 (Priority) 应用程序的 Activity 组件 Service 组件和 BroadcastReceiver 都可以注册 Intent 过滤器, 这些组件在特定的数据格式上就可以产生相应的动作 注册 Intent 过滤器注册 Intent 过滤器的方法如下 : 在 AndroidManifest.xml 文件的各个组件的节点下定义 <intent-filter> 节点, 然后在 <intent-filter> 节点中声明该组件所支持的动作 执行的环境和数据格式等信息 <intent-filter> 节点支持 <action> 标签 <category> 标签和 <data> 标签, 其中 :<action> 标签定义 Intent 过滤器的 类别 ;<category> 标签定义 Intent 过滤器的 动作 ;<data> 标签定义 Intent 过滤器的 数据 <intent-filter> 节点支持的标签和属性如表 6-4 所示 表 6-4 <intent-filter> 节点支持的标签和属性标签属性说明 <action> <category> <data> Android:name Android:category Android:host Android:mimetype Android:path Android:port Android:scheme 指定组件所能响应的动作, 用字符串表示, 通常使用 Java 类名和包的完全限定名构成 指定以何种方式去服务 Intent 请求的动作 指定一个有效的主机名 指定组件能处理的数据类型 有效的 Uri 路径名 主机的有效端口号 所需要的特定的协议 12

13 <category> 标签用来指定 Intent 过滤器的服务方式, 每个 Intent 过滤器可以定义多个 <category> 标签, 程序开发人员可使用自定义的类别, 或使用 Android 系统提供的类别 其中,Android 系统提供的类别如表 6-5 所示 表 6-5 Android 系统提供的类别 值 ALTERNATIVE 说明 Intent 数据默认动作的一个可替换的执行方法 SELECTED_ALTERNATIVE 和 ALTERNATIVE 类似, 但替换的执行方法不是指定的, 而是被解析出来的 BROWSABLE 声明 Activity 可以由浏览器启动 续表 值 说明 DEFAULT HOME LAUNCHER 为 Intent 过滤器中定义的数据提供默认动作 设备启动后显示的第一个 Activity 在应用程序启动时首先被显示 AndroidManifest.xml 文件中的每个组件的 <intent-filter> 都被解析成一个 Intent 过滤器对象 当应用程序安装到 Android 系统时, 所有的组件和 Intent 过滤器都会注册到 Android 系统中 这样,Android 系统便知道了如何将任意一个 Intent 请求通过 Intent 过滤器映射到相应的组件上 Intent 解析 Intent 到 Intent 过滤器的映射过程称为 Intent 解析 Intent 解析可以在所有组件中找到一个可与请求的 Intent 达成最佳匹配的 Intent 过滤器 Intent 解析的匹配规则 Android 系统把所有应用程序包中的 Intent 过滤器集合在一起, 形成一个完整的 Intent 过滤器列表 在 Intent 与 Intent 过滤器进行匹配时,Android 系统会将列表中所有 Intent 过滤器的 动作 和 类别 与 Intent 进行匹配, 任何不匹配的 Intent 过滤器都将被过滤掉 没有指定 动作 的 Intent 过滤器可以匹配任何的 Intent, 但没有指定 类别 的 Intent 过滤器只能匹配没有 类别 的 Intent 把 Intent 数据 Uri 的每个子部与 Intent 过滤器的 <data> 标签中的属性进行匹配, 如果 <data> 标签指定了协议 主机名 路径名或 MIME 类型, 那么这些属性都要与 Intent 的 Uri 数据部分进行匹配, 任何不匹配的 Intent 过滤器均被过滤掉 如果 Intent 过滤器的匹配结果多于一个, 则可以根据在 <intent-filter> 标签中定义的优先级标签来对 Intent 过滤器进行排序, 优先级最高的 Intent 过滤器将被选择 在此以 节中隐式启动 Activity 的例子 WebViewIntentDemo 为基础, 在 AndroidManifest.xml 文件中注册 Intent 过滤器, 以及设置 <intent-filter> 节点属性来捕获指定的 Intent 在 AndroidManifest.xml 中添加如代码清单 6-19 所示 <intent-filter> 代码清单 6-19 AndroidManifest.xml 中添加代码 <action android:name="android.intent.action.view" /> <data android:schema="http" /> </intent-filter> 利用 <intent-filter> 可以把应用程序的操作注册到系统中, 当用户调用 Intent 时, 可以根据输入的 ACTION 和 Uri 参数来找到这个应用程序 例如, 在上述代码中, 以 http 协议为例, 打开 Google Map 可以用 URI: geo: , 此外, 协议 在 Android 里都可以随便定义 例如, 写一个打开文件的关联 Intent, 如 file:///sdcard/abc.txt 也可以用 type 进行关联, 其代码如代码清单 6-20 所示 13

14 代码清单 6-20 用 type 进行关联 <intent-filter> <action android:name="android.intent.action.view" /> <type android:value="test.item"/> </intent-filter> 然后, 通过代码清单 6-21 所示代码就能定位到应用 Intent it = new Intent(Intent.ACTION_VIEW); it.settype("test.item ); startactivity(it) 代码清单 6-21 用 type 定位到应用代码 6.4 广播消息 应用程序和 Android 系统都可以使用 Intent 发送广播消息 其中, 广播消息的内容可以是与应用程序密切相关的数据信息, 也可以是 Android 的系统信息, 例如, 网络连接变化 电池电量变化 接收短信和系统设置变化等 如果应用程序注册了 BroadcastReceiver, 则可以接收到指定的广播消息 下面将介绍广播信息的使用方法 首先, 创建一个 Intent 调用 sendbroadcast() 函数, 就可把 Intent 携带的消息广播出去, 如果要在 Intent 传递额外数据, 可以用 Intent 的 putextra() 方法 注意 : 在构造 Intent 时必须用全局唯一的字符串标识其要执行的动作, 通常使用应用程序包的名称 利用 Intent 发送广播消息, 并添加了额外的数据, 然后调用 sendbroadcast() 发送广播消息的代码如代码清单 6-22 所示 代码清单 6-22 利用 Intent 发送广播消息 String UNIQUE_STRING = "com.example.broadcastreceiverdemo"; Intent intent = new Intent(UNIQUE_STRING); intent.putextra("key1", "value1"); intent.putextra("key2", "value2"); sendbroadcast(intent); 广播消息发送后, 利用 BroadcastReceiver 监听广播消息 具体方法如下 : 在 AndroidManifest.xml 文件或在代码中注册一个 BroadcastReceiver, 并在其中使用 Intent 过滤器指定要处理的广播消息 在 BroadcastReceiver 接收到与之匹配的广播消息后,onReceive() 方法会被调用 ;onreceive() 方法必须要在 5 秒内执行完毕, 否则 Android 系统会认为该组件失去响应, 并提示用户强行关闭该组件 创建 BroadcastReceiver 需继承 BroadcastReceiver 类, 并重载 onreceive() 方法 代码如代码清单 6-23 所示 代码清单 6-23 利用 BroadcastReceiver 监听广播消息 public class MyBroadcastReceiver extends BroadcastReceiver public void onreceive(context context, Intent intent) { //TODO: React to the Intent received. BroadcastReceiver 的应用程序不需要一直运行, 当 Android 系统接收到与之匹配的广播消息时, 会自动启动此 BroadcastReceiver 基于以上特征,BroadcastReceiver 适合做一些资源管理的工作 14

15 如图 6-6 所示,BroadcastReceiverDemo 示例说明了如何在应用程序中注册 BroadcastReceiver, 并接收指定类型的广播消息 图 6-6 BroadcastReceiverDemo 示例 如图 6-6 所示, 在单击 发送广播消息 按钮后,EditText 控件中内容将以广播消息的形式发送出去, 示例内部的 BroadcastReceiver 将接收这个广播消息, 并显示在用户界面的下方 BroadcastReceiverDemo.java 文件中包含发送广播消息的代码, 其关键代码如代码清单 6-24 所示 button.setonclicklistener(new OnClickListener(){ 代码清单 6-24 BroadcastReceiverDemo.java public void onclick(view view){ Intent intent = new Intent("com.example.BroadcastReceiverDemo"); intent.putextra("message", entrytext.gettext().tostring()); ); sendbroadcast(intent); 在上述代码中, 第 3 行代码创建 Intent, 将 com.example.broadcastreceiverdem 作为识别广播消息的字符串标识 ; 第 4 行代码添加了额外信息 ; 第 5 行代码调用 sendbroadcast() 函数发送广播消息 为了能够使应用程序中的 BroadcastReceiver 接收指定的广播消息, 首先要在 AndroidManifest.xml 文件中添加 Intent 过滤器, 声明 BroadcastReceiver 可以接收的广播消息 其中,AndroidManifest.xml 文件的完整代码如代码清单 6-25 所示 <?xml version="1.0" encoding="utf-8"?> 代码清单 6-25 AndroidManifest.xml <manifest xmlns:android=" package="com.example.broadcastreceiverdemo" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".broadcastreceiverdemo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <receiver android:name=".mybroadcastreceiver"> <intent-filter> <action android:name="com.example.broadcastreceiverdemo" /> </intent-filter> </receiver> </application> <uses-sdk android:minsdkversion="3" /> </manifest> 15

16 在上述代码中, 第 14 行代码中创建了一个 <receiver> 节点 ; 在第 15 行中声明了 Intent 过滤器的动作为 com.example.broadcastreceiverdemo, 这与 BroadcastReceiverDemo.java 文件中 Intent 的动作相一致, 表明这个 BroadcastReceiver 可以接收动作为 com.example. BroadcastReceiverDemo 的广播消息 MyBroadcastReceiver.java 文件创建了一个自定义的 BroadcastReceiver, 其核心代码如代码清单 6-26 所示 代码清单 6-26 MyBroadcastReceiver.java public class MyBroadcastReceiver extends BroadcastReceiver public void onreceive(context context, Intent intent) { String msg = intent.getstringextra("message"); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 在上述代码中, 第 1 行代码首先继承了 BroadcastReceiver 类 ; 第 3 行代码重载了 onreceive() 函数, 当接收到 AndroidManifest.xml 文件定义的广播消息后, 程序将自动调用 onreceive() 函数 6.5 本章小结 本章主要对 Android 组件间的通信进行学习, 包括 Intent 进行组件通信的原理 Intent 启动 Activity 的方法 获取 Activity 返回值的方法 Intent 过滤器的原理及其匹配机制 发送和接收广播消息的方法 关键知识点测评 1. 以下有关 Intent 的说法, 不正确的一个是 ( ) A.Intent 不可以用于应用程序之间交互 B.Intent 可以通过 Context.startActivity() 启动一个 Activity C.Intent 可以启动 Activity 和 Service, 在 Android 系统上发布广播消息 D.Intent 描述了动作的产生组件 接收组件和传递的数据信息 2. 以下有关 Intent 的叙述, 正确的一个是 ( ) A.Intent 显式启动时, 构造函数的第 2 个参数是应用程序上下文 B. 隐式启动 Activity 时, 匹配的 Activity 不可以是第三方应用程序提供的 C.Android 系统可以在 Intent 中指明启动的 Activity 所在的类, 也可以根据 Intent 的动作和数据来决定启动哪一个 Activity D. 只有 Activity 组件可以注册 Intent 过滤器 联系方式 集团官网 : 嵌入式学院 : 移动互联网学院 : 企业学院 : 物联网学院 : 研发中心 :dev.hqyj.com 集团总部地址 : 北京市海淀区西三旗悦秀路北京明园大学校内华清远见教育集团 北京地址 : 北京市海淀区西三旗悦秀路北京明园大学校区, 电话 : /5 上海地址 : 上海市徐汇区漕溪路 250 号银海大厦 11 层 B 区, 电话 :

17 深圳地址 : 深圳市龙华新区人民北路美丽 AAA 大厦 15 层, 电话 : 成都地址 : 成都市武侯区科华北路 99 号科华大厦 6 层, 电话 : 南京地址 : 南京市白下区汉中路 185 号鸿运大厦 10 层, 电话 : 武汉地址 : 武汉市工程大学卓刀泉校区科技孵化器大楼 8 层, 电话 : 西安地址 : 西安市高新区高新一路 12 号创业大厦 D3 楼 5 层, 电话 :

智能移动平台应用开发5 Android组件通信1 Intent

智能移动平台应用开发5 Android组件通信1 Intent 第 5 章 Adroid 组件通信 杨刚中国人民大学 本章学习目标 了解使用 Itet 进行组件通信的原理 掌握使用 Itet 启动 Activity 的方法 掌握获取 Activity 返回值的方法 了解 Itet 过滤器的原理与匹配机制 在一个 Adroid 应用中, 主要是由四种组件组成的 Activity, Itet Receiver, Service, Cotet Provider 这四种组件相互独立

More information

为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity Service Intent Broadcast R

为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity Service Intent Broadcast R 移动平台应用软件开发 Intent( 意图 ) 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 为什么引入 Intent Android 应 用程序的四 大组件 Activities Services Content Providers Broadcast Receivers 解决 Android 应用的各项组件之间的通讯 Activity

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378>

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378> Android 应用程序开发与典型案例 作者 : 华清远见 第 2 章 Android 开发环境搭建 本章简介 本章主要介绍在 Windows 环境下,Android 开发环境的搭建步骤及注意事项, 包括 JDK 和 Java 开发环境的安装和配置 Eclipse 的安装 Android SDK 和 ADT 的安装和配置等 ; 同时介绍了 Android 开发的基本步骤 2.1 Android 开发环境的安装与配置

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

移动终端开发与应用

移动终端开发与应用 移动终端开发与应用 第一节 Android 系统的信使 :Intent 2 Intent 概述 Android 系统从诞生之初就不允许直接访问 4 大组件 (Activity Service Broadcast Receiver 和 Content Provider) 而是通过 Intent 对象来跟各种组件进行交互 Intent 对象被应用于 4 大组件中的 3 个 (Activity Service

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并 第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并接收广播中的消息就需要使用 BroadcastReceiver( 广播接收者 ), 广播接收者是 Android

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Outlines for Today Future Planning Review System Architecture Dev. Tools & Making the First App Project Structure & File Details Application

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

第一章 Android 简介与开发环境搭建

第一章 Android 简介与开发环境搭建 安卓开发环境与常用布局 第一章 Android 简介与开发环境搭建 本章目标 3G 的概念 Android 的改变 Android 开发环境的搭建编写第一个 Android 程序 Android 程序的目录结构 手机发展史 1. 3G 的概念 3G 全称为 :3rd Generation, 中文含义即为第三代数字通信, 是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统 2. 符合 3G

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

DU Ad Platform_SDK 安卓接入指南 DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0 百度在线网络技术 ( 北京 ) 有限公司 百度在线网络技术 ( 北京 ) 有限公司 - 1 -

DU Ad Platform_SDK 安卓接入指南 DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0 百度在线网络技术 ( 北京 ) 有限公司 百度在线网络技术 ( 北京 ) 有限公司 - 1 - DU Ad Platform_SDK for Android 接入手册 ( 触发式广告 ) DUAd_SDK_Trigger v1.0-1 - 目录 1. 获取身份... 1 2. 加载与配置... 2 2.1 加载 SDK 文件... 2 2.2 配置 AndroidManifest.xml... 2 2.3 混淆代码... 3 3. 初始化... 4 4. 功能使用... 4 第 1 页共 1

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

拉卡拉云POS终端收单支付应用组件调用接口说明

拉卡拉云POS终端收单支付应用组件调用接口说明 拉 卡 拉 互 联 网 POS+ 项 目 收 单 应 用 调 用 接 口 说 明 拉 卡 拉 商 服 公 司 二 一 五 年 八 月 1 文 档 级 别 项 目 组 产 品 部 测 试 部 编 写 者 项 目 组 版 本 1.08 创 建 日 期 2015-08-10 最 后 修 改 日 期 2016-01-22 文 档 修 改 记 录 版 本 修 改 日 期 修 改 人 说 明 1.00 2015-08-10

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

Microsoft Word - 第3章 Activity.doc

Microsoft Word - 第3章 Activity.doc 第 3 章 Activity 学习目标 u 掌握 Activity 的生命周期 u 掌握 Activity 的四种启动模式 u 掌握显式意图和隐式意图的使用 u 学会使用 Intent 传递数据在现实生活中, 经常会使用手机进行打电话 发短信 玩游戏等, 这就需要与手机界面进行交互 在 Android 系统中, 用户与程序的交互是通过 Activity 完成的 同时 Activity 也是 Android

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Microsoft Word - 第4章 Android生命周期.docx

Microsoft Word - 第4章 Android生命周期.docx Android 应用程序开发与典型案例 作者 : 华清远见 第 4 章 Android 生命周期 本章简介 经过上一章的学习, 主要了解了 Android 应用程序设计的基础知识, 对 Android 程序的开发有了一定的了解 在此基础上, 本章将对 Android 系统的进程优先级的 变化方式 Android 系统的 4 大基本组件 Activity 的生命周期中各个状态的变化关 系 Android

More information

TVS厂商接入流程API文档

TVS厂商接入流程API文档 TVS 登录接 入 一. 登录验证流程 1. 厂商 APP-LWA-AVS 音箱 -AVS 验证流程 2. 厂商 APP- 微信开发平台 -TVS 后台 -TVS 音箱 -TVS 验证流程 3 厂商 APP-QQ 互联平台 -TVS 后台 -TVS 音箱 -TVS 验证流程 二 厂商 APP 接 入 TVS 登录系统配置步骤 1. 打开 工程 app 目录下的 build.gradle, (1) 确保

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

基于Cortex-A8 Android&Linux系统与应用开发

基于Cortex-A8 Android&Linux系统与应用开发 安 全 提 示 非 常 感 谢 您 选 购 联 创 中 控 ( 北 京 ) 科 技 有 限 公 司 的 产 品, 在 首 先 打 开 包 装 箱 后 请 依 据 产 品 清 单 检 查 配 件, 若 发 现 产 品 主 配 件 有 损 坏 或 缺 失, 请 尽 快 与 您 的 经 销 商 或 技 术 支 持 联 络 产 品 使 用 前, 务 必 先 阅 读 本 手 册 实 验 平 台 须 使 用 配

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 An

Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 An Chapter 16 Widget 作者 : 林致孙 不少 Android 手機在使用者剛購買時, 手機的桌面上就已經有不少的小工具 (Widget), 有些可以即時顯示氣候資訊, 有些則可以顯示最新股票資訊 本章將 利用兩個例子來說明 Widget 是如何設計的 16.1 時辰顯示小工具 在 Android 開發者網站, 已針對 Widget 的開發提供了一份詳細的文件 [1], 本章大部份的內容皆是參考該文件而製作的,

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 多个用户界面的程序设计 3.1 页面的切换与传递参数值 3.1.1 传递参数组件 Intent Intent 是 Android 系统的一种运行时的绑定机制, 在应用程序运行时连接两个不同组件 在 Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到 Intent Intent 负责对应用中某次操作的动作 动作涉及的数据 附加数据进行描述, Android

More information

Android 开发教程

Android 开发教程 封面 1 Android 模拟器 模拟器参数 参数格式 emulator [option] [-qemu args] option 选项 -sysdir 为模拟器在 目录中搜索系统硬盘镜像 -system 为模拟器从 文件中读取初始化系统镜像 -datadir 设置用户数据写入的目录 -kernel 为模拟器设置使用指定的模拟器内核

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系 教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24 Agilent N700 N71A-9A, N70A-2A, N761A-69A, N770A-72A 2 70 W 100 W 600 V 180 A 1 U 8-26 Vac AC LAN,USB GPIB Agilent N700 1U 70W 100W 2 6V 600V 1.A 180A N700 1U 19 100W LED N700 OVP UVL UVL OVP N700 GPIB

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

Microsoft Word - 02.目錄.doc

Microsoft Word - 02.目錄.doc 目錄 -1- 目錄 序 準備篇 一 使用說明... 0-2 二 標示說明... 0-6 三 注意事項... 0-7 第一類 Android 基礎知識 -UI 設計及語法應用 101. 整存整付計算機... 1-2 102. 電費計算機... 1-8 103. 點餐系統... 1-18 104. 計算 BMI 值... 1-23 105. MENU 功能選單... 1-36 106. 畫廊展示...

More information

Android 开发教程

Android 开发教程 封面 1 文件存取编程基础 文件 文件可以用来存储比使用引用更大数量的数据 Android 提供方法来读 写文件 只有本地文件可以被访问 优点 : 可以存储大容量的数据 缺点 : 文件更新或是格式改变可能会导致巨大的编程工作 文件操作 读文件 Context.openFileInput(String name) 打开一个与应用程序联系的私有文件输入流 当文件不存在时抛出 FileNotFoundException

More information

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4 WebEx 一键集成 1 文档目的...1 2 Web 集成...1 2.1 URL API 语法...1 2.2 启会...2 2.3 加会...3 2.4 调用...3 3 移动集成...3 3.1 wbx schema...3 3.2 调用...4 4 取得 sessionticket...4 1 文档目的 本文档目的是, 让用户了解如何在 Web 端和移动端, 一键调用 WebEx app,

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

第6讲

第6讲 移 动 终 端 开 发 平 台 介 绍 (Android) 哈 尔 滨 工 业 大 学 软 件 学 院 唐 好 选 Email:tanghx@hit.edu.cn 主 要 内 容 Android 的 技 术 架 构 Android 开 发 环 境 的 建 立 Android 的 基 本 组 件 Android 程 序 的 基 本 结 构 什 么 是 Android Android 本 义 指 机 器

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

掌盟 SoEasy SDK 开发者帮助文档 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion="19" b) 如果 AndroidManifest.xml 有 insta

掌盟 SoEasy SDK 开发者帮助文档 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion=19 b) 如果 AndroidManifest.xml 有 insta 1. 接入前项目检查 根据游戏接入后出现的问题, 对游戏项目做以下几点要求 : a) AndroidManifest.xml 中 android:targetsdkversion="19" b) 如果 AndroidManifest.xml 有 installlocation 选项时, 参数设置为 auto c) AndroidManifest.xml 中的 Activity 需要进行如下配置 android:configchanges="keyboardhidden

More information

ContextMenu

ContextMenu 作者 : 林致宇 日期 :2012/1/20 問題 : 如何建立 ContextMenu? 解答 : 什麼是 ContextMenu 呢? 下面兩張圖是 ContextMenu 的範例, 紅色框線中的選單即所謂的 ContextMenu, 可以視為 選單列表, 例如在左圖的 ContextMenu 中有兩個選項 : Action 1 與 Action 2, 按下 Action 1 可執行某些動作,

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 应用程序开发与典型案例 作者 : 华清远见 第 1 章 Android 基本概念 本章目标 本章介绍 Android 基本概念方面的内容, 包括 Android 平台特性 Android 系 统架构 Android 开发框架以及 OMS 介绍 1.1 Android 简介 Android 一词的本义指 机器人, 它是由 Google 公司于 2007 年 11 月推出的基于 Linux

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

國家圖書館典藏電子全文

國家圖書館典藏電子全文 EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active

More information

<4D6963726F736F667420576F7264202D20B5DA33D5C220B3CCD0F2C9E8BCC6BBF9B4A12E646F6378>

<4D6963726F736F667420576F7264202D20B5DA33D5C220B3CCD0F2C9E8BCC6BBF9B4A12E646F6378> Android 应 用 程 序 开 发 与 典 型 案 例 作 者 : 华 清 远 见 第 3 章 程 序 设 计 基 础 本 章 简 介 在 上 一 章 的 学 习 中, 主 要 了 解 了 Eclipse+ADT 的 开 发 流 程, 对 其 有 了 初 步 的 认 识 和 了 解 对 初 学 者 来 说, 这 一 章 的 内 容 比 较 烦 琐, 但 是 又 必 须 掌 握, 这 也 是 进

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech - OfficeCoder 1 2 3 4 1,2,3,4 xingjiarong@mail.sdu.edu.cn 1 xuchongyang@mail.sdu.edu.cn 2 sun.mc@outlook.com 3 luoyuanhang@mail.sdu.edu.cn 4 Abstract. Microsoft Word 2013 Word 2013 Office Keywords:,, HTML5,

More information

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android= 第 6 章广播接收者 应用案例 案例 6-1 CallRecord( 通话记录 ) 一 案例描述 1 考核知识点 030006001: 广播接收者简介 030006002: 广播接收者的创建 2 练习目标 广播的静态注册和使用 使用广播处理处理事件 3 需求分析手机最重要的功能就是通话功能, 同样储存通话记录也是必不可少的 该案例使用广 播接收者自己实现通话记录的功能 包括呼出电话 已接来电 未接来电以及通话产生的

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information