andevcon android for java

Upload: pankaj-chaturvedi

Post on 02-Jun-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 Andevcon Android for Java

    1/64

    2011

    !"#$% '"#()*+"

    ,"#"$"*"-.%,

    !"#$%

    /%# 0"1" 2)1)3%4)#5

  • 8/10/2019 Andevcon Android for Java

    2/64

    2011

    67%8+ !"#$% '"#()*+"

    Developer ofAndroid 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 OReilly.

    Speaker at OSCON, ACM, IEEE, SDC, AnDevCon.

    Founder of SFAndroid.org

  • 8/10/2019 Andevcon Android for Java

    3/64

    2011

    6()*9"

    :;)

  • 8/10/2019 Andevcon Android for Java

    4/64

    2011

    !()*+,) -.!/0

  • 8/10/2019 Andevcon Android for Java

    5/64

    2011

    :;)

  • 8/10/2019 Andevcon Android for Java

    6/64

    2011

    H@*8I J)#*)3

    Android runs on Linux.

    Linux provides:

    Hardware abstraction layerMemory management

    Process managementNetworking

    Users never see Linux sub system

    The adb shell command opens

    Linux shell

    Linux Kernel

    Libraries

    Application Framework

    Applications

    Home Contacts Phone Browser Other

    ActivityManager

    WindowManager

    ContentProviders

    ViewSystem

    PackageManager

    TelephonyManager

    ResourceManager

    LocationManager

    NotiicationManager

    SurfaceManager

    OpenGL

    SGL

    Media

    Framework

    FreeType

    SSL

    SQLite

    WebKit

    libc

    Android Runtime

    Core Libs

    DelvikVM

    DisplayDriver

    KeypadDriver

    CameraDriver

    WiFiDriver

    FlashDriver

    AudioDriver

    BinderDriver

    PowerMgmt

  • 8/10/2019 Andevcon Android for Java

    7/64

    2011

    K"E1) H@7#"#@)5

    Pieces borrowed from other

    open source projects:

    Bionic, a super fast and small

    license-friendly libc library optimized

    for Android

    WebKit library for fast HTMLrendering

    OpenGL for graphics

    Media codecs offer support formajor audio/video codecs

    SQLite database

    Much more

    Linux Kernel

    Libraries

    Application Framework

    Applications

    Home Contacts Phone Browser Other

    ActivityManager

    WindowManager

    ContentProviders

    ViewSystem

    PackageManager

    TelephonyManager

    ResourceManager

    LocationManager

    NotiicationManager

    SurfaceManager

    OpenGL

    SGL

    MediaFramework

    FreeType

    SSL

    SQLite

    WebKit

    libc

    Android Runtime

    Core Libs

    DelvikVM

    DisplayDriver

    KeypadDriver

    CameraDriver

    WiFiDriver

    FlashDriver

    AudioDriver

    BinderDriver

    PowerMgmt

  • 8/10/2019 Andevcon Android for Java

    8/64

    2011

    2"31@$

    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

  • 8/10/2019 Andevcon Android for Java

    9/64

    2011

    6443@."E%* G#",)L%#$

    The rich set of system services

    wrapped in an intuitive Java API.

    This ecosystem that developerscan easily tap into is what makes

    writing apps for Android easy.

    Location, web, telephony, WiFi,

    Bluetooth, notifications, media,camera, just to name a few.

    Linux Kernel

    Libraries

    Application Framework

    Applications

    Home Contacts Phone Browser Other

    ActivityManager

    WindowManager

    ContentProviders

    ViewSystem

    PackageManager

    TelephonyManager

    ResourceManager

    LocationManager

    NotiicationManager

    SurfaceManager

    OpenGL

    SGL

    MediaFramework

    FreeType

    SSL

    SQLite

    WebKit

    libc

    Android Runtime

    Core Libs

    DelvikVM

    DisplayDriver

    KeypadDriver

    CameraDriver

    WiFiDriver

    FlashDriver

    AudioDriver

    BinderDriver

    PowerMgmt

  • 8/10/2019 Andevcon Android for Java

    10/64

    2011

    6443@."E%*5

    Dalvik Executable + Resources = APK

    Must be signed (but debug key is okayfor development)

    Many markets with different policies

  • 8/10/2019 Andevcon Android for Java

    11/64

    2011

    6*9#%@9 "*9 0"1"

    Android Java

    =

    Java SE

    AWT/Swing+

    Android API

  • 8/10/2019 Andevcon Android for Java

    12/64

    2011

    1233+ 4+*3)5

  • 8/10/2019 Andevcon Android for Java

    13/64

    2011

    6*9#%@9 ;"+N5 C* :;) A%I

    SDK

    Tools

    DocsPlatforms

    Data

    SkinsImages

    SamplesAdd-ons

    Google

  • 8/10/2019 Andevcon Android for Java

    14/64

    2011

    O#)"+) K)L P#%Q).+

    Use the Eclipse tool to create a new

    Android project.

    Here are some key constructs:

    P#%Q).+ R.3@45) .%*5+#8.+

    :"#()+ ,@*@,8, +% #8*

    644 *",) L;"+)1)#

    P".$"() 0"1" 4".$"()

    6.E1@+F 0"1" .3"55

  • 8/10/2019 Andevcon Android for Java

    15/64

    2011

    6*"+%,F%/ 6* 644

    Java Code+

    XML and Other

    Resources

    +

    Manifest File

    =

    Android App

  • 8/10/2019 Andevcon Android for Java

    16/64

    2011

    :;) !"*@/)5+ G@3)

  • 8/10/2019 Andevcon Android for Java

    17/64

    2011

    :;) H"F%8+ S)5%8#.)

  • 8/10/2019 Andevcon Android for Java

    18/64

    2011

    :;) 0"1" G@3)

    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);}

    }

  • 8/10/2019 Andevcon Android for Java

    19/64

    2011

    S8**@*( %* R,83"+%#

    Emulator, not a simulator

  • 8/10/2019 Andevcon Android for Java

    20/64

    2011

    6!,( 78,3),(9 73+/0-

  • 8/10/2019 Andevcon Android for Java

    21/64

    2011

    T",7" 2),%

    Lets see a real-world medium

    complexity Android app in action:

    Yamba: Yet Another Micro Blogging App

  • 8/10/2019 Andevcon Android for Java

    22/64

    2011

    6.E1@E)5

    Android Application

    Main Activity Another

    Activity

    Another

    Activity

    An Activity

    represents a screen

    or a window. Sort of.

  • 8/10/2019 Andevcon Android for Java

    23/64

    2011

    6.E1@+F H@/).F.3)

    Activities have a well-defined lifecycle. The

    Android OS managesyour activity by

    changing its state.

    You fill in the blanks.

  • 8/10/2019 Andevcon Android for Java

    24/64

    2011

    C*+)*+5

    Intents represent

    events or actions.

    They are to

    Android apps whathyperlinks are to

    websites. Sort of.

    Intents can beimplicit or explicit.

  • 8/10/2019 Andevcon Android for Java

    25/64

    2011

  • 8/10/2019 Andevcon Android for Java

    26/64

    2011

  • 8/10/2019 Andevcon Android for Java

    27/64

    2011

    S),%+)

  • 8/10/2019 Andevcon Android for Java

    28/64

    2011

    O%*+)*+ P#%1@9)#5

    Content Providers share

    content with applications

    across application

    boundaries.Examples of built-in

    Content Providers are:

    Contacts, MediaStore,

    Settings and more.

  • 8/10/2019 Andevcon Android for Java

    29/64

    2011

    O%*+)*+ P#%1@9)# RI",43)

  • 8/10/2019 Andevcon Android for Java

    30/64

    2011

    A#%"9."5+ S).)@1)#5

    An Intent-based publish-subscribe mechanism. Great for listening

    system events such as SMS messages.

  • 8/10/2019 Andevcon Android for Java

    31/64

    2011

    6#.;@+).+8#) %/ 6* 644

    An Android application is a collection of many different

    building blocks. They are loosely coupled and can bereconfigured by the developer easily, or at least thats

    the intention.

    Lets look at 7 stages of Yamba next.

  • 8/10/2019 Andevcon Android for Java

    32/64

    2011

    T",7" P"#+ U

  • 8/10/2019 Andevcon Android for Java

    33/64

    2011

    T",7" P"#+ V

  • 8/10/2019 Andevcon Android for Java

    34/64

    2011

    T",7" P"#+ W

  • 8/10/2019 Andevcon Android for Java

    35/64

    2011

    T",7" P"#+ X

  • 8/10/2019 Andevcon Android for Java

    36/64

    2011

    T",7" P"#+ Y

  • 8/10/2019 Andevcon Android for Java

    37/64

    2011

    T",7" P"#+ Z

  • 8/10/2019 Andevcon Android for Java

    38/64

    2011

    T",7" P"#+ [

  • 8/10/2019 Andevcon Android for Java

    39/64

    2011

    !()*+,) 8-2* ,(.2*:!/2

  • 8/10/2019 Andevcon Android for Java

    40/64

    2011

    :L% BC 644#%".;)5

    ;$%$?@ )=

  • 8/10/2019 Andevcon Android for Java

    41/64

    2011

    \!HMA"5)9 B5)# C*+)#/".)

    Use WYSIWYG tools to build powerful XML-based UI.

    Easily customize it from Java. Separate concerns.

  • 8/10/2019 Andevcon Android for Java

    42/64

    2011

    ]@)L5 "*9 H"F%8+5

    Layouts contain widgets and other

    layouts forming a composite pattern.

  • 8/10/2019 Andevcon Android for Java

    43/64

    2011

    H@*)"# H"F%8+

    One of the most commonly

    used layouts. It lays its

    children next to each other,

    either horizontally or vertically.

  • 8/10/2019 Andevcon Android for Java

    44/64

    2011

    S)3"E1) H"F%8+

    Children of relative layout are

    placed in relationship to each

    other. This layout is efficient.

  • 8/10/2019 Andevcon Android for Java

    45/64

    2011

    :"73) H"F%8+

    Table layout puts its children

    into table rows and columns.

    It is similar to an HTML table.

  • 8/10/2019 Andevcon Android for Java

    46/64

    2011

    G#",) H"F%8+

    Frame layout places its

    children on top of each other,

    like a deck of cards. It is

    useful for widgets such astabs or as a placeholder for

    views added

    programmatically.

  • 8/10/2019 Andevcon Android for Java

    47/64

    2011

    O%,,%* BC O%,4%*)*+5

    Android UI includes many

    common modern UI

    widgets, such as Buttons,

    Tabs, Progress Bars, Date

    and Time Pickers, etc.

  • 8/10/2019 Andevcon Android for Java

    48/64

    2011

  • 8/10/2019 Andevcon Android for Java

    49/64

    2011

    69"4+)#5

    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.

    Data

    Source

    Adapter

  • 8/10/2019 Andevcon Android for Java

    50/64

    2011

    O%,43)I O%,4%*)*+5

    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.

  • 8/10/2019 Andevcon Android for Java

    51/64

    2011

    !)*85 "*9 2@"3%(5

  • 8/10/2019 Andevcon Android for Java

    52/64

    2011

    '#"4;@.5 ^ 6*@,"E%*

    Android has rich support for 2D graphics.

    You can draw & animate from XML.

    You can use OpenGL for 3D graphics.

  • 8/10/2019 Andevcon Android for Java

    53/64

    2011

    !83E,)9@"

    AudioPlayer lets you simply specify

    the audio resource and play it.

    VideoView is a View that you candrop anywhere in your activity, point

    to a video file and play it.

    XML:

  • 8/10/2019 Andevcon Android for Java

    54/64

  • 8/10/2019 Andevcon Android for Java

    55/64

    2011

    G@3)

  • 8/10/2019 Andevcon Android for Java

    56/64

    2011

    O3%89 +% 2)1@.) P85;

    Big deal for many pull-based apps. Will make devices use less battery.

  • 8/10/2019 Andevcon Android for Java

    57/64

    2011

    P#)/)#)*.)5

    Your app can support complex

    preferences quite easily.

    You define your preferences in anXML file and the corresponding UI and

    data storage is done for free.

  • 8/10/2019 Andevcon Android for Java

    58/64

    2011

  • 8/10/2019 Andevcon Android for Java

    59/64

    2011

    )27899,(9

    !()*+,) !;;-

  • 8/10/2019 Andevcon Android for Java

    60/64

    2011

    H%(O"+

    The universal, most

    versatile way to trackwhat is going on in

    your app.

    Can be viewed via

    command line orEclipse.

    Logs can be

    generated both from

    SDK Java code, or

    low-level C code viaBionic libc extension.

  • 8/10/2019 Andevcon Android for Java

    61/64

    2011

    2)78(()#

    Your standard debugger is included in SDK, with all the usual bells & whistles.

  • 8/10/2019 Andevcon Android for Java

    62/64

    2011

    :#".)]@)L

    TraceView helps you profile you application and find bottlenecks. It shows

    execution of various calls through the entire stack. You can zoom into specificcalls.

  • 8/10/2019 Andevcon Android for Java

    63/64

    2011

    =@)#"#.;F ]@)L)#

    Hierarchy Viewer helps

    you analyze your UserInterface.

    Base UI tends to be the

    most expensive part of

    your application, this toolis very useful.

  • 8/10/2019 Andevcon Android for Java

    64/64