Mobile Application Development Options most popular platforms/ application software: -BREW-Android -Symbian-JME -Palm OS-Windows Mobile -iPhone-Linux -BlackBerry -Lazarus -Flash Lite-.NET Compact Framework
Initial Selection Foundation functionality SymbianC++ No restriction JMEJava Varies AndroidJavaNo restriction iPhoneObjective C Restricted LazarusPascal Restricted Flash LiteAction ScriptNot applicable.NETC#, VB.NETlimited BREWC / C++ Operation specific Palm OSC/ C++No restriction WindowsC++, server sided No restriction BlackBerry unknownlimited
Selection Method Decision Matrix based on following criteria with the relative weight ( 7-highest, 1- lowest) : criteriaweight Java Based 7 Windows compatible 6 Time permitting 5 Documentation 4 License( free?) 3 Health of Developers community 2 Developing cost 1 Rating scale for each criteria: great extent some extent no/slight extent
. platforms pl platforms atf orms criteria ccc criteria rite ria Palm OS Google Android JME JMEBREW Symbian Symbian Microsoft Microsoft Windows Mobile Windows Mobile [7] JAVA BASED [7] JAVA BASED 7 X 1 = 7 7 X 3 = 21 7 X 1 = 7 7 X 2 = 14 7 X 1 = 7 [6] WINDOWS COMPATIBLE [6] WINDOWS COMPATIBLE 6 X 3 = 18 6 X 1 = 6 6 X 3 = 18 [5] TIME PERMITTING 5 X 1 = 5 5 X 3 = 15 5 X 1 = 5 [4] DOCUMEN- TATION 4 X 2 = 8 4 X 3 = 12 4 X 2 = 8 [3] LICENSE 3 X 1 = 3 3 X 3 = 9 3 x 3 = 9 3 x 2 = 6 3 x 1 = 3 [2] HEALTH OF DEVELOPERS COMMUNITY 3 x 2 = 6 3 x 3 = 9 2 X 1 = 2 2 x 1 = 2 [1] LEAST / NO DEVELOPING COST 1 x 1 = 1 1 x 3 = 3 1 x 2 = 2 1 x 1 = 1 TOTAL TOTAL Decision Matrix
High Level Architecture. Our code Voice-to-text Voice input Phone functioning on voice commands Text output Speech Engine Android
Speech Engine What is its role? - uses speech recognition software - voice – to – text - based on recognition grammar What is recognition grammar? - set of patterns allowing developers to train the engine on what to expect from the users
Available options: XVoice CVoiceControl Open Minded Speech G Voice Julius ViaVoice Sphinx4 Dragon Naturally Speaking(DNS) Asterix Loquendo
Selected options: ViaVoice Sphinx4 Dragon Naturally Speaking(DNS) Loquendo
.. Selecting the best option: engines criteria Loquendo Sphinx4DNS ViaVoice Open License Better command control Open Vocabulary Java based Noise Robustness Easy to incorporate BEST OPTION
. Functional subsystems: UI to receive voice command Voice-to-text Conversion Recognize Associated Button click Recognize Associated Event Launch Activity Access command in text from engine
1) Start running our programme. 2) Start by entering a ‘loop’ which keeps checking the file-content. 3) A boolean variable (say hasIt) declared and initialized as ‘false’. The file will be initially empty. The loop breaks when the variable becomes ‘true’ after the file has been introduced some content. 4)We then speak to the DNS through microphone. 5)DNS saves the file in the pre-defined directory, same as the one the loop checks for contents. 6)As soon there is some contents in the file, the variable ‘hasIt’ will be ‘true’ and the hence the loop breaks. pseudo-code:
pseudo-code cont’d: 7) The contents of the file will then be read through Java methods and save in a previously declared global string variable (say voiceCom). 8) The string is then compared with the several options (that have an associated int num with it) through ‘switch’ statement. These options to be compared with have the string equivalent of the possible commands the user would speak. 9) When there is a match between the string passed as argument and one of the options, the associated integer value is noted. This in the process has now identified the code value of android assigned to the voice commands. Android classes 10)Make any declared variable (suppose ‘action’) equal to ACTION_DOWN.
pseudo-code cont’d: 11) Call the method keyEvent (int action, int code) This created an action on some particular key. 12) Call onKeyDown(int, KeyEvent) and return true This is called when a key down/press event has occurred. 13)Set up a listener for the button click through UI notifications and return the event related to the button clicked. 14)Using class Intent method, create an Intent. This is creating the action to be performed in response to the button click (voice command). 15)Finally, using Activity class, start activity by passing the Intent created previously as argument. This launches the activity.
What we have achieved so far. GoalStart Speech engine selection project selection Requirements elicitation survey& user stories platform analysis object design pseudo-code implementation testing current status completed
SeptOct 36 Progress report Oral presentation Fixed deliverables Poster fair Final report Proposal Nov Dec Jan Feb Mar Apr Week # Monday Write-up Survey on the end users’ preferences Research on Cellular platform Software planning & Implementation Testing Prepare Final Report