* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
CS499 – Mobile Application Development Fall 2013 Programming the Android Platform Introduction Course Information • Pre-reqs: C or better in CS 310 and CS367 • This course will teach fundamental programming principles with a focus on the mobile environment and the Android Platform. The course emphasizes practical application of numerous academic concepts. • This is a combined lecture/lab course. Expect to spend time outside class reading and coding. Course Information • • • • Instructor: Liz White email: [email protected] Office: 5315 Engineering We will be using Piazza for class discussion. There is no TA for this class; you should post questions to this board and answer questions posted by other students. Course Information • Exams: 30% (Final Exam & Midterm) • Course App: 30% • Programming Project & Labs: 40% – There will be both smaller labs and team projects assigned. There will be both coding and documentation requirements in the project. Course Information • No required text • Lots of documentation online – http://developer.android.com/ - start browsing today! • Initial version of my slides and labs come from a similar course at UMCP by Dr. Adam Porter What is Android? • A software stack for mobile devices – Operating system, – middleware – key applications • Use Android SDK (Java) to create applications – Libraries & development tools Android Architecture Linux Kernel • Abstraction Layer between HW & SW • Provides services such as – Security – Memory & process management – Network stack – Device driver model Linux Kernel • Android-specific components – Android shared memory – Power management – Alarm driver – Low memory killer – kernel debugger & logger Native Libraries Android Runtime • Core Libraries – android.*, java.*, javax.*, … – does not include all the standard Java SDK classes • Dalvik Virtual Machine – Applications written in Java – Do not run on the JVM – VM designed to run on a handset: Slow CPU, little RAM (~10mb at runtime), limited battery life DVM • • • • One .dex file for multiple classes Modified garbage collection Optimizations at installation time Register-based, rather than stack-based – avoids unnecessary memory accesses – 30% fewer instructions – see www.youtube.com/watch? v=ptjedOZEXPM Android Architecture Application Framework • Window Manager – Manages top-level window’s look & behavior • View System – lists, grid, text boxes, buttons, … • Content Providers – Inter-application data sharing • Activity Manager – Application lifecycle and common navigation stack Application Framework • Package Manager – Manages application packages • Telephony manager – State of telephony services • Resource Manager – deals with non-code resources: strings, graphics, layout files • Location Manager – System location services • Notification Manager – Notify users when events occur Applications • Standard apps including: – Home – main screen – Contacts – Phone – browser – email • YOUR APP! Developing Apps • New style of programming for most of you: Eventbased • User interface a key element. Will talk about how to create but not about what makes a good interface (a pretty involved topic!) • Concurrency – apps have a lifecycle that you will have to deal with – will need to deal with things like saving/restoring state when apps are interrupted. • Reuse – can use other components (camera, GPS, …) in your app – can use data on the device (contacts, …) in your app Next Class • Bring laptop if you plan to develop there. • Going to download/install the software and do a simple ‘Hello Android’ app • If you are developing on a non-portable device, you can work with a student who has a laptop so that you understand the process.