Android GUI Project
John Hurley
CS 454
Android
•
•
•
•
•
1. Android Basics
2. Android Development
3. Android UI
4. Hello, World
5. 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 developer’s 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. It’s not clear to me how this works.
• Docs say it does not necessarily improve performance.
Sams Teach Yourself Android™Application 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 computer’s 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
Android vs. Other 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.
• Probably better performance; one layer less
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 won’t
• 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
Sell to companies?
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);
}
}
What’s 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
Android Event 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 Android™Application 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/os-androiddevel/
•
•
http://developer.android.com/resources/browser.html?tag=tutorial
Conder and Darcey, Android Wireless Application Development, AddisonWesley, 2010
Conder and Darcey, Sams Teach Yourself Android Application
Development in 24 Hours, Sams, 2010
•