Journal - revivalliu/androidproject GitHub Wiki
1st Week
Work Done
- Completed the initial design of the app in terms of the functionality and high level framework.
- Finished the documentation of the design, including the graphical layout.
- Completed and updated my UI design mockups to make the transition more smoother.
- Compiled and played with the exercise apps and tested them on my device.
Lessons Learned
In this week, I first learned how to compile and run the app, getting familiar with the development environment. Furthermore, I learned to use the db helper to simply handle the data entries. Also, I learned about the relevant xml files, such as how xml works with java classes.
Plans for Next Week
I will finish the edit and view reminder activities coding part and add them to the login page.
2nd Week
Work Done and Lessons Learned
I have finished the basic reminder function of my app, I tested it and there were some problems with the intents I wrote, some pages of my app did not link very well. Functions added: Message input and ability to choose reminder frequency (once, or repeat). Reminder can be edited after long press. Display settings (Display time, data range, date format, time format) Notification settings: vibrate on notification and set ringtone option.
Plans for Next Week
For the next week, I will fix this problem and improve my UI for the basic reminder, and try to add the location function on my app. Add an image note option.
3rd Week
Work Done and Lessons Learned
1.Solved "void is an invalid type for the variable onToggle" problem. 2.solved the missing R.java problem. I simply fixed my issue by removing the R.java file in the "gen" directory. It forced Eclipse to regenerate it and R.menu got resolved. added set task priorities function to my app following the professor's instructions to update the library of action bar 3. Added photo note function.
Plans for Next Week
For the next week, add more options to the task options, e.g., fast edit. Action bar might need some time, but will try to add slide bar and more rich menu options. Make an icon for this app and another one for the background.
4th Week
Work Done and Lessons Learned
Did some UI change. Added photo task note function. Added slide menu. Added category management (To do: show category in the browse view) Added edit, delete, set reminder options for a task note. Added lock or unlock function for a private note so even after logging into the app, extra passwords can secure certain task file. Added sort tasks note functions, can sort by last modified time, alphabetical order or created time. (To do: add sort by file types, so user can sort can access photo, voice memo or location tasks easily)
Plans for Next Week
Next week, modify the checklist function and its UI, and change it into long term tasks reminder. Still have some problems with the set reminder function with the task, the app showed some threads issues when trying to set reminder in browse view.
5th Week
Work Done and Lessons Learned
Added hide locked items function in the security setting. Added passcode to access setting for each user. Added some cute icons into my app. Learned and tried with fragment notation by attempting to add the sliding menu and swipe tabs. It didn't work as expected though. Learned the sliding menu and action bars, as well as speech to text and text to speech.
Plans for Next Week
Next week, upgrade the functions of the app and its UI, and change it into adjust to the features to make the app looks and runs more smooth and earlier for the audience to master the basic and advanced functions. Plan to address the remaining problems with the set reminder function with the task, the app showed some threads issues when trying to set reminder in browse view.
##6th Week
Work Done and Lessons Learned
Added action bar and search view successfully, along with several other menu items. Update graded and further optimized the app and its UI. Followed the professor's advise to modify the corresponding functions and tabs and/or login activities. Attempted to resolve the threading issues and learned the tips to deal with threading issues.
Learned importance the design and framework in the project. Adjusted the planning according.
Plans for Next Week
Complete the important features and test every tabs and button, click, complete the unit test and optimize the user experience. Resolve any potential issues that cause the app to terminate unexpectedly.
##7th Week
Problems with @Eclipse Hung@
Eclipse gets hung up on "Android SDK: resolving error markers" when it was started yesterday. It freezes completely and only way to quit it is to force quit (command + option + esc).
Solutions for @Eclipse Hung@
- cd workspace folder
- rm ./.metadata/.plugins/org.eclipse.core.resources/.projects/*/.markers
- cd Your/path/to/Eclipse.app/Contents/MacOS
- ./eclipse -clean -refresh
- DONE (Save hours of time!)
Functions and Skills Learned
Extended the menu functions by adding new items, also I added voice memo as well as the speech to text function. Besides, I learned on how to build and make use of a android library. Currently, I am learning how to call intent to start the external activity from current app and going back, as it involves more complicated thread handling issues, I have to put it on held due to the tight time constraint. But I will come back to work on these issues later, because when playing with these threading issues, I experience more funs than pains. I am learning though having fun with building the app.
Thru the experience and playing with the app, I learn the relation between the minimum sdk level and target sdk level, the manifest files as well as the menu folders., In this week, I mistakenly delete some unimportant xml files that cause the app to terminate unexpectedly. After spending hours trying to recover the files, I can only recover the major functionalities that were developed and added recently. The hard lessons I learned here is that try to frequently use either the local backup of the project or use the version control tools like svn, or commit to the github frequently. In the long run, it definitely save time.
Usually add new class shouldn’t lead to crash, but it happened to my app this week. I tried several ways and eventually I was able to find the reason and fix the issue. Through the development and debugging process, I am leaning on dealing with database, which can easily cause the app to stop unexpectedly.
##8th Week
Work Done and Lessons Learned
Integrate and optimize the features. Played and learned with drawing functions. Attempted to resolve the threading issues and learned the tips to deal with threading issues. Learned importance the design and framework in the project.
In the project, I learned to prioritize the tasks in the high pressure and fast evolving development cycle. On the one hand, I added the location menu and functions, added share functions, so the notes can be shared with friends and others via the built-in approaches like, Gmail, Google hangout, Google plus, etc. I updated the buttons with text and icon on click activity so they would provide a better user experience. Moreover, I exercised on the clock functions and clock features and added countdown timer functions, upgraded the icons to use the standard icon pack obtained from google android development package
On the other hand , I experienced some weird occasionally crash issue when click a button. Although there is no deterministic behavior when click the button, there is about 1/3 chance of crashing after the click. I have spend a couple of hours to troubleshooting the problem, make some progress on reduce the chance from one crash in every three clicks to one in ten clicks. I think this is the relevant threading issues that causes race conditions. I tried to add the semaphores to prevent the race conditions and it seems does not resolve the issue, but helps somehow. So far, I concluded there might exist more than one race conditions. Due to the limited time, I have to switch to work on other important issues, but I will come back to hunting down this issue later.
Plans for Next Week
Complete all the features and test every tabs and complete the unit test and optimize the user experience. Resolve any potential issues that cause the app to terminate unexpectedly, hope everything runs smoothly.
##9th Week
Work Done and Lessons Learned
New features were added, such as voice recognition (basically, this feature allows users to speak to apps and app would recognize the word and display the words as text message), audio memo and drawing functionality. In these new added features, audio memo is different from voice recognition in the sense that it would keep the audio format and allow the user to replay. Tried to optimize the user interface, including the buttons, and background.
In this week, other than learning new technical skills and knowledge, I Worked on implementing new features and tested the features before adding them and I found this strategy works pretty well as it would reduce the chance of introducing the no good features to the project.
Plans for Next Week
Try to complete the rest major features and test all the functions. resolve the issues in xml file. Make the user interface and buttons look consistent. Make the app easy to navigate.
##10th Week
Work Done and Lessons Learned
Dealt with lots of issues like converting and scaling the hand writing to proper sized image and save to database tables. Load the tables when the app starts up. The issue that some time the table cannot be loaded was solved. Also, even though there still lots of places to improve and several functions may not work properly, the main function of hand writing seems start functioning.
Fixed many bugs in XML and manifest file, remove unnecessary declarations, especially those were declared first, but didn't use later due to the changing plans. Fixed Null pointer issues and XML file cannot be inflate properly. Added location reminder, unfortunately, it was hard coded. Will come back to work on this later.
Plans for Next Week
Complete the rest features and test all the functions. Make the UI look better and making the app more stable. Fix more bugs.
##11th Week
Work Done and Lessons Learned
Rearrange menu items and icons making them more intuitive and more illustrative, providing a much easier way of navigation in the app for the users who use the app for the first time. Make the changes to some color rendering and optimization of the UI.
Dealt with some db cursor issues and updated the cursor color in the notes and check list to make it easy to be seen. Tried to add the function to set the priority of the listed tasks, encountered some issues on the initialize the object. Tried to resolve the transparency issue of the image button.
The reproducible bug of the occasional crash was get better significantly and the app was very stable now. Added and rearranged the menu buttons and updated the button images to make them look consistent with the app theme.
Plans for Continue Studying
More work can be still done. Database management can be further optimized, user interface, and more functions can be added to the app, such as speak a word to search the notes table in the database. Adding the progressive tracking of the long-lasting task and performance evaluation scores to help user to feel inspired to improve the daily productivity.