SlideShare a Scribd company logo
1 of 82
Marc Lester Tan
+ http://gplus.to/marctan
t @mharkus
in http://sg.linkedin.com/in/marclestertan
Exploring Android
                                    A GTUG-PH Singapore Chapter Event




Marc Lester Tan
+ http://gplus.to/marctan
t @mharkus
in http://sg.linkedin.com/in/marclestertan
What is Android?
What is Android?
Application framework
What is Android?
Application framework
Dalvik VM
What is Android?
Application framework
Dalvik VM
Integrated browser based on WebKit
What is Android?
Application framework
Dalvik VM
Integrated browser based on WebKit
Optimized Graphics (skia for 2D and OpenGL ES for
3D)
What is Android?
Application framework
Dalvik VM
Integrated browser based on WebKit
Optimized Graphics (skia for 2D and OpenGL ES for
3D)
SQLite
What is Android?
Application framework
Dalvik VM
Integrated browser based on WebKit
Optimized Graphics (skia for 2D and OpenGL ES for
3D)
SQLite
Media Support
What is Android?
Application framework
Dalvik VM
Integrated browser based on WebKit
Optimized Graphics (skia for 2D and OpenGL ES for
3D)
SQLite
Media Support
What is Android?
What is Android?

GSM Telephony
What is Android?

GSM Telephony
Bluetooth, EDGE, 3G and WIFI
What is Android?

GSM Telephony
Bluetooth, EDGE, 3G and WIFI
Camera, GPS, compass and accelerometer
What is Android?

GSM Telephony
Bluetooth, EDGE, 3G and WIFI
Camera, GPS, compass and accelerometer
Rich Development Environment
Why Android?




• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Why Android?

                       200 million devices worldwide




• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Why Android?

                       200 million devices worldwide
                       6 billion downloads in Android Market




• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Why Android?

                       200 million devices worldwide
                       6 billion downloads in Android Market
                       550,000 activations per day




• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Why Android?

                       200 million devices worldwide
                       6 billion downloads in Android Market
                       550,000 activations per day
                       329,846 apps in the Android Market



• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Why Android?

                       200 million devices worldwide
                       6 billion downloads in Android Market
                       550,000 activations per day
                       329,846 apps in the Android Market
                       171 devices from 17 manufacturers

• Statistics as of November 2011
• 200 million Android activations!
• Google Music Event (11/16/11)
• AppBrain Market Stats
• Google Phones List
Top Mobile OEMs (US)

                                                                                                 July 2011
                         Samsung                                                                      25.5%
                                 LG                                                                   20.9%
                          Motorola                                                                    14.1%
                              Apple                                                                    9.5%
                                RIM                                                                    7.6%

http://www.comscore.com/Press_Events/Press_Releases/2011/8/comScore_Reports_July_2011_U.S._Mobile_Subscriber_Market_Share
Top Smartphone Platforms

                                                                                                 July 2011
                            Google                                                                    41.8%
                              Apple                                                                   27.0%
                                RIM                                                                   21.7%
                         Microsoft                                                                     5.7%
                          Symbian                                                                      1.9%

http://www.comscore.com/Press_Events/Press_Releases/2011/8/comScore_Reports_July_2011_U.S._Mobile_Subscriber_Market_Share
Your First Android App
Your First Android App
Requirements
Requirements

Java SE 6
Requirements

Java SE 6
Android SDK
Requirements

Java SE 6
Android SDK
Eclipse Indigo or Maven 3.0
Requirements

Java SE 6
Android SDK
Eclipse Indigo or Maven 3.0
Android-Maven-Plugin if you want to use Maven
Requirements

Java SE 6
Android SDK
Eclipse Indigo or Maven 3.0
Android-Maven-Plugin if you want to use Maven
ADT plugin if you want to use Eclipse
Eclipse ADT Demo
Emulator
Emulator
Mimics most of the hardware
and software features of a
mobile device
Emulator
Mimics most of the hardware
and software features of a
mobile device
Can simulate application
interrupts such as incoming
SMS or phone calls
Emulator
Mimics most of the hardware
and software features of a
mobile device
Can simulate application
interrupts such as incoming
SMS or phone calls
Simulate GPS location fix
Emulator Limitations
Emulator Limitations
Placing or receiving phone calls
Emulator Limitations
Placing or receiving phone calls

