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:
- onCreate()
- onStartInput()
- onCreateInputView()
- User types away
- onFinishInput()
For greater detail for more complicated
keyboards see here.