App Development for Android.ppt

上传人:twoload295 文档编号:378477 上传时间:2018-10-09 格式:PPT 页数:55 大小:707.42KB
下载 相关 举报
App Development for Android.ppt_第1页
第1页 / 共55页
App Development for Android.ppt_第2页
第2页 / 共55页
App Development for Android.ppt_第3页
第3页 / 共55页
App Development for Android.ppt_第4页
第4页 / 共55页
App Development for Android.ppt_第5页
第5页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、App Development for Android,Prabhaker Mateti,CEG 436 Specifics,Because CEG 436 is a 10-week term course skipped for now refreshers on Operating Systems TCP/IP Networking Cellular Telephony “Definitions” Mobile Devices/Smart Phone What is Android?,2,CEG436,Development Tools,(Android) Java Java syntax

2、 is the same. But, not all libs are included. Unused: Swing, AWT, SWT, lcdui Eclipse www.eclipse.org/ ADT Plugin for Eclipse Android SDK Android Device Emulator Development Platforms: Linux, Mac OSX, or Windows,3,CEG436,The Emulator,QEMU-based ARM emulator Displays the same image as the device Lim

3、itations: No Camera support,CEG436,4,Debugging,adb acts as a middleman between a device and your development system. It provides various device management capabilities, including moving and syncing files to the emulator, running a UNIX shell on the device or emulator, and providing a general means t

4、o communicate with connected emulators and devices. Dalvik Debug Monitor Server DDMS is a graphical program that communicates with your devices through adb. DDMS can capture screenshots, gather thread and stack information, spoof incoming calls and SMS messages, and has many other features. Device o

5、r Android Virtual Device An adb device daemon runs on the device or emulator and provides a means for the adb host daemon to communicate with the device or emulator. JDWP debugger The Dalvik VM supports the JDWP protocol to allow debuggers to attach to a VM. Java IDEs include a JDWP debugger, or you

6、 can use a command line debugger such as jdb.,5,CEG436,Android Application Package,res/layout: declaration layout filesres/drawable: intended for drawingres/anim: bitmaps, animations for transitionsres/values: externalized values strings, colors, styles, etcres/xml: general XML files used at runtime

7、res/raw: binary files (e.g., sound),An application consists of:,Java Code,Data Files,Resources Files,CEG436,6,Android Application Package,Using Java/Eclipse/ADT develop several source code files. An Android application is bundled by the “aapt” tool into an Android package (.apk) An .apk file is a zi

8、p file. Invoke unzip if you wish. “Installing” an Application is a built-in op of Android OS. May need to enable the trustworthiness of developer,CEG436,7,A Launcher: zeam-2.9.0.apk,( a highly incomplete list ) res/anim/apps_fade_in.xml res/color/bright_text_dark_focused.xml res/drawable/box_launche

9、r_top.xml res/drawable/timepicker_up_selected.9.png res/layout/application_list.xml res/xml/preferences.xml AndroidManifest.xml resources.arsc res/drawable-hdpi/action_notifications.png res/layout-land/application.xml classes.dex META-INF/MANIFEST.MF META-INF/CERT.SF META-INF/CERT.RSA,8,CEG436,Andro

10、id Architecture,Android Architecture,10,CEG436,Linux Kernel,Works as a Hardware Abstraction Layer (HAL) Device drivers Keypad, Display, Power Mgmt, FlashMem, Binder, WiFi, Audio, Camera Memory management Process management Networking,11,CEG436,Linux Kernel Enhancements,Alarm Ashmem (Anonymous SHared

11、 MEMory) ashmem uses virtual memory, whereas pmem (process memory allocator) uses physically contiguous memory Binder an Android-specific inter-process communication mechanism, and remote method invocation system. Power Management Low Memory Killer echo “1536,2048,4096,15120,15360,23040“ /sys/module

12、/lowmemorykiller/parameters/minfree Kernel Debugger Logger (system logging facility),CEG436,12,Android Runtime,Dalvik VM a newly developed Java Virtual Machine dx tool translates .class files to .dex files Compact compared to .class files Optimized for memory and battery power Core Libraries Java St

13、d Edition Collections, I/O etc,13,CEG436,Libraries,Surface Manager: A compositing window manager similar to Compiz. Instead of drawing directly to the screen buffer, drawing commands go into off-screen bitmaps that are then combined with other bitmaps to form the display the user sees. Can create se

