Multimedia Mobile Programming Pertemuan 9

  

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.

  Sams Teach Yourself Android™Application Development in 24 Hours (0321673352) Copyright ©2010 Lauren Darcey and Shane Conder

FIGURE 5.6 Simplifed Android platform architecture from a security perspective.

Android Development

  • Well-defned 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 fnd out!
Android Development

  • Android Development Tools plugin + Android SDK

  Standard development environment is Eclipse

  • 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
  • and software confguration

  Real device is afected by specifc hardware 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 frst 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

  • coming soon

  Android Flash plugins available; Silverlight

  • 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,
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

Android Deployment

  • Apps are packaged in .apk format, variant of .jar, then downloaded to device and installed .apks contain .dex fles (bytecode),
  • manifest and various other fles
  • 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

Android UI

  • Service: background operation
  • play music in the background while the user is in a diferent 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 frst 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="fll_parent" android:layout_height="fll_parent" android:text="@string/hello"/> strings.xml resource fle: <?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 frst 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 modifed by hand. */

    package cs454.demo; public fnal class R { public static fnal class attr { } public static fnal class drawable { public static fnal int icon=0x7f020000; } public static fnal class id { public static fnal int textview=0x7f050000; } public static fnal class layout { public static fnal int main=0x7f030000; } public static fnal class string { public static fnal int app_name=0x7f040001; public static fnal int hello=0x7f040000; }

  UI With GUI Builder

  Android Event Handlers

  From the code fle for the activity: Button ok = (Button) fndViewById(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) Copyright ©2010 Lauren Darcey and Shane Conder FIGURE 3.2 Important callback methods of the activity life cycle.

  

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

  • implemented in Java in CS 460 last term.

  Goats and Tigers is a board game, which we

  • 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- android-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