- 1 Personal Information
- 2 Project and Goals
- 3 Milestones
- 4 Weekly Log
- 5 May 26 to June 1
- 6 June 2 to June 8
- 7 June 9 to June 15
- 8 June 16 to June 22
- 9 June 23 to June 29
- 10 June 30 to July 6
- 11 July 7 to July 13
- 12 July 14 to July 20
- 13 July 21 to July 27
- 14 July 28 to August 3
I attend Carroll College in Helena, Montana. I am on track to graduate in the spring of 2014 with a degree in Computer Science.
Project and Goals
I am working with Dr. Praveen Madiraju on the issue of mobile phone interruptions. The main goal of this research project is to produce an android application that can intelligently interrupt users, causing only minimal disruption.
The milestones to achieve this goal are subject to change:
- Bring together all the research that has been done on this subject, paying particular attention to Sina Zulkernain's Masters Thesis: Modeling Cost Of Interruption (COI) To Manage Unwanted Interruptions For Mobile Devices
- Determine other contexts and research that may be pertinent to this project.
- Based on the research, formulate a design for android application.
- From the design, write the application.
May 26 to June 1
This was the first day of the REU program and entailed:
- Lab Orientation
- Filling out and turning in paper work
- Met with Dr. Praveen
- Toured Campus
- Talked with Dr. Praveen to get a better understanding of the research project that will take place this summer and got an idea of some goals and milestones
- Read and took notes on the Journal Entry: A Mobile Intelligent Interruption Management System
- Read A Context-aware Cost of Interruption Model for Mobile Devices
- Downloaded and started playing around with the Android ADT plugin for Eclipse
- Read and took notes on Sina Zulkernain's Masters Thesis: MODELING COST OF INTERRUPTION (COI) TO MANAGE UNWANTED INTERRUPTIONS FOR MOBILE DEVICES
- Worked on trying to understand the model that determines the Cost of Interruption
- Worked more with the android development tools
- Looked into applications that already exist
- Compiled a document of my current understandings and questions to go over with Dr. Praveen during our meeting tomorrow.
- Formulated some ideas about areas to explore and possible other insight
- Continue to research apps that already exit
- Looked into some more studies on interruption
- Met with Praveen to further discuss what exactly I would be working on
- Brainstormed motivational situations that would benefit from intelligent interruption
- Looked into the sensors that current phones have
- Worked a little more with the android plugin
June 2 to June 8
- Compiled the information on similar applications
- Created a spreadsheet
- Listed how they accomplished certain tasks
- Continued looking into sensors
- Read A Survey of Mobile Phone Sensing
- Continued brainstorming motivating scenarios
- Looked into articles about cell phone interruptions, specifically distractions while driving.
- Spent more time with the android platform, mostly with UI layout.
- Worked with the android sdk
- Buttons (Got a button to count up)
- Learned about intent and activities
- Created a basic app that transitioned between activities using intents
- Read about the life cycle of an activity
- When to Dr. Corliss' talk on LaTeX and citing material
- Organized my current information
- Looked into what contexts the phone sensors could measure
- Continued to try and organized the information on hand
- Continue to try and understand the model for COI
- Continued working with the android platform
- Retrieving the date and time
- Storage options
- Launching a different app from the current one
- Accessing the location feature
- Continued to try and understand the model, still having difficulty with it
- Learned how to simulate a phone call and a text message on the emulator
- Created a basic UI for the main menu and the contact menu
- Learned how to add views to the layout
- Continued to try and understand the model
- Looked into Android Database storage
- Met with Dr. Praveen to discuss what I've worked on and where to go from here.
- Looked into what research has already been done on this subject.
- Started working on a math model
June 9 to June 15
- Continued looking for similar research
- Started to type up my findings
- Continued to work with the math model
- Created a basic java application to test the model
- Continue to look into Android Database storage
- Continued to type up my findings
- Continued to look into Android database storage
- Met with Dr. Praveen, discussed my write-up, the math model, and where to go from here.
- Went to Dr. D's talk on good presentations and good technical writing
- Worked on different scenarios to test the model
- Looked into phone calls triggering code
- Looked into automatically changing the phones interruption profile
- Continued working on the math model
- Tested the model with various scenarios, finding strengths and weaknesses
- Continued to try and create a database
- Created a database that I could store and retrieve information from.
- Had our working lunch.
- Looked more into model and scenarios.
- Looked again at Bayesian Inference and the Dempster-Shafer Model
- Met with Dr. Praveen, talked mostly about the model and current things I could do to try and make it better
- Looked into android development books that might be useful
- Continued working with the current model, this time attempting to add default values and different weights
- Continued working with the android platform
June 16 to June 22
- Re-read the journal entry for further clarification on the model used
- Worked with the current model more, analyzing default values and a different weighting scheme
- Learned how to create ListViews and found they are ideal for the UI.
- Replaced the button scheme with ListViews.
- Continued working on the android application
- Cleaned up the code a bit
- Linked the dynamic group menu to the contacts menu
- Added the contacts table to the database
- Was able to get the database working for the group menu, but not for the contacts and preferences that correspond to the group menu
- Met with Dr. Praveen. We mainly discussed the model currently is and what further tests to put it through. Also discussed how the android application was coming.
- Looked at a few more scenarios for the model, as well as tried out adjusted weights
- Discovered inconsistencies with my analyzing program and will need to re-design it and rerun the scenarios if I'm to believe the results.
- Continued working on the Android application
- Got the group preferences to be saved in the database
- From the contact info activity you can now access the contacts activity, and retrieve contact information
- Does not store this information but can currently display it.
- Re-organized the java program for convenience and accuracy.
- Continued working with the model, an adjusted weighted average is currently the best approach.
- Was able to save the contacts the are in each group.
- Had our working lunch and watched Dr. Brylow's presentation.
- Started Reading Profession Android 4 Application Development
- Met with Dr. Praveen, talking about the model and application as it stands
- Read Professional Android 4 Application Development most of the day
- Tried to work with a Broadcast Receiver
June 23 to June 29
- Worked on my PowerPoint for the presentation Thursday
- Continued reading the android book
- Looked into ambient sound scenarios and found it probably shouldn't be included
- Tried to create a scenario involving all five contexts but found none made sense
- Continued looking into Broadcast Receivers
- Worked more on the math model, finding truly adjusted weights don't work well.
- Worked on the application
- The Broadcast Receiver now launches a Service
- Created the Service
- The Service can dynamically change the audio profile of the phone
- Was able to change the profile based on who was calling
- Met with Dr. Praveen and discussed my mini presentation.
- Made changed to the PowerPoint and practiced what I was going to say
- Worked on cleaning up the code for the contacts and contact information. It is a mess and difficult to understand what's going on.
- Being halfway through I created a Gantt chart to map out what I need to get done with the time I have.
- Attended and participated in the REU mini-presentations.
- Started integrating the math model into the application.
- Finished cleaning up the code for contacts and contact information.
- Ran into troubles with phone number formatting.
- Android Application:
- The contact in a group will now be deleted when the group is deleted
- The preferred mode of interruption UI is added, but is not incorporated into the database yet
- Solve the issue of phone number comparison by iterating through the cursor
- Started adding the weights UI, for now only contacts with a spinner for the weight
- Worked on creating shared preferences for the weights
- Met with Dr. Praveen to talk about what I will be doing for the last half of the REU.
- Received an Android phone from Dr. Iqbal to test the application on.
June 30 to July 6
- Experience difficulties importing my files into eclipse
- Had to create each class individually and paste my code
- Got the weights UI working properly, allowing for ranking by using up and down arrow.
- Set up the calculations to work with the weights
- Tried adding a delete button to each listview item in the Contact Activity, but was unsuccessful
- Looking into how to access and insert information into the native calendar
- Looked on the phone to see how the calendar works
- Currently am planning on using a delimiter to get the P(I) for both schedule and time of day
- Wrote a simple program that would use dollar signs to encapsulate the P(I)
- Created a basic app for calendar manipulation
- Continued working on the contacts context
- Went to Dr. Magiera talk on what makes a good poster
- Got a delete button layout working and added it to both the contact activity and the contact info activity
- This delete button allows to delete groups or contacts you add
- Decided the changes I will need to make to the UI and the database before I can be done with contacts. Once done with contacts I think I will be able to use it as a template for the other contexts.
- Found the weights UI was not working properly and fixed the issue by changing the layout and button listener
- Added a preferred method of interruption field and incorporated it into both the database and the UI
- The preferred method of interruption is now taken into account when putting a call through
- Worked on setting up a activity that can access calendar information. Can't test it out until I have Android 4.0 running on the phone.
- Got the Android phone running with my SIM card. Placed a call and it work according to plan! Will need definitely need to test it further.
- Had difficulty upgrading to Android 4.0
- Readjusted the Gantt chart for more realistic goals
- Decided to go with a standard delimiter and pattern matching to get P(I) for both Time of Day and Schedule
- Got the delimiter coded and integrated into the calculation
- Set up a default P(I) for contacts and for schedule
- Added the time of day activity, with the default P(I) field included in the user interface
- Incorporated the method of interruption for both TOD and schedule
- Started reading about the publication of the application.
July 7 to July 13
- Devised a basic plan for testing the current app on the phone.
- Cleaned up the calculation code.
- Added the adjusted weights method as this was found to be the best model.
- Added indicators to the weights to specify the most important vs the least important.
- Looked into the driving aspect
- Incorporated the Google Play Services Library
- Got a sample application to tell (to some degree) what the user is doing, but a lot more work still needs to be done in this area.
- Looked into SMS messages trigger profile changes, currently it is only calls.
- Got SMS messages to work just like calls when it comes to changing profiles
- Started testing the application and ran into lots of problems
- Querying with apostrophes causes issues, can be fixed by adding two apostrophes.
- Found querying the calendar contract doesn't return results if there are multiple instance of an even.
- Fixed this by querying for instances of evens in a time range.
- Found the adjusted weights weren't working, fixed it by moving around some code.
- Getting preferences and preferred method of interruption from calendar is not working as it should. I am still working on fixing this.
- Looked into querying off the main thread, as it is recommended.
- Tried to make the UI more informative, but there still is a lot to do in this regard. It currently isn't user friendly and isn't immediately intuitive.
- Worked more with action recognition.
- Fixed the issue with getting the P(I) and preferred method of interruption from the calendar
- As activity recognition was somewhat successful, I began implementing it into the application
- Created the UI with shared preferences to save the preferences
- Implemented the service that requests the activity from Google Play Services
- Open cursors and databases was causing issues, so I closed all that were opened and check to make sure the application still functioned properly.
- Found the activity recognition service doesn't always work as planned. After changing somethings it appears to be working, but I'm not sure it is reliable.
- As the user may not want continuous sensing, I added a toggle button that will later incorporate turning the service on and off.
- Worked on getting the toggle button to turn off activity recognition. It appears to be working correctly.
- Looked into some of the issues that occur if the user does not have location services turned on.
- Read about dialogs, as these may be helpful to the user.
- Added a dialog to the contact activity so the user must acknowledge the deletion of a group.
- Met with Dr. Praveen. We discussed what I've done, some changes to the current design, and ideas of where to go from here.
- Had our working lunch.
- Determined that initially connecting to the Google Play Services and requesting activity recognition can take a while (trail runs indicated up to at least 15 seconds). This is to long to calculate before changing the phones profile.
- Added extra preferences for schedule when an event occurs, but there is no P(I) set.
- Looked into location services for the location context.
- Continued looking into location services. Attempting to get the current location was unfruitful and after a while I decided to move on.
- Due to the time of day context receiving input in such a peculiar way, I decided to redesign how the user interacts with time of day. This includes:
- Changing the UI
- Allowing the user to create time of day profiles
- Each profile sets a certain time frame, and the days it applies to.
- Currently, I am having difficulty with time of day due to formatting issues, as well as lots of other little problems.
July 14 to July 20
- Continued working on Time of Day Preference
- Added the P(I) and interruption preference spinners, and integrated them into the database.
- Got the time working, and integrated it into the calculation.
- Currently you have a time span over one day, but creating multiple profile would allow for that.
- Continued looking into location, this time a little bit into maps.
- Decided a map might take too long to integrate, so instead focused mainly on locations.
- While I got geographic coordinates, it does not seem to be very consistent or very accurate.
- I can update frequently and have a better idea of where the user is, or I can leave it up to Google Play Services, where I don't know how often they update the location.
- Was able to create a basic app that allows the user to search for an address, and for Google to come back with possible options, as well as the longitude and latitude.
- Met with Dr. Praveen. We talked about the application, determining the location context, and also the poster presentation.
- Started implementing the location component
- Created the UI, borrowing the design and functionality from time of day and contacts.
- Was able to utilize the location search.
- Was not successful in incorporating location into the calculations yet.
- Continued to have issues incorporating location into calculations due to thread problems.
- Cleaned up the calculation code as it was getting out of hand.
- I think I successfully implemented location into calculation, though the current solution has possible future problems and functionality issues.
- Worked on the poster more, got a basic design with some key points, but definitely needs more work.
- Looked through the UI and made notes of really unattractive designs and design flaws.
- Tried to fixed a keyboard obstruction problem, but wasn't able to get the keyboard to disappear
- Found database issues and worked on closing connections to the database when it was no longer needed.
- Continued to work on the poster presentation
- Added a default phone preference in case none of the contexts are met. Testing it out it seemed to work fine.
- Tested the application with Google Play Service deleted. Besides the location based contexts it still seemed to run.
- Went to the working lunch
- Met with Dr. Praveen. We talked about the poster, the location service implementation, and additional things to look into.
- Tried to get start and stop times to record the time it takes for the program to execute, but something isn't working correctly
- Added a switch that can turn the application on and off.
- Made small changes to the poster.
- Made improvement to the keyboard section of location preferences
- Tested the application.
- Added a method of interruption spinner to the schedule context for an event that occurs but isn't specified.
- Found an issue with the schedule. I believe I fixed it by changing the regex and a few other logical things. I also tested multiple events occurring at the same time and found it worked correctly.
July 21 to July 27
- Found my evaluation of the scenarios weren't correct, and will have to re-evaluate all the methods at some point.
- Evaluating the scenarios on the phone all of the outputs were what was expected.
- After analyzing the time it takes for the application to run, and seeing the results of changing the profile, the application must run under 0.6 seconds.
- Tried finding more information about location services and how often it updates the location, but I couldn't find much
- Started the paper outline and did some documentation for the activities.
- For the location to update it requires a constant connection to Google Play services, so I added a background service that connects the device. I also tried to get it to connect on boot but it doesn't seem to have worked.
- Re-evaluated the other methods. Besides a few scenarios changing the overall results were essential the same as before.
- Tried to figure out how often location services update, but was not successful.
- Met with Dr. Praveen. We talked about the poster, and where to go from here. I will have to stop coding and start working on the write-up.
- Tried to find information about battery consumption. However, I couldn't find any precise data on the apps power consumption, and multiple apps that claim to determine the battery usage reported different figures.
- Continued working on the outline and writing the paper.
- Finished looking over the poster and submitted
- Tried to find more about battery usage. While I couldn't get exact values or clear answer, it does appear the use of Google Play Services uses a considerable amount of the battery.
- Finished the outline
- Worked on the paper. Create a pretty rough rough draft of the general model and the implementation sections of the paper.
- When testing the application with phone calls I found issues with going from vibrate to ring, and vibrate to silence. I also found the times to evaluate don't seem to be the same for calling and for texting. I tried a few things to fix the problem but can't find a solution. Testing another app that changes profile based on contact had no issue with changing profile.
- As there is only a week left, and next week we will have poster presentations and formal presentations, I am no longer working on the application. It is to a point where it is functional, though there is so much more I can still do with it. The problem is time. As the paper is going to take me a good deal of time, as is preparing for the presentations next week, this is what I plan to work on from here on out.
- Had our working lunch.
- The paper
- Finished writing the introduction. I came back later and re-wrote it, as it was pretty terrible.
- Wrote the rough draft for the motivation section, the previous research section, the application status and future work section, the limitations with our product as well as other COI models, and future research.
- As it stands, the extremely rough draft is mostly completed. It is no where near final paper quality and will require a lot more work. Hopefully all the information I want to relate is in the current draft, and it can just be refined from here. My meeting tomorrow with Dr. Praveen will hopefully set me on the right track including everything that should be included in the paper.
- Continued working on the paper
- Edited motivation
- Edited Generating the model
- Edited the implementation of the application
- Edited the application status and future work sections.
- Met with Dr. Praveen. We talked about the paper, as well as trying to obtain system usage of the application.
- Looked into finding the system usage by the application.
July 28 to August 3
- Further attempted to find the system usage of the application. Retrieved some preliminary statistics, but further investigation should really be done.
- Added navigation and system usage to the paper.
- Met with Dr. Praveen. We got the abstract worked out. Will focus my energy on the paper and the presentation. If there is time will look further into system usage, but I don't think there will be extra time.
- Continued reading the paper, mainly editing and reworking sections.
- Practiced going through the power point for the final presentation. It definitely needs some work.
- Continued editing the paper
- Worked more on the power point presentation
- Attended and presented my poster at the poster presentation
- Spent the majority of the day reading through and editing the paper. It seems to be almost complete. After hearing feedback from Dr. Praveen and reading through again for editing, I think it will be ready to be turned in.
- Looked through the PowerPoint again. After going through it I had to cut down on some areas to save time.
- Continued to make changes to the PowerPoint
- Attended the first day of Final Presentations
- Met with Dr. Praveen. Discussed changes that should be made the paper and to the PowerPoint
- Made changes the paper. Read through it looking for grammatical and spelling errors
- Attended the second day of Final Presentations. Today I presented my talk "Interruption Management for Smartphones"
- Removed SIM card from borrowed Android device. Reset the device to factory default.
- Returned the phone and the books to Dr. Praveen.
- Sent Dr. Praveen the final paper, the final presentation, the poster presentation and the android application project.
- Sent Dr. Brylow the final paper.