14、e-through windows, fancy transitions, 2D and 3D graphics: Use 3D hardware or a software renderer. OpenGL. Media codecs: AAC, AVC (H.264), H.263, MP3, MPEG-4, ,14,CEG436,Libraries,SQLite database engine Provides persistent storage. Also used in Firefox and the iPhone. Browser engine: WebKit library f

15、or rendering web pages the same engine is used in KDE, the Google Chrome browser, Apples Safari browser, the iPhone, and Symbian 60.,15,CEG436,Android NDK: Native C/C+ libraries,C/C+ libraries not the full glibc as in Linux distros Supported CPUs: ARM, x86 libc (C library) headers libm (math library

16、) headers JNI interface headers libz (Zlib compression) headers liblog (Android logging) header OpenGL ES headers libjnigraphics (Pixel buffer access) header A Minimal set of headers for C+ support OpenSL ES native audio libraries Android native application APISCross-toolchains (compilers, linkers,

17、.),16,CEG436,OpenGL ES,OpenGL ES is a subset of OpenGL graphics standard. low-level interface for graphics acceleration. floating-point and fixed-point systems. OpenGL ES 1.X is for fixed function hardware and offers acceleration, image quality and performance. OpenGL ES 2.X enables full programmabl

18、e 3D graphics. OpenGL SC is tuned for the safety critical market. http:/www.khronos.org/opengles/,17,CEG436,Application Framework,Views lists, grids, text boxes, buttons, and even an embeddable web browser Content Providers to access data from other applications (such as Contacts), or to share their

19、 own data A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files A Notification Manager that enables all applications to display custom alerts in the status bar An Activity Manager that manages the lifecycle of applications and provides a com

20、mon navigation backstack sic,CEG436,18,Standard Applications,Android provides a set of core applications: Email Client SMS Program Calendar Maps Browser Contacts Etc All applications are written using the Java language.,CEG436,19,Android Application Internals,Application Fundamentals,Each applicatio

21、n is a different “user”. Each application gets a unique Linux user ID. The system sets permissions for all the files in an application so that only the user ID assigned to that application can access them. Each process has its own Dalvik VM. Every application runs in its own Linux process. A process

22、 can have multiple threads.,21,CEG436,Application Components,Activity represents a single screen with a user interface. Service runs in the background; Long-running; for remote processes no user interface. Content provider manages a shared set of application data. Broadcast receiver responds to broa

23、dcast announcements. An application can have multiple instances of the above four types. Each component is a different point through which the system can enter an application. Every component has a managed lifecycle.,22,CEG436,.apk Internals,AndroidManifest.xml deployment descriptor for applications

24、. IntentReceiver as advertised by the IntentFilter tag. *.java files implement Android activity Main.xml visual elements, or resources, for use by activities. R.java automatically generated by Android Developer Tools and “connects“ the visual resources to the Java source code. Components share a Lin

25、ux process: by default, one process per .apk file. .apk files are isolated and communicate with each other via Intents or AIDL.,CEG436,23,Application Resources,anything relating to the visual presentation of the application images, animations, menus, styles, colors, audio files, resource ID alternat

26、e resources for different device configurations,24,CEG436,AndroidManifest.xml,Declares all application components:for content providersfor broadcast receivers The manifest can also: Identify any user permissions the application requires, such as Internet access or read-access to the users contacts.

27、Declare hardware and software features used or required by the application API libraries the application needs,25,CEG436,Life cycle of an Android activity,26,CEG436,Activity,Typically, one of the activities is marked as the first one that should be presented to the user when the application is launc

28、hed. Created “Activity” must be defined into the applications manifest. An activity is usually a single screen: Implemented as a single class extending Activity. Displays user interface controls (views). Reacts on user input/events.,CEG436,27,Activity,An application typically consists of several scr

29、eens: Each screen is implemented by one activity. Moving to the next screen means starting a new activity. An activity may return a result to the previous activity.,CEG436,28,Service,A service does not have a visual user interface, but rather runs in the background for an indefinite period time. Exa

30、mples: music player, network download, etc Each service extends the Service base class. It is possible to bind to a running service and start the service if its not already running. While connected, it is possible communicate with the service through an interface defined in AIDL (Android Interface D

31、efinition Language).,CEG436,29,Services,Similar to daemons in Linux/Unix or Windows services. Interprocess communication (IPC). A service is “started“ when a component does a startService(). Stops with stopSelf() or stopService() A service is “bound“ when a component does a bindService(). Multiple c

