0% found this document useful (0 votes)
65 views

Looking Beyond The Obvious: Android

Android is an open source operating system used for mobile devices like smartphones and tablets. It uses Linux as its kernel and is developed by the Open Handset Alliance. The document discusses Android's architecture, key concepts like activities and intents, the development environment in Eclipse, and how to publish apps on the Android Market. It notes that while Android development has some challenges, it has a large market share and low development costs compared to alternatives like iOS.

Uploaded by

s_meurer
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views

Looking Beyond The Obvious: Android

Android is an open source operating system used for mobile devices like smartphones and tablets. It uses Linux as its kernel and is developed by the Open Handset Alliance. The document discusses Android's architecture, key concepts like activities and intents, the development environment in Eclipse, and how to publish apps on the Android Market. It notes that while Android development has some challenges, it has a large market share and low development costs compared to alternatives like iOS.

Uploaded by

s_meurer
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

Android

Looking beyond the obvious


10/20/11 Cocoaheads Siegen Dipl. Inform. Simon Meurer

Agenda

General Android Desktop Developer's View Publishing

10/20/11

What is Android?

OS and Software-platform for different Mobile Devices Developed by Open Handset Alliance Based on Linux-Kernel 2.6 Biggest rival of iOS on Smartphone OS-Market

10/20/11

Market share
50 45 43,4 40

35

30

25 22,1 20 18,2

15 11,7 10

5 1,9 0 Android Symbian iOS RIM Bada Microsoft Others 1,6 1

10/20/11

2nd quartal 2011 Market share (%) - source: Gartner

Sample Devices

10/20/11

Android Versions

2.x for mobile phones (act. 2.3.6) 3.x for tablets (act. 3.2) 4.x gets 2.x and 3.x together

10/20/11

Android Desktop

Apps in Menu Can be moved to Desktop Themes and Live-Background

Shortcuts No. of Desktops set by Theme

10/20/11

Widgets

10/20/11

Notifications and Preferences

10/20/11

Developer's View

Architecture Language Key Concepts Menues Environment

10/20/11

10

Architecture

10/20/11

11

Language

Android is Java, right? Yes, but:


No Constructors (for GUI-Classes) No Swing or SWT No System.out.println(...) Limited memory ...


12

10/20/11

Key Concepts

Activities Layouting with XML Intents Services Content Providers Resources

10/20/11

13

Activities

UI-Screen (better: logic) An app has usually more than one Activity Stack

New Activities pushed on stack Back pops them of

10/20/11

14

Example (HelloWorldActivity.java)
package com.test.helloworld; import android.app.Activity; import android.os.Bundle; public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
10/20/11 15

Layouting with XML


GUI is build in XML Tags = Elements, Attributes = Properties Different Resolutions possible No Absolute Layout, instead: LinearLayout, RelativeLayout, TableLayout, Place in XML = Place in Layout

10/20/11

16

Example (main.xml)
<?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:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World!" /> <Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Hello" /> </LinearLayout>

10/20/11

17

HelloWorld

10/20/11

18

Clicking the button


public class HelloWorldActivity extends Activity { public void onCreate(Bundle savedInstanceState) { ... Button b = (Button) findViewById(R.id.button); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(HelloWorldActivity.this, "Hello World!",Toast.LENGTH_SHORT).show(); Log.v("HelloWorldActivity", "Hello clicked"); } }); } }
10/20/11 19

Toasting and Logging

Toast displaying short Text for a short while NOT for debugging Log

is for logging on console Different levels: d, e, i, v, w


20

10/20/11

So, what about other Activities?

Problem: No Constructors for GUI-Classes Intent:


Describes a spec. Action e.g. pick a photo, take a picture, create person Standards: send an email, Can be registered as standard Intents extras = Values of Constructors
21

10/20/11

Example (Intents)
onClick of Hello-Button: Intent i = new Intent(HelloWorldActivity.this, HelloWorldActivity2.class); i.putExtra("Hello", "World"); startActivity(i); HelloWorldActivity2: public class HelloWorldActivity2 extends Activity{ protected void onCreate(Bundle savedInstanceState) { ... TextView t = (TextView) findViewById(R.id.textview2); t.setText(getIntent().getStringExtra("Hello")); } }
10/20/11 22

How do I get results?


1.startActivityForResult(Intent, requestCode) 2.Generate result and put it in the intent 3.set resultCode and finish() the activity 4.in onActivityResult(requestCode, resultCode, Intent data) is your result

10/20/11

23

Services

Task that runs in background e.g. Music Player Can be started by Activity1 Changed by Activity2 e.g. Activity2 says stop or nextTrack Live Wallpaper

10/20/11

24

Resources

Manage data with xml Resource-Class is generated automatically holds ids for the elements Contains:

Layouts, Strings, Images, Values, Menus, Settings

10/20/11

25

Menu, Contextmenu and Search

10/20/11

26

Development environment

Recommended: Eclipse Fully integrated:


GUI-Builder XML-Helper Console Debugging-Tools

10/20/11

27

GUI-Builder

10/20/11

28

XML-Helper

10/20/11

29

Console and Debugging-Tools

10/20/11

30

Where do I publish my App?

Android Market: 510,000 Apps in Sept. 2011 uses Google Checkout for billing takes 30% of the app-price Until now:

No controlles!

10/20/11

31

Publishing on Android Market


Requirements:

Google Account register as developer on developer.android.com pay 25$ only Creditcards For charged apps:

register at Google Checkout


32

10/20/11

Publishing on Android Market


Requirements for the App:

App must be signed expires after 22.10.2033 AndroidManifest.xml:


android:versionCode and android:versionName must be defined android:Icon and android:label must be defined
33

10/20/11

Publishing without Android Market

Complete free: Generate .apk Put .apk on your website .apk must be copied to device and installed (e.g. with APK-Manager) Problems:

No (normal) User will do that! Billing, integration, updates


34

10/20/11

Publishing without Android Market

Alternative Markets: Amazon App Store (about 18,000 Apps) SlideME (about 10,000 Apps) AndAppStore (about 2,000 Apps) OnlyAndroid But:

Google can delete your app at any time! Not so many customers
35

10/20/11

Lessons learned

Android is NOT Java XML-Layouting is not allways fun Complicated solutions for simple problems Intents are sometimes mysterious Looks half-baked sometimes Docu is not as good as iOS-Docu

10/20/11

36

But...

Costs: Development for free Publishing 25$ once Market share

Mainly Java Freedom of choice ...

10/20/11

37

You might also like