Professional Documents
Culture Documents
Android GUI Project: John Hurley CS 454
Android GUI Project: John Hurley CS 454
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 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. Docs say it does not necessarily improve performance.
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
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 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
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); } }
/* 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; } }
Whats R?
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); } });
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