Your SlideShare is downloading. ×
0
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Android for Java Developers
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Android for Java Developers

2,820

Published on

Android for Java Developers presentation that Marko did at AnDevCon in SF.

Android for Java Developers presentation that Marko did at AnDevCon in SF.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,820
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
267
Comments
1
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Android   for  Java  Developers   Marko  Gargenta   marakana.com  © 2011
  • 2. About  Marko  Gargenta   Developer of Android Bootcamp for Marakana. Instructor for 1,000s of developers on Android at Qualcomm, Cisco, Motorola, Texas Instruments, Sony- Ericsson, Sharp, NetGear, DoD and other great orgs. Author of Learning Android published by O’Reilly. Speaker at OSCON, ACM, IEEE, SDC, AnDevCon. Founder of SFAndroid.org© 2011
  • 3. Agenda   •  The  Stack   •  Hello  World!   •  Main  Building  Blocks   •  Designing  an  Android  App   •  Android  User  Interface   •  OperaEng  System  Features   •  Debugging  and  Tools   •  Summary  © 2011
  • 4. ANDROID  STACK  © 2011
  • 5. The  Stack  © 2011
  • 6. Linux  Kernel   Android runs on Linux. Applications Home Contacts Phone Browser Other Linux provides: Hardware abstraction layer Application Framework Memory management Activity Window Content View Process management Manager Manager Providers System Package Telephony Resource Location Notiication Networking Manager Manager Manager Manager Manager Libraries Users never see Linux sub system Surface Media SQLite Android Runtime Manager Framework Core Libs The adb shell command opens OpenGL FreeType WebKit Delvik Linux shell SGL SSL libc VM Display Camera Linux Kernel Flash Binder Driver Driver Driver Driver Keypad WiFi Audio Power Driver Driver Driver Mgmt© 2011
  • 7. NaEve  Libraries   Pieces borrowed from other Applications open source projects: Home Contacts Phone Browser Other Bionic, a super fast and small Application Framework license-friendly libc library optimized Activity Manager Window Manager Content Providers View System for Android Package Telephony Resource Location Notiication Manager Manager Manager Manager Manager WebKit library for fast HTML Libraries rendering Surface Manager Media Framework SQLite Android Runtime Core Libs OpenGL FreeType WebKit OpenGL for graphics Delvik VM SGL SSL libc Media codecs offer support for major audio/video codecs Display Camera Linux Kernel Flash Binder Driver Driver Driver Driver Keypad WiFi Audio Power Driver Driver Driver Mgmt SQLite database Much more…© 2011
  • 8. Dalvik   Dalvik VM is Android implementation of Java VM Dalvik is optimized for mobile devices: •  Battery consumption •  CPU capabilities Key Dalvik differences: •  Register-based versus stack-based VM •  Dalvik runs .dex files •  More efficient and compact implementation •  Different set of Java libraries than JDK© 2011
  • 9. ApplicaEon  Framework   The rich set of system services Applications wrapped in an intuitive Java API. Home Contacts Phone Browser Other This ecosystem that developers Application Framework can easily tap into is what makes Activity Window Content View writing apps for Android easy. Manager Manager Providers System Package Telephony Resource Location Notiication Manager Manager Manager Manager Manager Location, web, telephony, WiFi, Libraries Bluetooth, notifications, media, Surface Manager Media Framework SQLite Android Runtime camera, just to name a few. Core Libs OpenGL FreeType WebKit Delvik VM SGL SSL libc Display Camera Linux Kernel Flash Binder Driver Driver Driver Driver Keypad WiFi Audio Power Driver Driver Driver Mgmt© 2011
  • 10. ApplicaEons   Dalvik Executable + Resources = APK Must be signed (but debug key is okay for development) Many markets with different policies© 2011
  • 11. Android  and  Java   Android Java = Java SE – AWT/Swing + Android API© 2011
  • 12. HELLO  WORLD!  © 2011
  • 13. Android  SDK  -­‐  What’s  In  The  Box   SDK Tools Docs Platforms Data Skins Images Samples Add-ons Google© 2011
  • 14. Create  New  Project   Use the Eclipse tool to create a new Android project. Here are some key constructs: Project   Eclipse  construct   Target   minimum  to  run   App  name   whatever   Package   Java  package   AcEvity   Java  class  © 2011
  • 15. Anatomy   of  An  App   Java Code + XML and Other Resources + Manifest File = Android App© 2011
  • 16. The  Manifest  File   <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.marakana" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAndroid" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="5" /> </manifest>© 2011
  • 17. The  Layout  Resource   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>© 2011
  • 18. The  Java  File   package com.marakana; import android.app.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); setContentView(R.layout.main); } }© 2011
  • 19. Running  on  Emulator   Emulator, not a simulator© 2011
  • 20. MAIN  BUILDING  BLOCKS  © 2011
  • 21. Yamba  Demo   Let’s see a real-world medium complexity Android app in action: Yamba: Yet Another Micro Blogging App© 2011
  • 22. AcEviEes   Android Application An Activity represents a screen Main Activity Another Activity Another Activity or a window. Sort of.© 2011
  • 23. AcEvity  Lifecycle   Activities have a well- defined lifecycle. The Android OS manages your activity by changing its state. You fill in the blanks.© 2011
  • 24. Intents   Intents represent events or actions. They are to Android apps what hyperlinks are to websites. Sort of. Intents can be implicit or explicit.© 2011
  • 25. Services   Services are code that runs in the background. They can be started and stopped. Services doesn’t have UI.© 2011
  • 26. Service  Lifecycle   Service also has a lifecycle, but it’s much simpler than activity’s. An activity typically starts and stops a service to do some work for it in the background, such as play music, check for new tweets, etc. Services can be bound or unbound.© 2011
  • 27. Remote  Services  © 2011
  • 28. Content  Providers   Content Providers share content with applications across application boundaries. Examples of built-in Content Providers are: Contacts, MediaStore, Settings and more.© 2011
  • 29. Content  Provider  Example  © 2011
  • 30. Broadcast  Receivers   An Intent-based publish-subscribe mechanism. Great for listening system events such as SMS messages.© 2011
  • 31. Architecture  of  An  App   An Android application is a collection of many different building blocks. They are loosely coupled and can be reconfigured by the developer easily, or at least that’s the intention. Let’s look at 7 stages of Yamba next.© 2011
  • 32. Yamba  Part  1  © 2011
  • 33. Yamba  Part  2  © 2011
  • 34. Yamba  Part  3  © 2011
  • 35. Yamba  Part  4  © 2011
  • 36. Yamba  Part  5  © 2011
  • 37. Yamba  Part  6  © 2011
  • 38. Yamba  Part  7  © 2011
  • 39. ANDROID  USER  INTERFACE  © 2011
  • 40. Two  UI  Approaches   Procedural   DeclaraAve   You  write  Java  code   You  write  XML  code   Similar  to  Swing  or  AWT   Similar  to  HTML  of  a  web  page   You can mix and match both styles. Best practice: •  Start with XML and declare most of UI •  Switch to Java and implement the UI logic© 2011
  • 41. XML-­‐Based  User  Interface   Use WYSIWYG tools to build powerful XML-based UI. Easily customize it from Java. Separate concerns.© 2011
  • 42. Views  and  Layouts   Layouts contain widgets and other layouts forming a “composite” pattern.© 2011
  • 43. Linear  Layout   One of the most commonly used layouts. It lays its children next to each other, either horizontally or vertically.© 2011
  • 44. RelaEve  Layout   Children of relative layout are placed in relationship to each other. This layout is efficient.© 2011
  • 45. Table  Layout   Table layout puts its children into table rows and columns. It is similar to an HTML table.© 2011
  • 46. Frame  Layout   Frame layout places its children on top of each other, like a deck of cards. It is useful for widgets such as tabs or as a placeholder for views added programmatically.© 2011
  • 47. Common  UI  Components   Android UI includes many common modern UI widgets, such as Buttons, Tabs, Progress Bars, Date and Time Pickers, etc.© 2011
  • 48. SelecEon  Components   Some UI widgets may be linked to zillion pieces of data. Examples are ListView and Spinners (pull-downs).© 2011
  • 49. Adapters   Adapter Data Source To make sure they run smoothly, Android uses Adapters to connect them to their data sources. A typical data source is an Array or a Database.© 2011
  • 50. Complex  Components   Certain high-level components are simply available just like Views. Adding a Map or a Video to your application is almost like adding a Button or a piece of text.© 2011
  • 51. Menus  and  Dialogs  © 2011
  • 52. Graphics  &  AnimaEon   Android has rich support for 2D graphics. You can draw & animate from XML. You can use OpenGL for 3D graphics.© 2011
  • 53. MulEmedia   AudioPlayer lets you simply specify the audio resource and play it. VideoView is a View that you can drop anywhere in your activity, point to a video file and play it. XML: <VideoView android:id="@+id/video" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center” /> Java: player = (VideoView) findViewById(R.id.video); player.setVideoPath("/sdcard/samplevideo.3gp"); player.start();© 2011
  • 54. OPERATING  SYSTEM  FEATURES    © 2011
  • 55. File  System   The file system has three main mount points. One for system, one for the apps, and one for whatever. Each app has its own sandbox easily accessible to it. No one else can access its data. The sandbox is in /data/data/com.marakana/ SDCard is expected to always be there. It’s a good place for large files, such as movies and music. Everyone can access it.© 2011
  • 56. Cloud  to  Device  Push   Big deal for many pull-based apps. Will make devices use less battery.© 2011
  • 57. Preferences   Your app can support complex preferences quite easily. You define your preferences in an XML file and the corresponding UI and data storage is done for free.© 2011
  • 58. SQLite  Database   Android ships with SQLite3 SQLite is a •  Zero configuration •  Serverless •  Single database file •  Cross-Platform •  Compact •  Public Domain Database engine. May you do good and not evil May you find forgiveness for yourself and forgive others May you share freely, never taking more than you give.© 2011
  • 59. DEBUGGING     ANDROID  APPS  © 2011
  • 60. LogCat   The universal, most versatile way to track what is going on in your app. Can be viewed via command line or Eclipse. Logs can be generated both from SDK Java code, or low-level C code via Bionic libc extension.© 2011
  • 61. Debugger   Your standard debugger is included in SDK, with all the usual bells & whistles.© 2011
  • 62. TraceView   TraceView helps you profile you application and find bottlenecks. It shows execution of various calls through the entire stack. You can zoom into specific calls.© 2011
  • 63. Hierarchy  Viewer   Hierarchy Viewer helps you analyze your User Interface. Base UI tends to be the most “expensive” part of your application, this tool is very useful.© 2011
  • 64. Summary   Android is open and complete system for mobile development. It is based on Java and augmented with XML, with lower levels written in C/C++. It takes about 3-5 days of intensive training to learn Android application development for someone who has basic Java (or similar) experience. Marko Gargenta, Marakana.com marko@marakana.com +1-415-647-7000© 2011

×