USB connections
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)

Determining Connected State
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)

Determining Connected State

Determining Battery charge level and AC
charging state
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)

Determining Connected State

Determining Battery charge level and AC
charging state

Unable to listen for SD Card insert/eject
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)

Determining Connected State

Determining Battery charge level and AC
charging state

Unable to listen for SD Card insert/eject

Bluetooth
Emulator Limitations
Placing or receiving phone calls

USB connections

Camera / Video Capture (input)

Determining Connected State

Determining Battery charge level and AC
charging state

Unable to listen for SD Card insert/eject

Bluetooth

Accelerometer
Application structure
Application structure
/src/ - location for all your java files
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java

/assets/ - fonts, audio files and other compressed files
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java

/assets/ - fonts, audio files and other compressed files

/bin/ - target directory to store the dex file and the APK
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java

/assets/ - fonts, audio files and other compressed files

/bin/ - target directory to store the dex file and the APK

/res/ - drawables, layouts and strings
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java

/assets/ - fonts, audio files and other compressed files

/bin/ - target directory to store the dex file and the APK

/res/ - drawables, layouts and strings

AndroidManifest.xml - tells a lot of things about your
application
Application structure
/src/ - location for all your java files

/gen/ - autogenerated file R.java

/assets/ - fonts, audio files and other compressed files

/bin/ - target directory to store the dex file and the APK

/res/ - drawables, layouts and strings

AndroidManifest.xml - tells a lot of things about your
application

