Assignment 02

Due Date:

Thursday 01/17 In Class:

Non-integrated prototype

Tuesday 01/22 In Class:

Full application

U/I Software Projects

  • Winter 2013
  • Department of Informatics
  • Donald Bren School of Information and Computer Sciences

Assignment #2: Goal make a mobile phone app that uses sensors

  • Build a text-input alternative to a keyboard that does not require touch input
    • This system can use any type of motion or interaction from a user except for touching the screen.
    • It may not access the Internet during input. So no speech to text. The intention is to use sensors.
    • If you are going to use some complicated library, please check with the instructor first to make sure it is within bounds of the assignment
  • The goal is to create a system which is efficient and effective and to think through how the coding and the human body should be integrated.
  • Requirements for the system:
    • It must run a Java program compiled in Eclipse and deployed on the Android platform.
    • It must be integrated into the Android intents framework.
  • Admin
    • This is a solo or 2-person assignment. If you would like a partner you can use the forum to find people.
    • You may check out phones to deploy your app.
  • Evaluation will be conducted in class (100 points).
    • Acceptance test: Your team will be required to enter a sentence into a native Android application without touching the screen within 10 minutes. It may contain upper and lower case American English characters plus punctuation and numbers. An example sentence is: "How razorback jumping frogs can level six piqued gymnasts!" There will be two of these. (30 points each)
      • It must allow for characters A-Z and a-z
      • It must allow for space, and backspace
      • It must allow for numbers 0-9
      • It must allow for the following five punctuation . , ? ! '
      • The case of the first letter in the sentence doesn't matter
    • Speed test: You will race against other teams to enter a similar sentence. (2 points for every team you beat)
    • User test: A different team will attempt to pass the acceptance test with your interface within 15 minutes. (25 points to the team that wrote the software, 2 bonus points to the person who passes the test) Volunteers will be assigned randomly and be given 5 minutes to train.
    • Please note how important it is to have a working app for this assignment!
    • Finally you must turn in your Eclipse directory with your source code as a .zip file to this drop box: https://eee.uci.edu/toolbox/dropbox/index.php?op=openfolder&folder=304242 *and* email Prof. Patterson a statement about your source code, indicating what libraries and/or other source code you used or built upon.
    • Miscellaneous points:
      • Shift not working, or missing a class of characters: -7
      • Nothing but code turned in up to 25 points
      • Missing a character: -2
      • Not able to complete a phrase, but able to get some text entered: subjective call, deduction of -10 perhaps
  • How to get this done:
    • Set up your environment for creating Android apps
    • Make a "Hello World" app for your phone to make sure your configuration works
    • Download the skeleton Eclipse project here
    • Create a new project using the skeleton code
    • Fix all the TODOs in the Skeleton code
      • Pick a package name and class name for your keyboard
      • Update the AndroidManifest.xml file
        • with the package and class names you picked
        • add the appropriate intents-filer
      • Make a U/I for your input method in res/layout/input.xml
      • Implement the appropriate code in src to capture sensor data, update the U/I, and accept letters from the user
    • Helper functions:
      • myTranslate: will convert a Java character to an Android KEYCODE
      • keyDownUp: will execute a key press,as if you pressed a key on a keyboard
    • The LifeCycle of the InputMethodService is like the LifeCycle of an Activity:
      1. onCreate()
      2. onStartInput()
      3. onCreateInputView()
      4. User types away
      5. onFinishInput()
      For greater detail for more complicated keyboards see here.