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) Copyright ©2010 Lauren Darcey and Shane Conder FIGURE 5.6 Simplified Android platform architecture from a security perspective. 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? [...]... encoding="utf-8"?> strings.xml resource file: Hello Again, CS454! CS454 AndroidDemo ... 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;... 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... 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)... 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... Hello Again, CS454! CS454 AndroidDemo 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);.. .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... 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... 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 . 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. encoding="utf-8"?> <TextView xmlns :android= "http://schemas .android. com/apk/res /android& quot; android: id="@+id/textview" android: layout_width="fill_parent" android: layout_height="fill_parent" . 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