32、omponents can bind to the service at once. When all of them unbind, the service is destroyed. Can work both ways. (i) onStartCommand() allows components to start it and (ii) onBind() allows binding. (iii) onCreate() (iv) onDestroy(),30,CEG436,Broadcast Receivers,A broadcast receiver is a component t

33、hat receives and reacts to broadcast announcements (Intents). All receivers extend the BroadcastReceiver base class. Many broadcasts originate in system code. the time zone has changed the battery is low Applications can also initiate broadcasts.,CEG436,31,Content Providers,Enables sharing of data a

34、cross applications E.g. address book, photo gallery the only way to share data between applications. Provides uniform APIs for query, delete, update and insert. Applications do not call these methods directly. They use a ContentResolver object and call its methods instead. A ContentResolver can talk

35、 to any content provider. Content is represented by URI and MIME type.,CEG436,32,Content Providers,CEG436,33,Intent,Intents are system messages that notify applications of various events: Activity events ( launch app, press button) Hardware state changes (acceleration change, screen off, etc) Incomi

36、ng data (Receiving call, SMS arrived) An intent object is an action to be performed on some data Uri. It provides runtime binding between the code in different applications. Examples: ACTION_DIAL content:/contacts/people/13 Display the phone dialer with the person #13 filled in. ACTION_VIEW content:

37、/contacts/people/ Display a list of people, which the user can browse through. startActivity(new Intent(Intent.VIEW_ACTION, Uri.parse( “http:/www.fhnw.ch“); startActivity(new Intent(Intent.VIEW_ACTION, Uri.parse(“geo:47.480843,8.211293“); startActivity(new Intent(Intent.EDIT_ACTION, Uri.parse(“conte

38、nt:/contacts/people/1“); secondary attributes: category, type, component, extras,CEG436,34,public class Intent,startActivity to launch an activity. broadcastIntent to send it to a BroadcastReceiver Communicate with a Service startService(Intent) or bindService(Intent, ServiceConnection, int) Explici

39、t Intents specify a component to be run. setComponent(ComponentName) or setClass(Context, Class) Implicit Intents match an intent against all of the s in the installed applications. Will return to this topic later.,35,CEG436,Intent Filters,CEG436,36,IntentReceivers,Components that respond to broadca

40、st Intents Way to respond to external notification or alarms Apps can invent and broadcast their own Intent,37,CEG436,Example App: Hello World!, a very simple application Run it on the emulator Examine its structure,CEG436,40,Package Content,Java code for our activity,All source code here,Generated

41、Java code Helps link resources to Java code,Layout of the activity,Strings used in the program,All non-code resources,Android Manifest,Images,CEG436,41,Android Manifest,CEG436,42,HelloAndroid.java,package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; import android

42、.widget.TextView; public class HelloAndroid extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(“Hello, Android by hand“); setContentView(tv); ,Set

43、the view “by hand” from the program,Inherit from the Activity Class,CEG436,43,Run it!,CEG436,HelloAndroid.java,package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity /* Called when the activity is first created. */ Override

44、 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); ,CEG436,44,Set the layout of the view as described in the main.xml layout,45,/res/layout/main.xml,Further redirection to /res/values/strings.xml,CEG436,46,/res/values/strings.xml,Hello

45、 World, HelloAndroid by resources!Hello, Android ,CEG436,47,/gen/R.java,package com.example.helloandroid; public final class R public static final class attr public static final class drawable public static final int icon=0x7f020000; public static final class id public static final int textview=0x7f

46、050000; public static final class layout public static final int main=0x7f030000; public static final class string public static final int app_name=0x7f040001; public static final int hello=0x7f040000; ,CEG436,48,Run it!,CEG436,49,Introduce A Bug,package com.example.helloandroid; import android.app.

47、Activity; import android.os.Bundle; public class HelloAndroid extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); Object o = null; o.toString(); setContentView(R.layout.main); ,CEG436,50,Run it

48、!,CEG436,Case Studies of Applications,ADW.Launcher,ADW.Launcher is an open source Home Replacement app. it is included as the main Launcher in Cyanogens custom ROMs. I will be (?) using the source code of this app as a running example. Download the source from http:/ Suggestions,Augmented Campus Reality camera + maps + compass = heads up info Games multi-player (bluetooth, wifi, cell) location-based (scavenger hunt) Custom overlays for maps weather, traffic, friends,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1