In today’s world, people use their smartphones for a number of different reasons – it has become their calculators, their wake-up alarms, and their source of Internet etc. All of these apps within the smartphones require user inputs every time they have to perform an activity. There exists an opportunity for a number of these apps have the ability to become “smarter”, that is, they can be automated and made more intelligent.
Bundle is an Android app that aims to achieve this – it is a bundle of different intelligent facilities provided to the user. By intelligent, we mean they have the ability to learn the users preferences as he user uses the app, and will eventually automate some of the basic facilities that users use a smartphone for. Keywords: Learning Agent, Feedback, Knowledge Base, Android, and Automation. Introduction Bundle is divided into three different modules, which are explained in further detail in this report it is capable of switching the Wi-Fi and ringer of a user’s phone based on his location; it is capable of setting the user’s alarm based on his preferred waking up time; it capable of managing the user’s appointments and it is capable of displaying the user’s to-do list when he is at his preferred location f working.
Currently there are apps that do provide the functionality that Bundle is trying to implement. But, the difference is most of the apps on the market are not learning agents. Development of Bundle included first procuring information from the different applications we were trying to automate on an Android phone i. e. GPS, Ringer, Wi-Fi, and Alarm etc. Once this process was completed Database APIs were built. Triggers that would push information into Knowledge Base were also built. After this the learning process, where the database is filled with user details and preferences was undertaken.
We have divided the project into three modules: 1. Location Based Assistance: This module makes use of the user’s location. Ringer automation, Wi-Fi automation and daily task assistant come under this module. 2. Automated Alarm: In this module, we have created an alarm that we can use to observe sleep pattern of the user over a period of time. 3. Appointment Management: This is the third module. It takes care of scheduling user’s appointments and manages them. Location Based Assistance Phone settings that are most frequently used and changed by the user generally are 1. Ringer 2. Wi-Fi 3. Reminder for Task’s To-Do
Bundle includes the functionality to perform the change in these setting automatically without any user input. This is achieved by Bundle from acting as a simple learning agent, where location of the user is learned whenever the user performs a change in the above-mentioned settings. The details steps are as given below: 1. We include two tables, one each for ringer and Wi-Fi mode change. These tables have details to accommodate the location information and a counter to keep track of the number of recurrences. One knowledge base table where we hold the location information and the action performed i. e. ringer or Wi-Fi mode hange. 2. First time a user performs a change in mode of ringer or Wi-Fi at location A.
The location is inserted into the corresponding table of ringer or Wi-Fi. Subsequently if the mode changes at the same location or in a certain range [100 meters]. Of the previous location stored then the counter is incremented by 1. This is the learning process in this module. 3. User is allowed to specify the threshold for the number of recurrences at a certain location. Once this Threshold is reached. The location and the action performed are triggered into Knowledge Base.
4. that he uses the app, and sets his alarm for :00 AM the next morning, and sets his alarm again at 10:30 PM that night for 8:30 AM the morning after, the knowledgebase sets the average sleep time to 10:15 PM and the average waking up time to 8:15 AM. There is obviously a big variance of 15 minutes here, but as the days go by, the alarm agent would get an average of the user’s sleeping and waking up time to a mean value that is suitable to the user and would eventually learn to set the alarm for the user by itself. On every location changes of user, location look-up is performed and if any location matches or is in a range [100 meters]. Bundle triggers the automation of he action corresponding to that location in the Knowledge Base.
3. W. r. t. Reminders for tasks we need to understand the concept of Activity and tasks. Bundle considers the Activity placeholder for related tasks. i. e. Study activity holds the different tasks like assignments, project submissions etc. While work activity would hold tasks, which are work related. The process of automation of reminders based on location is similar to above. The location grab happens when a task is started. An Activity is triggered into Knowledge Base when number of tasks started at one particular location is equal to he threshold given by user. Again as mentioned before at every location Knowledge Base is looked up for a match and at every match the tasks of the corresponding activity should be notified to the user.
Automated Alarm The alarm module of our app not only functions in the same manner as a usual alarm clock does but also acts as a learning agent. By that, we mean the alarm agent is capable of learning when the user would like to wake up every day by observing his usual sleeping and waking up times. It does this by executing the following steps: 1. Initially, the user uses the alarm as he would use a usual alarm on his phone.
That is, he inputs the time he would like to wake up and when that clock reaches that time, it plays a tone to wake the user up. 2. But in these initial days, the alarm agent is building its own knowledgebase. It does this by taking an average of the time that the user sleeps and the time that the user wakes up every day. That is, if the user usually sleeps 10:00 PM on the first day The alarm app of Bundle has two tables, the alarm_db table and the knowledgebase table. The alarm_db table stores the time at which the user sleeps, the time at which he wakes up and the number of hours that he sleeps that day (time for which he sets he alarm minus time at which he sleeps).
The knowledgebase stores the current date, the average sleeping time (calculated by averaging the previous sleeping times stored in the alarm_db), the average waking up time (calculated by averaging the previous waking up times stored in the alarm_db) and the average number of hours that the user sleeps (calculated by averaging the previous number of hours values from the alarm_db) Appointment Manager The appointment manager agent in Bundle acts as a planning agent. The user can use the appointment manager to set his appointments, that is, use it as a normal appointment manager.
The learning agent in our appointment manager is the part where we also include planning in it. This is done as follows: 1. Initially, the user uses the appointment manager as a usual appointment manager, to set his appointments. He can also view his appointments. 2. Suppose the user has set at appointment from 10:00 AM to 11:00 AM on 12-142012 and tries to set another appointment at the same time, the learning agent here calculates the number of hours that the user has set his appointment for and finds the next best possible time that he can set the appointment to. That is, since the appointment given in the example is of 1 our, the agent subtracts an hour from 10. 00 AM and checks if the 9:00 AM to 10:00 AM slot is free, and also adds an hour to 11:00 AM and checks if the 11:00 AM to 12:00 PM slot is free. If they are, the agent asks the user if he would like to make his appointment at either of those two time slots. If they are not, the agent looks for the next best free time slot using the same logic and then requests the user if he would like to make an appointment at that time. That is, if the 11:00 AM to 12:00 PM time slot is not free then the agent checks if the 12:00 PM to 1:00 PM time slot is free and so on. 3.
We have defined only one table for appointment manager which stores date of the appointment, time at which appointment begins, time at which appointment ends. the the the the – Remove information from Knowledge Base if there is a period of inactivity. i. e. if the user is not visiting a location which was part of his routine. Knowledge base should remove it. With the to-do list we could add a feature where it captures the amount of time spent in a particular location doing tasks in an activity. This information could be used to plan the tasks that the user could possibly work on based on his previous work.
Extensibility in alarm agent The alarm module can be extended in two ways: – The learning agent could build a database, which differentiates between weekdays and weekends because people usually sleep late and wake up late on weekends but would have a pretty strict schedule over the weekdays. The database could then adjust the alarm timing by looking at the day of the week. Though Bundle has an ability to learn from the user’s actions and automate certain processes. To call it truly intelligent would not be correct since its still not able to differentiate between locations at which user may co-incidentally visit n number of imes such that n> threshold. Providing the ability for our app to do this kind of distinction would be what we are looking at in future. –
The alarm module could also include an accelerometer, which monitors the movements of the user while he is asleep and judges the phase of sleep he is in according to his movements. That is, it is a known fact that when people wake up when they are in their REM phase, they are the most fresh they can be. The REM phase does not usually occur at the exact same time that the user sets his alarm for. So, if our alarm agent is also able to judge when the user has reached his REM phase round the time that he would usually like to be woken up at, we’re pretty sure the user would love the alarm module of Bundle. Extensibility in Location Based Module Extensibility in appointment manager agent This module can be extended in three ways: – The user is allowed to provide feedback to remove any locations from the knowledge base that he finds may not be a part of his routine. This would make user the critique in the process of learning.
The appointment manager module can be extended in four ways: – The user can be given the option to override the appointment made at a particular time slot with nother appointment of a higher priority. This would make user the critique in the process of learning. Future Work – User information from Social Media can be pulled in so that the location and also the context in which he performs a certain action can be considered. This could be like including the information of the company he has when he goes out to dinner. So that we can model our Knowledge Base in accordance with the context we find. – To further extend the above point, the agent can ask the user to assign every appointment that he makes a certain priority level.
That way, if the user tries to make another appointment with a higher riority level at the same time that he has already made an appointment of a lower priority level then the agent can override the appointment by itself after asking the user if it can do so. – The appointment manager agent can also be extended to include natural language processing. For example, if a 2:00 PM to 4:00 PM appointment that is assigned against a “meeting with boss”, the “boss” in the appointment could give an indication that this appointment must be given the highest priority and must not be overridden. – Another extension to the appointment manager is to integrate it with Facebook. For example, if the ser clicks the “attending” button on an event on Facebook, the appointment manager agent could note that down in the list of appointments of the user. – One more concept that could be brought in is “shared calendars”.
Here different users decide to share their calendars using the app. Then the app would be able to set up meeting among the group of users taking into consideration the schedule of all users in the group. This would involve satisfying different constraints set by the group of users and scheduling best possible time for the meeting. Conclusion Bundle manages to automate various facilities for a ser, and takes the first step of achieving the objective of making an app that learns from the user’s preferences. But we, the makers of Bundle, believe that this is only the first step into the world of “intelligent” app building. With implementation of more complex learning algorithms along with adequate integration with other apps which will allow Bundle to learn more about the user, we believe that this could potentially constitute a majority of the next generation of smartphone apps. References – http://developer. android. com/index. html – http://stackoverflow. com/ – http://www. youtube. com/user/profgustin