Nearly Complete Functionality

At this point in time we have tested the functionality of everything except the android calendar integration. You can schedule tasks, save settings, store scheduled days, and get notifications even if you phone is asleep. Theses comprise the entire core functionality of the program. There are a few things that we still have to do however. The notification screen still needs to trigger on each event and it has to display the information about the task that should be worked on. As well as implement a method of postponing or finishing tasks mid-day or mid-block allowing the user to progress to the next task for them to work on. We hope to be releasing a beta application very soon to test out the core functionality.

– Asher

Calendar Problems

Hello Again! It’s been a while since I last posted but not to worry, some good work has been done. We’ve redone the scheduling code to more closely match Android’s design philosophy of Content, Services, and Activities. The App now uses a Schedule_Event Activity instead of just Java code. This was a bit of a paradigm change for me and it definitely helped me understand the Android system better. The app now schedules tasks successfully but we have some issues with the Calendar.

One problem that I’m having is trying to get the app to write back to the user’s calendar with all the new events that have been scheduled. This feature used to work in Android 4.0 but no longer seems to be working in 4.1. I’m not sure what changed or why but this needs more exploring. The goal would be to create a new calendar on the user’s phone called Zadatak which would house the events that we generate, with titles that match the task. Reading from the Android Calendar is giving me weird errors. Sometimes it likes to read all the events in one calendar and sometimes it reads some events from all calendars. I need to explore the Android.CalendarContract class further to fully understand why these errors are happening.

So that’s what I’ve been working on these past few weeks. I look forward to your comments and suggestions!

-Nick Timakondu

Renewed Enthusiasm

So… Zadatak stopped abruptly at the end of last semester. But we’re back! We plan to have Zadatak in the android marketplace sometime soon. Keep looking for updates.

Schedules of Days

Recently I have added a basic interface for the “today’s tasks” tab. Currently it only displays a list of tasks with a modified on click feature, but it will soon support the ability to postpone tasks and a rudimentary scheduling application based on the round Robbin scheduling pattern. After this is implemented the only feature preventing Zadatak from being a fully functional beta is that when the application is force quit then no future notifications are triggered, I will be looking more into timers to see if there is a way to have a Zadatak activity run every 10, 30, or 60 minutes and notify the user if there is a change in activities.

– Asher

A change of Operating Systems

My phone finally went to Ice Cream Sandwhich (Android 4.0).  It looks sharp and runs extremely smoothly. Scrolling through huge lists actually works as you would expect it to. Awesome, right?

Wrong (well, mostly right, but for the sake of Zadatak, I’ll be dramatic). I knew how drastically different things could look among phones with different resolutions, but I never expected the drastic difference in the appearance of Zadatak between Android OSs.

So here is Zadatak as it was on my phone before the change of operating systems. Notice the rounded edges on the OPAQUE buttons. These are the standard buttons with no change to the background color (any change results in non-gradient and perfectly squared buttons).


Now this is the same code, on the same phone, just running Android 4.0 / ICS. Notice how the title bar actually contains our logo? Looks great. But, the buttons are transparent, and the edges are squared as opposed to rounded. It looks too messy! I’m not sure what to do about the transparency, except to hard code the color for the buttons as #FF—— as that specifies pure opacity, but hard coding the color gives away any chance to regain the nice rounded edges. I think this means I am going to have to create my own buttons in photoshop that satisfy both requirements.

Lesson learned? Test now, test often, and test on every device / operating system you can.


Checklist of Remaining Features

We’re rapidly approaching the release of a beta version. All of the screens have been created, although we still need to finish the design for some of them. The scheduling algorithms has been created, although it is yet to be fully implemented. Alarms have been created, although they are still extremely buggy.

Everything is coming together slowly (despite all of us being caught up with classes, job interviews, and graduate school applications), but there are still some things we haven’t been able to figure out. Making alarms work the way we would expect, filling in lists with data from java, etc. Our to-do list is ever shrinking, and I expect to see our application in the app store around the middle of December.

Now, for a bit of a rant. I’m having lots of issues between git and eclipse, and eclipse and my phone. Unfortunately, when I ‘pull’ eclipse refuses to update, telling me that the files are out of sync. Despite my attempts to refresh, or close eclipse and re-open, or even rebuild the projects, it still refuses to update files. However, I finally learned how to handle eclipse when it’s being finicky, Project –> Clean followed by manually building all the files allows me to run the updated files with no problems. As for my phone and eclipse, I am increasingly running into issues with compatibility. My phone will run fine for the first few times, and then randomly eclipse will decide that my phone is no longer compatible, and want to launch an emulator instead.  If I disconnect my phone and reconnect, it works perfectly again. I’m unsure what to do to prevent this so I don’t have to unplug my phone every 5 iterations…

Rant aside, everything in the project is going well! Hopefully the beta will be out soon, so keep your eyes out!






Integration of the Calendar

Recently I’ve been working on getting the Android calendar to integrate with Zadatak. The operating systems keeps its calendar data in a database and access is provided through the CalendarContract classes. CalendarContract.Events is the table that we’re using to get all the user’s event. The algorithm works by finding the day with the most free time between now and the task’s due date. In my original testing of the algorithm I was doing that by simply iterating over every day between now and the due date. However now that we have a database of events instead of them being stored in memory, the number of times you access the database becomes a consideration. A solution I am currently in the midst of implementing is polling the database once a day and loading the next month into memory as a snapshot. This way both memory and database calls are taken into consideration. The snapshot is taken once a day and then is adjusted as tasks are scheduled into certain days. Next week I’ll be working on scheduling tasks and placing them back into the android calendar.


Wakening of Alarms

We have begun work on the alarm portion of Zadatak, this is the system in which the phone reminds you of the tasks that you have to accomplish at the moment that you should begin them. We still need to do a little more research into how to do them completely correctly, however for now the PendingIntent class seems to work under all scenarios except for a force close. A new activity needs to also be made that will be called as the alarm’s interface to allow the user to turn off the alarm and either start the task or postpone it until another day. We also have a version of our logo that is not a sketch on a post-it note!

Zadatak Logo

– Asher

Bases of Data

Zadatak now has the ability to save! Behind the scenes Zadatak uses the Android built in SQLite database to store all of the tasks you have to do. Soon there will be a way to delete and edit them in the database, but for now all you can do is add them and view them. Though there is still quite a bit of basic android functionality to research we are progressing further and further each week to bring you the best user scheduler possible. In addition to the ability to modify and delete tasks I would also like to see the ability to have the phone remind you via the same style of interface that the alarm clock application uses as well as implement an interface for viewing the the different tasks that are assigned to you on a day by day basis.

– Asher

The Challenge of Design

After lots and lots of struggling, some real, usable interfaces exist for Zadatak! Who would have thought it would have been a such a struggle after practicing with fake buttons. But usable code with real restrictions is another ball park. The new code supports page switches (easier than I thought it would be) and a nice background (much harder than I thought it would be!) . Transparency and scrolling were also new features for myself.

As far as the interface design goes, many challenges still exist and need to be tackled. Some I know how to handle (checking the user’s data for consistancy) and some will require some research before writing any actual code (how to grab our list of tasks from a SQL database and output it to the user). The biggest and most important challenge that exists for Zadatak is sending out alarms when working on a task is required. This is critical for the functionality of our app, even when the application isn’t running. I’m not sure how to tackle this one yet, but thank goodness for google!

Tagged , , ,