proguard.cfg - configuration file for source code
obfuscation
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mlst.hellogtug"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                 <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Activity
package com.mlst.hellogtug;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  }
}
Activity
package com.mlst.hellogtug;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  }
}
Activity
package com.mlst.hellogtug;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  }
}
Activity
package com.mlst.hellogtug;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  }
}
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
XML-Based Layout (main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/
apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World,
Main!</string>
    <string name="app_name">HelloGTUG</
string>

</resources>
Running your application
Running your application

1. Launch the emulator
Running your application

1. Launch the emulator
2. Install the application using ADB or Android Debug
  Bridge (adb install application.apk)
Running your application

1. Launch the emulator
2. Install the application using ADB or Android Debug
  Bridge (adb install application.apk)
3. Monitor the logs by using Android Debug Bridge (adb
  logcat or adb lolcat - adds more fun)
Running your application

1. Launch the emulator
2. Install the application using ADB or Android Debug
  Bridge (adb install application.apk)
3. Monitor the logs by using Android Debug Bridge (adb
  logcat or adb lolcat - adds more fun)
4.Modify code then repeat #2
Debugging your App

Window > Open Perspective > DDMS
Select the application to debug in Devices section
Click the green bug icon at the toolbar
Set your breakpoints
Questions

More Related Content

What's hot

The Use and Future of Applications for Mobile Marketing: Nutella
The Use and Future of Applications for Mobile Marketing: NutellaThe Use and Future of Applications for Mobile Marketing: Nutella
The Use and Future of Applications for Mobile Marketing: NutellaRebecca Booker
 
Appsgeyser @ Mobile Apps China Conference
Appsgeyser @ Mobile Apps China ConferenceAppsgeyser @ Mobile Apps China Conference
Appsgeyser @ Mobile Apps China ConferenceVasily Salomatov
 
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...DEVCON
 
Distimo publication-may-2011
Distimo publication-may-2011Distimo publication-may-2011
Distimo publication-may-2011Hazemma
 
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...Molly Garris
 

What's hot (8)

The Use and Future of Applications for Mobile Marketing: Nutella
The Use and Future of Applications for Mobile Marketing: NutellaThe Use and Future of Applications for Mobile Marketing: Nutella
The Use and Future of Applications for Mobile Marketing: Nutella
 
Android overview
Android overviewAndroid overview
Android overview
 
Appsgeyser @ Mobile Apps China Conference
Appsgeyser @ Mobile Apps China ConferenceAppsgeyser @ Mobile Apps China Conference
Appsgeyser @ Mobile Apps China Conference
 
Combo App Case Studies
Combo App Case StudiesCombo App Case Studies
Combo App Case Studies
 
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
Ramon Pastor of Rogomi inc on Trends in iOS Development at DevCon Summit 2013...
 
Vincent Hoogsteder - Distimo
Vincent Hoogsteder - DistimoVincent Hoogsteder - Distimo
Vincent Hoogsteder - Distimo
 
Distimo publication-may-2011
Distimo publication-may-2011Distimo publication-may-2011
Distimo publication-may-2011
 
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
 

Similar to Android sessions gtug ph singapore

Developing for Mobility
Developing for MobilityDeveloping for Mobility
Developing for MobilityScotty Logan
 
Mobile Development Overview
Mobile Development OverviewMobile Development Overview
Mobile Development OverviewShawn Grimes
 
Mobile Apps - The Business & Technology
Mobile Apps - The Business & TechnologyMobile Apps - The Business & Technology
Mobile Apps - The Business & TechnologyAndri Yadi
 
De fluwelen revolutie van android
De fluwelen revolutie van androidDe fluwelen revolutie van android
De fluwelen revolutie van androidRemco Bron
 
Android developer webinar-march-2012-mindstormsoftware
Android developer webinar-march-2012-mindstormsoftwareAndroid developer webinar-march-2012-mindstormsoftware
Android developer webinar-march-2012-mindstormsoftwareRomin Irani
 
The future is mobile
The future is mobileThe future is mobile
The future is mobileShannon Smith
 
Appcelerator Corporate Overview
Appcelerator Corporate OverviewAppcelerator Corporate Overview
Appcelerator Corporate Overviewsschwarzhoff
 
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...Shane Church
 
Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Effective
 
Mobile - Small Screen Big Bet !
Mobile - Small Screen Big Bet !Mobile - Small Screen Big Bet !
Mobile - Small Screen Big Bet !Satyajeet Singh
 
Mobile development : reaching critical mass
Mobile development : reaching critical massMobile development : reaching critical mass
Mobile development : reaching critical massAlessandro Thellung
 
Mobile Convention Brussels 2014 - Chris Heilmann
Mobile Convention Brussels 2014 - Chris HeilmannMobile Convention Brussels 2014 - Chris Heilmann
Mobile Convention Brussels 2014 - Chris HeilmannMobile Convention
 
Android and its market
Android and its marketAndroid and its market
Android and its marketAnurag gond
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
 
001-Mobile Application.pptx
001-Mobile Application.pptx001-Mobile Application.pptx
001-Mobile Application.pptxAhmedDarre
 
Robert Meza - Government on the go
Robert Meza - Government on the goRobert Meza - Government on the go
Robert Meza - Government on the goPlain Talk 2015
 
Mobile Development Platforms
Mobile Development PlatformsMobile Development Platforms
Mobile Development PlatformsAndri Yadi
 
Mobile 101 For the Education Industry
Mobile 101 For the Education IndustryMobile 101 For the Education Industry
Mobile 101 For the Education IndustrySignal
 

Similar to Android sessions gtug ph singapore (20)

Developing for Mobility
Developing for MobilityDeveloping for Mobility
Developing for Mobility
 
Mobile Development Overview
Mobile Development OverviewMobile Development Overview
Mobile Development Overview
 
Mobile Apps - The Business & Technology
Mobile Apps - The Business & TechnologyMobile Apps - The Business & Technology
Mobile Apps - The Business & Technology
 
De fluwelen revolutie van android
De fluwelen revolutie van androidDe fluwelen revolutie van android
De fluwelen revolutie van android
 
Android developer webinar-march-2012-mindstormsoftware
Android developer webinar-march-2012-mindstormsoftwareAndroid developer webinar-march-2012-mindstormsoftware
Android developer webinar-march-2012-mindstormsoftware
 
The future is mobile
The future is mobileThe future is mobile
The future is mobile
 
Appcelerator Corporate Overview
Appcelerator Corporate OverviewAppcelerator Corporate Overview
Appcelerator Corporate Overview
 
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
 
Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?
 
Part 2
Part 2Part 2
Part 2
 
Jonathan snook - fake-it
Jonathan snook - fake-itJonathan snook - fake-it
Jonathan snook - fake-it
 
Mobile - Small Screen Big Bet !
Mobile - Small Screen Big Bet !Mobile - Small Screen Big Bet !
Mobile - Small Screen Big Bet !
 
Mobile development : reaching critical mass
Mobile development : reaching critical massMobile development : reaching critical mass
Mobile development : reaching critical mass
 
Mobile Convention Brussels 2014 - Chris Heilmann
Mobile Convention Brussels 2014 - Chris HeilmannMobile Convention Brussels 2014 - Chris Heilmann
Mobile Convention Brussels 2014 - Chris Heilmann
 
Android and its market
Android and its marketAndroid and its market
Android and its market
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
001-Mobile Application.pptx
001-Mobile Application.pptx001-Mobile Application.pptx
001-Mobile Application.pptx
 
Robert Meza - Government on the go
Robert Meza - Government on the goRobert Meza - Government on the go
Robert Meza - Government on the go
 
Mobile Development Platforms
Mobile Development PlatformsMobile Development Platforms
Mobile Development Platforms
 
Mobile 101 For the Education Industry
Mobile 101 For the Education IndustryMobile 101 For the Education Industry
Mobile 101 For the Education Industry
 

Recently uploaded

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Recently uploaded (20)

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

Android sessions gtug ph singapore

  • 1. Marc Lester Tan + http://gplus.to/marctan t @mharkus in http://sg.linkedin.com/in/marclestertan
  • 2. Exploring Android A GTUG-PH Singapore Chapter Event Marc Lester Tan + http://gplus.to/marctan t @mharkus in http://sg.linkedin.com/in/marclestertan
  • 5. What is Android? Application framework Dalvik VM
  • 6. What is Android? Application framework Dalvik VM Integrated browser based on WebKit
  • 7. What is Android? Application framework Dalvik VM Integrated browser based on WebKit Optimized Graphics (skia for 2D and OpenGL ES for 3D)
  • 8. What is Android? Application framework Dalvik VM Integrated browser based on WebKit Optimized Graphics (skia for 2D and OpenGL ES for 3D) SQLite
  • 9. What is Android? Application framework Dalvik VM Integrated browser based on WebKit Optimized Graphics (skia for 2D and OpenGL ES for 3D) SQLite Media Support
  • 10. What is Android? Application framework Dalvik VM Integrated browser based on WebKit Optimized Graphics (skia for 2D and OpenGL ES for 3D) SQLite Media Support
  • 12. What is Android? GSM Telephony
  • 13. What is Android? GSM Telephony Bluetooth, EDGE, 3G and WIFI
  • 14. What is Android? GSM Telephony Bluetooth, EDGE, 3G and WIFI Camera, GPS, compass and accelerometer
  • 15. What is Android? GSM Telephony Bluetooth, EDGE, 3G and WIFI Camera, GPS, compass and accelerometer Rich Development Environment
  • 16. Why Android? • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 17. Why Android? 200 million devices worldwide • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 18. Why Android? 200 million devices worldwide 6 billion downloads in Android Market • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 19. Why Android? 200 million devices worldwide 6 billion downloads in Android Market 550,000 activations per day • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 20. Why Android? 200 million devices worldwide 6 billion downloads in Android Market 550,000 activations per day 329,846 apps in the Android Market • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 21. Why Android? 200 million devices worldwide 6 billion downloads in Android Market 550,000 activations per day 329,846 apps in the Android Market 171 devices from 17 manufacturers • Statistics as of November 2011 • 200 million Android activations! • Google Music Event (11/16/11) • AppBrain Market Stats • Google Phones List
  • 22. Top Mobile OEMs (US) July 2011 Samsung 25.5% LG 20.9% Motorola 14.1% Apple 9.5% RIM 7.6% http://www.comscore.com/Press_Events/Press_Releases/2011/8/comScore_Reports_July_2011_U.S._Mobile_Subscriber_Market_Share
  • 23. Top Smartphone Platforms July 2011 Google 41.8% Apple 27.0% RIM 21.7% Microsoft 5.7% Symbian 1.9% http://www.comscore.com/Press_Events/Press_Releases/2011/8/comScore_Reports_July_2011_U.S._Mobile_Subscriber_Market_Share
  • 29. Requirements Java SE 6 Android SDK Eclipse Indigo or Maven 3.0
  • 30. Requirements Java SE 6 Android SDK Eclipse Indigo or Maven 3.0 Android-Maven-Plugin if you want to use Maven
  • 31. Requirements Java SE 6 Android SDK Eclipse Indigo or Maven 3.0 Android-Maven-Plugin if you want to use Maven ADT plugin if you want to use Eclipse
  • 34. Emulator Mimics most of the hardware and software features of a mobile device
  • 35. Emulator Mimics most of the hardware and software features of a mobile device Can simulate application interrupts such as incoming SMS or phone calls
  • 36. Emulator Mimics most of the hardware and software features of a mobile device Can simulate application interrupts such as incoming SMS or phone calls Simulate GPS location fix
  • 38. Emulator Limitations Placing or receiving phone calls
  • 39. Emulator Limitations Placing or receiving phone calls USB connections
  • 40. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input)
  • 41. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input) Determining Connected State
  • 42. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input) Determining Connected State Determining Battery charge level and AC charging state
  • 43. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input) Determining Connected State Determining Battery charge level and AC charging state Unable to listen for SD Card insert/eject
  • 44. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input) Determining Connected State Determining Battery charge level and AC charging state Unable to listen for SD Card insert/eject Bluetooth
  • 45. Emulator Limitations Placing or receiving phone calls USB connections Camera / Video Capture (input) Determining Connected State Determining Battery charge level and AC charging state Unable to listen for SD Card insert/eject Bluetooth Accelerometer
  • 47. Application structure /src/ - location for all your java files
  • 48. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java
  • 49. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java /assets/ - fonts, audio files and other compressed files
  • 50. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java /assets/ - fonts, audio files and other compressed files /bin/ - target directory to store the dex file and the APK
  • 51. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java /assets/ - fonts, audio files and other compressed files /bin/ - target directory to store the dex file and the APK /res/ - drawables, layouts and strings
  • 52. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java /assets/ - fonts, audio files and other compressed files /bin/ - target directory to store the dex file and the APK /res/ - drawables, layouts and strings AndroidManifest.xml - tells a lot of things about your application
  • 53. Application structure /src/ - location for all your java files /gen/ - autogenerated file R.java /assets/ - fonts, audio files and other compressed files /bin/ - target directory to store the dex file and the APK /res/ - drawables, layouts and strings AndroidManifest.xml - tells a lot of things about your application proguard.cfg - configuration file for source code obfuscation
  • 54. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 55. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 56. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 57. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 58. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 59. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 60. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 61. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 62. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mlst.hellogtug" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".Main" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  • 63. Activity package com.mlst.hellogtug; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 64. Activity package com.mlst.hellogtug; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 65. Activity package com.mlst.hellogtug; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 66. Activity package com.mlst.hellogtug; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
  • 67. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 68. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 69. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 70. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 71. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 72. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 73. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 74. XML-Based Layout (main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
  • 75. strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Main!</string> <string name="app_name">HelloGTUG</ string> </resources>
  • 77. Running your application 1. Launch the emulator
  • 78. Running your application 1. Launch the emulator 2. Install the application using ADB or Android Debug Bridge (adb install application.apk)
  • 79. Running your application 1. Launch the emulator 2. Install the application using ADB or Android Debug Bridge (adb install application.apk) 3. Monitor the logs by using Android Debug Bridge (adb logcat or adb lolcat - adds more fun)
  • 80. Running your application 1. Launch the emulator 2. Install the application using ADB or Android Debug Bridge (adb install application.apk) 3. Monitor the logs by using Android Debug Bridge (adb logcat or adb lolcat - adds more fun) 4.Modify code then repeat #2
  • 81. Debugging your App Window > Open Perspective > DDMS Select the application to debug in Devices section Click the green bug icon at the toolbar Set your breakpoints

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n