1 / 29

CSCE 4013: Mobile Systems Programming

CSCE 4013: Mobile Systems Programming. Nilanjan Banerjee. University of Arkansas Fayetteville, AR nilanb@uark.edu http:// mpss.csce.uark.edu/mobsys /. Mobile Systems Programming. Few reasons to go MAD with phones…. Smart phones Internet a ccess anywhere Social networking

booth
Télécharger la présentation

CSCE 4013: Mobile Systems Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCE 4013: Mobile Systems Programming Nilanjan Banerjee University of Arkansas Fayetteville, AR nilanb@uark.edu http://mpss.csce.uark.edu/mobsys/ Mobile Systems Programming

  2. Few reasons to go MAD with phones… • Smart phones • Internet access anywhere • Social networking • Millions of mobile users • Open standards

  3. Introduction to Android • Open software platform for mobile development • A complete stack—OS, middleware, and Applications • An open Handset Alliance (OHA) project • Powered by the Linux OS • Fast application development in Java • Open source under the Apache 2 license

  4. Architecture for Android.

  5. Linux kernel • Works as the HAL (Hardware Abstraction Layer) • Device drivers • Memory management • Process management • Network stack

  6. Libraries • C/C++ libraries • Interfaces through Java • Surface manager --- handles the UI Windows • 2D and 3D graphics • Media Codecs, SQLlite, Browser engine

  7. Android runtime • Dalvik VM • Dex file • Compact and efficient than class files • Core Libraries • Java 5 Std Edition • Collections, I/O --- everything that is in standard Java

  8. Application Framework • API Interface • Activity Manager • Manages application lifetime

  9. Lets jump into a simple Android application

  10. Components of an Android application • Activity • Intent and IntentReceiver • Service • ContentProvider • AndroidManifest (binds all of these together)

  11. Activities • Typically corresponds to one UI screen • But they can be • Faceless • A floating window • Return a value • Typically a complex application will have multiple activites • E.g., email application • Activity 1: log in page • Activity 2: displaying a set of email • Transfer data between activities • Usually form a bundle and pass it around (we will talk about in detail)

  12. Intents • A description of what you want done… something like a verb • E.g. Intent of a music player is to PLAY • Intents are of two types – Implicit and Explicit • Explicit • Application states which Java function to use • Implicit • System decides for you which intent is best for you

  13. Intents Home Picasa Photo Gallery Contacts “Pick photo” GMail Client component makes a request for a specific action System picks best component for that action Chat New components can use existing functionality Blogger Blogger

  14. Intent Receivers • Components that respond to broadcast ‘Intents’ • Way to respond to external notification or alarms • Apps can invent and broadcast their own intent • Using intent filters applications can decide which Intent to respond to

  15. Services • Faceless components that run in the background • E.g., music players, network downloads

  16. Content Provider • Store and retrieves data and makes it accessible to all applications • Resources are specific to your application • Your application can define a content provider and publish it. • Android stores content provider in the form of a database • You can access it in your application • Android provides audio, video, images, personal information • android.provider.Contacts.Phone.

  17. Resources • Utilities that an application uses and “reuses” • Strings, colors, dimensions, style/theme • .

  18. Application lifecycle Activity starts onCreate() onStop() Process is killed onStart() activity is no longer visible onResume() activity comes to foreground Activity running activity comes to background onPause()

  19. Lets look at code again

  20. Developing UIs in Android • Drag and Drop UI development • Using XML + Java • Using Java alone (similar to Swing and AWT) • .

  21. Layouts • Layouts are defined in a layout file (e.g., main.xml) • A layout is made up of Views and ViewGroups. • Every layout file has one root view • <?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > • <TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a TextView" /> • <Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, I am a Button" /></LinearLayout>

  22. Loading an XML resource • When the application is compiled, each XML layout file is compiled into a View resource. • This View resource should be loaded in your application code in Activity.onCreate() • public void onCreate(Bundle savedInstance) { • super.onCreate(savedInstance); • setContentView(R.layout.main); • }

  23. Views and Widgets • View is the basis of all UI elements such as Widgets (buttons, TextView, Menus, etc. etc.). It is superclass of all Widget classes • Each View or ViewGroup object supports a bunch of XML attributes (properties) • ID • How do I create an instance of the Widget object from my Java code? • android:id = “@+id/my_button” (local resource) • android:id = “android:id/zzz” (android resource) • <Button android:id=“@+id/my_button” • android:layout_height=“wrap_content” • android:layout_width=“wrap_content” • android:text=“My Button” /> • Button myButton = (Button) findViewById(R.id.my_button)

  24. Views and Widgets • Layout parameters • layout_width, layout_height, layout_margin, • wrap_content : use space equal to the text inside the view uses • fill_parent: use as much space as used by the parent view • dip: density independent pixels • Frame layout • Designed to display one item at a time • You can have multiple widgets but they will be positioned based on top left of the screen • Relative layout • Helps greatly when you want to place Views relative to previous views placed in the actvity • Lets take an example

  25. Other interfaces • onLongClick() (View.onLongClickListener) • When a user touches or holds an item • onFocusChange() (View.onFocusChangeListener) • Navigates onto or away from an item. • onKey() (View.onKeyListener) • User is focussed on an item and presses of releases a key

  26. Handling UI events

  27. Handling UI events

  28. Assignment

  29. Next class and todolist • Continue on application basics for the Android • Form your group • Pls take a phone if you have already formed a group • Set up eclipse with the android SDK and plugin if you have not done so • Set up Windows Phone 7 IDE

More Related