You are on page 1of 25

Android GUI Project

John Hurley
CS 454

Android

1.
2.
3.
4.
5.

Android Basics
Android Development
Android UI
Hello, World
My Project

Android Basics

Open source OS
Uses Linux kernel
Optimized for limited-resource environment
Apps typically written in Java
Apps run on the Dalvik Virtual Machine
Not a JVM, but works similarly from
developers point of view
Usually one app per DVM
Each DVM runs under Linux as a separate
user
App permissions set at install time
Possible to use C or C++ compiled to machine
code, but still runs on VM. Its not clear to me
how this works.

Sams Teach Yourself AndroidApplication Development in 24 Hours (0321673352)

FIGURE 5.6 Simplified Android platform architecture from a security perspective.

Copyright 2010 Lauren Darcey and Shane Conder

Android Development
Well-defined framework for app
development
Apps are typically coded using Java
syntax, but other parts of the Java
platform are missing
Some standard Java SE or ME APIs and
class libraries are not included
I will give examples when I find out!

Android Development

Standard development environment is Eclipse


+ Android Development Tools plugin + Android
SDK
Development requires either an Android OS
device or an emulator
Emulator has limitations:

Performance is poor
Camera, etc., simulated using your computers
hardware
No real phone calls or texts
GPS data, battery readings, etc. must be
simulated

Real device is affected by specific hardware


and software configuration

Mobile OS
I was able to choose what kind of smart phone to
get according to which platform I wanted to use to
try mobile development

Android:

I had Java backend code ready to go for a first


project
Interesting platform:
Familiar programming environment
Currently the market leader
Broad market, unlike more focused iOS,
Blackberry, and (Palm) webOS
Development tools are open source and are
free even for commercial use, unlike Visual
Studio

Android App vs. Mobile- Optimized


RIA

Android Flash plugins available; Silverlight


coming soon
Could develop in JavaScript and/or HTML5

WWW App
Easier for users to run; no need to install
For a paid app, avoid the 30% App Store
commission
Easier to write cross-platform apps

Android Apps
Fewer security hurdles
Use APIs for access to built in GPS, camera,
etc.

Android Apps: Marketing

Usually market apps through Android App Market


There are other markets, also

App store will dominate the market due to


access through built in app

Can set up for download directly on a website

User must agree to install apps from unknown


sources

Android Apps: Marketing

Revenue from app sales prices and/or advertising


Conventional wisdom is that iOS users will pay
for apps, but Android users wont
57% of Android App Store apps are free, vs.
28% for Apple App Store
Android Market takes 30% commission
Any purchase model other than one-time
purchase must be homegrown, using Paypal or
similar service
PPC ads
My guess is that response to these is
extremely low
Probably need to be very aggressive with
banner ads

Android Deployment
Apps are packaged in .apk format,
variant of .jar, then downloaded to
device and installed
.apks contain .dex files (bytecode),
manifest and various other files
Manifest contains security and link
info, hardware access info, minimum
OS release info, etc.

Android UI

Activity: single screen with a UI, somewhat


analogous to XAML / code behind pattern in
.NET
Email app might have one activity that
shows a list of new emails, another activity
to compose an email, and another activity
for reading emails
Implement by subclassing Activity class
View: drawable object

Android UI View MVC View


UI contains a hierarchy of Views
View is a class, subclassed by the drawable
objects in the UI

Android UI
Service: background operation
play music in the background while the
user is in a different application
fetch data over the network without
blocking user interaction with an
activity
Content Provider: DB or other data access
Broadcast Receiver: responds to system
messages
Battery low

Android UI
UI construction can be done in three
ways:
Programmatic, like hand-coded Java
desktop GUI construction
Declarative hand-written, like Java web
UI construction

XML

Declarative with a GUI builder, like .NET


UI construction

GUI builder generates the XML

Programmatic UI
package cs454.demo;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class AndroidDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Activity is a subclass of context, so the TextView takes this as a parameter
TextView tv = new TextView(this);
tv.setText("Hello, CS454");
setContentView(tv);
}
}

Manual Declarative UI
main.xml Layout File:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"/>
strings.xml resource file:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello Again, CS454!</string>
<string name="app_name">CS454 AndroidDemo</string>
</resources>

Manual Declarative UI
Java class:

package cs454.demo;
import android.app.Activity;
import android.os.Bundle;
public class AndroidDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

Whats R?

/* AUTO-GENERATED FILE. DO NOT MODIFY. This class was automatically


generated by the
* aapt tool from the resource data it found. It should not be modified by hand. */
package cs454.demo;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int textview=0x7f050000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}

UI With GUI Builder

Handlers
From the code file for the activity:
Button ok = (Button) findViewById(R.id.button1);
ok.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
CharSequence s = et.getText();
tv.setText("Welcome, " + s);
}
});

Sams Teach Yourself AndroidApplication Development in 24 Hours (0321673352)

FIGURE 3.2 Important callback methods of the activity life cycle.

Copyright 2010 Lauren Darcey and Shane Conder

APIs for Android built-ins


Android OS ships with many built in apps
Web Browser
Google Maps
Navigation
Camera apps
Built in access for these as well as TTS
and Voice Recognition, etc.

Demo

My Project

Goats and Tigers is a board game, which we


implemented in Java in CS 460 last term.
The objective in CS460 was to implement the
minmax / alpha beta pruning algorithm for the
automatic player, not to create a good UI
My existing interface shows an ASCII art picture
of the board and provides a JOptionPane menu of
available moves
I will develop an Android UI and use my existing
backend code as much as possible

References

http://www.ibm.com/developerworks/opensource/library/osandroid-devel/
http://
developer.android.com/resources/browser.html?tag=tutorial
Conder and Darcey, Android Wireless Application
Development, Addison-Wesley, 2010
Conder and Darcey, Sams Teach Yourself Android
Application Development in 24 Hours, Sams, 2010

You might also like