The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
Android Minnebar
1. What is that robot up to?
Justin Grammens
Recursive Awesome
http://recursiveawesome.com
2. About Me
Name: Justin Grammens
Owner Localtone Interactive
Co-Founder Recursive Awesome
Focus on web & mobile software development
Android, Blackberry, iPhone, Palm
Background in Java & Ruby/Rails/Grails
Spoken at many local meetings on Android
Started Mobile Twin Cities User's Group
http://mobiletwincities.com
5. Summary
What Is Android
Who Is Android
Building Blocks
Android Market
Deploy MobileTC App To Market
6. What is Android?
Definition:
Android is a software platform and operating system
for mobile devices, based on the Linux kernel,
developed by Google and later the Open Handset
Alliance.
Source: Wikipedia
Would argue that it's not just for mobile devices. Has
the potential to be used in all sorts of other areas
where memory, cpu and disk is limited.
19. Who Is Android
A Project of the Open Handset Alliance (OHA)
- More than 30 technology companies
Source: Presentation by Sean Sullivan - http://mobileportland.com/content/introduction-google-android
20. Nuts and Bolts
Built on the Linux kernel
Uses the Dalvik virtual machine
Register Based VM written by Dan Bornstein
Very low memory footprint
Core and 3rd party applications have equal access
Multiple applications able to run at the same time
Background services
100% fully customizable - from startup to shutdown
Touch (or physical keyboard) interface
21. What's the big deal?
Truly open and FREE development platform
No "pay to play" developer agreement
Freely available tools (Eclipse) and no restrictions on OS
you need to be on to develop
No "blessing" required from a company (i.e. Apple)
Component based architecture that can be extended
Built in services out of the box
Location based
Multimedia - supports open audio formats - OGG!
SQLite Database
Automatic management of application lifecycle
Portability across current and future hardware
Supports and plans for input from either trackball,
keyboard or touch
22. Exponential Sales
First advertised based Android Phone HTC Dream
(G1)
Takes roughly 6 months to reach 1MM sales.
Second advertised phone HTC Magic (myTouch)
Takes roughly 3 months to reach 1 MM sales.
Third advertised Android Phone ( Motorola Droid )
250,000 units first week
“Android adoption is about to explode,” declared CEO
Eric Schmidt, explaining that all the “necessary
conditions” are set for growth.
source: Techcrunch
23. Exponential Growth
Gartner:
Android to grab No. 2 spot by 2012 (Symbian will remain#1,
iPhone will remain #3, Windows Mobile will remain #4 and
Blackberry willdrop to #5)
Multiple device ( including in this building ) manufactures
looking to use Android.
Don't believe everything you read
Not about being an "iPhone killer"
24. Building Blocks
Basic foundation of an Android application
Activity
Intent
Service
Content Provider
Your applications will not use all of these, but
they will use atleast one.
25. Building Blocks
Activity
Describes a single screen of the application
Implemented as a class that extends Activity
Activities are pushed on the history stack using an
Intent
Uses callbacks to trigger events during state changes.
public class LocaltoneAndroid extends ListActivity {
@Override
public void onCreate(Bundle init) {
}
}
27. Building Blocks
Intent
An Intent describes what you would like to have done.
Create new screen using activity and intents
Intent i = new Intent(this, MyNewActivity.class);
startActivity(i);
or open a web page
new Intent(android.content.Intent.VIEW_ACTION,
ContentURI.create("http://localtone.com"));
28. Building Blocks
Service
Code that is long running
Runs without a UI
Media Player is an good example
Activity used to choose song
Playback handled in a service
public class MyService extends Service {
public void onCreate() {
}
}
29. Building Blocks
Content Provider
Set of data wrapped in a custom API
Allow sharing of data between applications
Processes register themselves as a Content Provider.
Anyone can share data. Google shares contacts, address,
phone, etc. can be accessed by applications.
private String[]
cols={android.provider.Contacts.PeopleColumns.NAME};
private Cursor cur =
managedQuery(android.provider.Contacts.People.CONTENT_URI,
cols, null, null);
http://developer.android.com/reference/android/provider/package-summary.html
30. Face of Android
Various types of Layouts - Similar to Swing
Linear Layout
Arranges children in a single row/column. The most
common type of layout you'll use.
FrameLayout
Arranges children so they start at the top left. Used
mainly for tabbed views.
Relative Layout
Arranged in relation to eachother ( element X is
above/below element Y for example ).
TableLayout
Arranged in a cells, like HTML table.
31. Face of Android
About.xml
<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="@android:id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
32. Face of Android
Declarative - In XML
Task: Define text in an "About" screen
File: res/layout/about.xml
<TextView android:id="@+id/about_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/about_text" />
File: About.java
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.about);
}
33. Face of Android
Procedural - In Code
Create a TextView object, set the text and behavior
TextView pressMe = new TextView(context);
pressMe.setText("Press Me");
addView(mDialogue, new LinearLayout.LayoutParams(
FILL_PARENT, WRAP_CONTENT));
34. Face of Android
Android Manifest.xml
What is any good Java program without a manifest file? =)
Defines the version and package information
Defines the permissions required by the application
<uses-permission android:name="android.
permission.INTERNET" />
<activity android:name=".Result" Class name
android:label="@string/result" of the Activity
android:layout_width="fill_parent">
</activity>
35. Mobile Twin Cities
Website
Latest Tweets
@mobiletc
Discussion List
No splash screen
Will add in
coding session
37. Developing Apps For Android
Develop using Windows, Linux or Mac.
Free to develop and deploy to your device.
Send anyone your .APK file and they can run it.
Recommend using to Eclipse IDE and Android Plugin.
Download IDE and from
IDE - http://eclipse.org
Install Android plugin through the Eclipse Plug-in
Manager
SDK
http://code.google.com/android/intro/installing.html
No restriction on distribution. Free to charge what you wish
38. Pimping Android For Profit
Listing apps in the Android Market
Must be digitally signed
Your Manifext.xml tells the story:
<manifest xmlns:android="http://schemas.android.
com/apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1"
android:minSdkVersion = "3">
Version code - The version relative to other versions
Version name - The version that people will see
MinSDKVersoin - Requirement of end user's version
39. Pimping Android For Profit
NOTE: You can distribute your .apk file and charge any
way you wish!
However, if you wish to use the Market
URL: http://www.android.com/market
Signup on the market
http://market.android.com/publish/signup
Pay $25 registration fee.
Uses Google Checkout for payment processing.
70% for you, 30% for the carrier (T-Mobile)
Google offers an unlocked Google/Ion for $399.
T-Mobile adding app purchase to your bill.
44. Resources
Books
Mark Murphy - http://commonsware.com/Android/
Hello, Android by Pragmatic Programmers
Sites
AndDev.org - Good online forum
Google Samples - http://is.gd/knVZ
IRC
#Android-Dev
Google Groups
Android Developers
http://is.gd/knWK
Local Groups!
Android Dev MN - http://is.gd/knVO
Mobile Twin Cities - http://mobiletwincities.com
45. Add a splash page in our Adhoc coding
session!
Justin Grammens
Recursive Awesome
http://recursiveawesome.com