《ARM技术及其应用》实验指导书扬州大学物理科学与技术学院2019年5月
《ARM 技术及其应用》实验指导书 扬州大学物理科学与技术学院 2019 年 5 月
目录实验一Android应用开发1·001实验二Android应用开发2.026实验三Android应用开发3..·064实验四Android源码编译.·098实验五Android驱动开发·138实验六Android底层开发·171.实验七Android设备开发1.·252实验八Android设备开发2.271附录一参考程序,·288附录二补充实验307
目录 实验一 Android 应用开发 1···············································001 实验二 Android 应用开发 2···············································026 实验三 Android 应用开发 3···············································064 实验四 Android 源码编译·················································098 实验五 Android 驱动开发················································138 实验六 Android 底层开发················································171 实验七 Android 设备开发 1···············································252 实验八 Android 设备开发 2···············································271 附录一 参考程序·························································288 附录二 补充实验·························································307
实验一Android应用开发1一实验自的1理解Android服务、广播与通知基本原理。2掌握Android服务、广播与通知应用程序设计方法。3掌握Android实验箱使用方法,二实验原理2.1Android服务1Services组件一个Service是一个应用程序组件,它能完成长时间运行的操作在后台,并且不提供用户接口。另一个应用程序组件能开启一个service并且它将继续运行在后台即使用户转换到另一个应用程序。额外的,一个组件可以被绑定到一个service来和它交互甚至完成进程间通信。例如,一个service可能操作网络联接、播放音乐、执行I/O或和一个contentprovider交互,所有这些都是在后台进行。2回调方法(1)onStartCommandO系统调这个方法,当另一个组件,例如一个activity,请求启动这个service通过startServiceO。一旦这个方法执行,这个service将启动并且无期限的运行在后台。如果你实现这个,那么停止service就是你的责任了,当它的工作完成,通过调用stopSelfO)或stopServiceO。(如果你只希望提供绑定,你不需要实现这个方法)(2)onBind系统调用这个方法,当另一个组件希望绑定service(例如RPC),通过bindService()。在你这个方法的实现中,你必须提供一个客户使用的来和这个service通信的接口,通过一个IBinder。你必须一直实现这个函数,但如果你不希望允许绑定,那么你返回null。(3)onCreate0系统调用这个方法,当service第一次被创建,实现一次安装的步骤(在它调onStartCommandO)和onBindO之前)。如果service已经在运行,那么这个方法不会调用。(4)onDestroy0)系统调用这个方法,service不再使用将被摧毁。你的service应该实现这个来清理所有资源例如线程、注册的监听者、接收器等。这是service接收到的最后一个调用。2.2广播接收者1Android四大组件之BroadcastReceiverBroadcastReceiver用于接收并处理广播通知。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的broadcastreceivers来响应它觉得重要的通知。broadcastreceiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,BroadcastReceiver在后台执行,不能生成UI,对用户是不可见的。2BroadcastReceiver的注册方式1
1 实验一 Android 应用开发 1 一 实验目的 1 理解 Android 服务、广播与通知基本原理。 2 掌握 Android 服务、广播与通知应用程序设计方法。 3 掌握 Android 实验箱使用方法。 二 实验原理 2.1 Android 服务 1 Services 组件 一个 Service 是一个应用程序组件,它能完成长时间运行的操作在后台,并且不提供用户接 口。另一个应用程序组件能开启一个 service 并且它将继续运行在后台即使用户转换到另一 个应用程序。额外的,一个组件可以被绑定到一个 service 来和它交互甚至完成进程间通信。 例如,一个 service 可能操作网络联接、播放音乐、执行 I/O 或和一个 content provider 交互, 所有这些都是在后台进行。 2 回调方法 (1)onStartCommand() 系统调这个方法,当另一个组件,例如一个 activity,请求启动这个 service 通过 startService()。 一旦这个方法执行,这个 service 将启动并且无期限的运行在后台。如果你实现这个,那么 停止 service 就是你的责任了,当它的工作完成,通过调用 stopSelf()或 stopService()。(如果 你只希望提供绑定,你不需要实现这个方法) (2)onBind() 系统调用这个方法,当另一个组件希望绑定 service(例如 RPC),通过 bindService()。在你这 个方法的实现中,你必须提供一个客户使用的来和这个 service 通信的接口,通过一个 IBinder。 你必须一直实现这个函数,但如果你不希望允许绑定,那么你返回 null。 (3)onCreate() 系统调用这个方法,当 service 第一次被创建,实现一次安装的步骤(在它调 onStartCommand() 和 onBind()之前)。如果 service 已经在运行,那么这个方法不会调用。 (4)onDestroy() 系统调用这个方法,service 不再使用将被摧毁。你的 service 应该实现这个来清理所有资源 例如线程、注册的监听者、接收器等。这是 service 接收到的最后一个调用。 2.2 广播接收者 1 Android 四大组件之 BroadcastReceiver Broadcast Receiver 用于接收并处理广播通知。多数的广播是系统发起的,如地域变换、电量 不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers 来 响应它觉得重要的通知。broadcast receiver 可以通过多种方式通知用户:启动 activity、使用 NotificationManager、开启背景灯、振动设备、播放声音等,BroadcastReceiver 在后台执行, 不能生成 UI,对用户是不可见的。 2 BroadcastReceiver 的注册方式
静态注册:在AndroidManifest.xml中注册动态注册:在Activity的onResumeO方法中注册,在onPauseO方法中注销。区别:静态注册的广播当程序退出时仍然一直有效,动态注册的广播只在应用程序中有效。3BroadcastReceiver的发送与接收消息发送:广播消息的实质就是一个Intent对象。使用sendBroadcast(或sendOrderBroadcastO)方法发出去的Intent,所有满足条件的BroadcastReceiver都会执行其onReceiveO方法。sendOrderBroadcastO发出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行,相同优先级的BroadcastReceiver则是随机执行。消息接收:当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法,并在其中执行接收到广播时需要的操作。2.3消息通知1Notification简介Notification是应用程序提醒用户发生某些事件的一种方式,它无须某个Activity可见。通知是由NotificationManager进行处理的,它包括以下功能:显示状态栏图标、灯光/LED闪烁、让手机振动、发出声音提醒、在通知托盘中显示额外的信息和在通知托盘中使用交互式操作来广播Intent。Notification是那些不可见的应用程序组件(BroadcastReceiver、Service等)的首选机制用来提醒用户,需要他们注意的事件已经发生。它们也可以用来指示持续运行的后台Service-一特别是已经被设置为具有前台优先级的Service。常量:DEFAULTALL使用所有默认值,比如声音,振动,闪屏等等:DEFAULTLIGHTS使用默认闪光提示:DEFAULTSOUNDS使用默认提示声音:DEFAULTVIBRATE使用默认手机振动。设置flag位:FLAGAUTO_CANCEL该通知能被状态栏的清除按钮给清除掉;FLAGNO_CLEAR该通知能被状态栏的清除按钮给清除掉:FLAGONGOINGEVENT通知放置在正在运行;FLAGINSISTENT是否一直进行,比如音乐一直播放,知道用户响应。常用字段:contentlntent设置Pendinglntent对象,点击时发送该Intent;defaults添加默认效果;flags设置flag位,例如FLAG_NOCLEAR等icon设置图标:sound设置声音;tickerText显示在状态栏中的文字;when发送此通知的时间戳。2
2 静态注册:在 AndroidManifest.xml 中注册 动态注册:在 Activity 的 onResume()方法中注册,在 onPause()方法中注销。 区别:静态注册的广播当程序退出时仍然一直有效,动态注册的广播只在应用程序中有效。 3 BroadcastReceiver 的发送与接收 消息发送:广播消息的实质就是一个 Intent对象。使用sendBroadcast ()或 sendOrderBroadcast() 方法发出去的 Intent,所有满足条件的 BroadcastReceiver 都会执行其 onReceive()方法。 sendOrderBroadcast ()发出去的 Intent,会根据 BroadcastReceiver 注册时 Intent Filter 设置的优 先级的顺序来执行,相同优先级的 BroadcastReceiver 则是随机执行。 消息接收:当 Intent发送以后,所有已经注册的 BroadcastReceiver 会检查注册时的 IntentFilter 是否与发送的 Intent 相匹配,若匹配则就会调用 BroadcastReceiver 的 onReceive()方法。所以 当我们定义一个 BroadcastReceiver 的时候,都需要实现 onReceive()方法,并在其中执行接 收到广播时需要的操作。 2.3 消息通知 1 Notification 简介 Notification 是应用程序提醒用户发生某些事件的一种方式,它无须某个 Activity 可见。通知 是由 Notification Manager 进行处理的,它包括以下功能:显示状态栏图标、灯光/LED 闪烁、 让手机振动、发出声音提醒、在通知托盘中显示额外的信息和在通知托盘中使用交互式操作 来广播 Intent。 Notification 是那些不可见的应用程序组件(Broadcast Receiver、Service 等)的首选机制用来 提醒用户,需要他们注意的事件已经发生。它们也可以用来指示持续运行的后台 Service— —特别是已经被设置为具有前台优先级的 Service。 常量: DEFAULT_ALL 使用所有默认值,比如声音,振动,闪屏等等; DEFAULT_LIGHTS 使用默认闪光提示; DEFAULT_SOUNDS 使用默认提示声音; DEFAULT_VIBRATE 使用默认手机振动。 设置 flag 位: FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉; FLAG_NO_CLEAR 该通知能被状态栏的清除按钮给清除掉; FLAG_ONGOING_EVENT 通知放置在正在运行; FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应。 常用字段: contentIntent 设置 PendingIntent 对象,点击时发送该 Intent; defaults 添加默认效果; flags 设置 flag 位,例如 FLAG_NO_CLEAR 等; icon 设置图标; sound 设置声音; tickerText 显示在状态栏中的文字; when 发送此通知的时间戳
2NotificationManager简介NotificationManager是用来处理Notification的系统Service。使用getSystemService方法可以获得对它的引用,通过它可以出发新的Notification,修改现有的Notification或者删除那些不再需要的Notification。NotificationManager常用方法介绍:publicvoidcancelAllO移除所有通知(只是针对当前Context下的Notification);publicvoidcancel(intid)移除标记为id的通知(只是针对当前Context下的所有Notification);publicvoidnotify(Stringtag,intid,Notificationnotification)将通知加入状态栏,标签tag,标记为id。publicvoidnotify(intid,Notificationnotification)将通知加入状态栏,标记为id。三实验内容3.1准备工作1软件准备工作(1)按下PC电源开关,启动Windows7系统。(2)单击Windows7桌面图标VMwareWorkstation,启动虚拟机管理软件VMware。(3)在VMware中,启动Linux系统Ubuntu10.04"。(4)使用用户名“ada"和密码“ada”,登录Ubuntu系统,如下图所示。星国O5)Ubuntu系统启动好之后,如果弹出UpdateManager对话框及子对话框,分别单击"Close按钮关闭这两个对话框。窗口不能立即关闭,单击左上角最小化按钮,最小化显示。3
3 2 Notification Manager 简介 Notification Manager 是用来处理 Notification 的系统 Service。使用 getSystemService 方法可 以获得对它的引用,通过它可以出发新的 Notification,修改现有的 Notification 或者删除那 些不再需要的 Notification。 NotificationManager 常用方法介绍: public void cancelAll() 移除所有通知(只是针对当前 Context 下的 Notification); public void cancel(int id) 移除标记为id的通知(只是针对当前Context下的所有Notification); public void notify(String tag ,int id, Notification notification) 将通知加入状态栏,标签 tag,标 记为 id。public void notify(int id, Notification notification) 将通知加入状态栏,标记为 id。 三 实验内容 3.1 准备工作 1 软件准备工作 (1)按下 PC 电源开关,启动 Windows 7 系统。 (2)单击 Windows 7 桌面图标“VMware Workstation”,启动虚拟机管理软件 VMware。 (3)在 VMware 中,启动 Linux 系统“Ubuntu 10.04”。 (4)使用用户名“ada”和密码“ada”,登录 Ubuntu 系统,如下图所示。 (5)Ubuntu 系统启动好之后,如果弹出“Update Manager”对话框及子对话框,分别单击“Close” 按钮关闭这两个对话框。窗口不能立即关闭,单击左上角最小化按钮,最小化显示