3. 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 3
12. Language
● Android is Java, right?
Yes, but:
● No Constructors (for GUI-Classes)
● No Swing or SWT
● No System.out.println(...)
● Limited memory
● ...
10/20/11 12
13. Key Concepts
● Activities
● Layouting with XML
● Intents
● Services
● Content Providers
● Resources
10/20/11 13
14. 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
15. 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
16. 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
19. 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
20. 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
10/20/11 20
21. 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
10/20/11 21
22. 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
23. 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
24. 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
25. 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
31. 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
32. 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
10/20/11 32
33. 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
10/20/11 33
34. 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
10/20/11 34
35. 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
10/20/11 35
36. 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
37. But...
● Costs:
●Development for free
● Publishing 25$ once
● Market share
● Mainly Java
● Freedom of choice
...
10/20/11 37