This is the last post as a part of the Intel Ultimate Challenger series. By the coming Friday, we will have submitted the build to the judges. This post is an analysis of the changes and the features of BioIQ.
Before we get to the analysis, here is a status update –
- The Windows 8 version is ready and we will be submitting it to the judges and theWin 8 store later this week.
- The AppUp version is also ready. We will go through the store certification process before we get it up on the AppUp store.
The Final Build

The video above shows some of the BioIQ screens, with callouts highlighting some of the features that we implemented for the Ultimate Coder Challenge and the posts related to those topics.
Since this challenge was on a short 6 week cycle, we tried to stay true to our top priority of getting the app to be available on the Ultrabook so that we can reach more teachers and students. To our surprise, we didn’t have to compromise much in terms of how we would have liked to implement the app. The only thing that we want to revisit is, using SQLite instead of Local Storage, since we prefer a DB based data implementation. We are happy with what we got to.
Just because we did not compromise on the implementation, it doesn’t mean that we have exploited everything that the Ultrabook has to offer. BioIQ primarily leverages the touch capability of the device. As a hardware device, the Ultrabook has a powerful set of sensor features like Compass, Accelerometer, etc. We studied these and even seriously considered bolt a few of them to the app, but decided to not force fit them into BioIQ. We wanted to keep the natural feel of the app. I am sure we will use those capabilities in future app(s).
One of the last features that we implemented was the live tile feature. It is rather neat; it refreshes the BioIQ icon on the device home screen with the different game levels that are available. This should help remind the users to pick up the game and finish the levels. We would like to sign-off with some code. The code snippet below talks to the live tile implementation
function sendTileNotification() {
var currentTime = new Date();
var startTime = new Date(currentTime.getTime() + 500);
var notifications = Windows.UI.Notifications;
var template = notifications.TileTemplateType.tileWideImage;
//First Title
var tileXml = (notifications.TileUpdateManager.getTemplateContent(template));;
var tileImageAttributes = tileXml.getElementsByTagName("image");
tileImageAttributes[0].setAttribute("src", "ms-appx:///images/tile_images/plantTile.png");
tileImageAttributes[0].setAttribute("alt", "plant cell");
// Second Title
var tileXml1 = notifications.TileUpdateManager.getTemplateContent(template);
var tileImageAttributes1 = tileXml1.getElementsByTagName("image");
tileImageAttributes1[0].setAttribute("src", "ms-appx:///images/tile_images/heartTile.png");
tileImageAttributes1[0].setAttribute("alt", "human heart");
// Third Title
var tileXml2 = notifications.TileUpdateManager.getTemplateContent(template);
var tileImageAttributes2 = tileXml2.getElementsByTagName("image");
tileImageAttributes2[0].setAttribute("src", "ms-appx:///images/tile_images/frogTile.png");
tileImageAttributes2[0].setAttribute("alt", "Frog");
// Fourth Title
var tileXml3 = notifications.TileUpdateManager.getTemplateContent(template);
var tileImageAttributes3 = tileXml3.getElementsByTagName("image");
tileImageAttributes3[0].setAttribute("src", "ms-appx:///images/tile_images/animalTile.png");
tileImageAttributes3[0].setAttribute("alt", "animalcell");
// 5th Title
var tileXml4 = notifications.TileUpdateManager.getTemplateContent(template);
var tileImageAttributes4 = tileXml4.getElementsByTagName("image");
tileImageAttributes4[0].setAttribute("src", "ms-appx:///images/tile_images/kidneyTile.png");
tileImageAttributes4[0].setAttribute("alt", "Human Kidney");
//Adding the name to Live tile
var binding = tileXml.getElementsByTagName("binding");
binding[0].setAttribute("branding", "name");
var binding = tileXml1.getElementsByTagName("binding");
binding[0].setAttribute("branding", "name");
var binding = tileXml2.getElementsByTagName("binding");
binding[0].setAttribute("branding", "name");
var binding = tileXml3.getElementsByTagName("binding");
binding[0].setAttribute("branding", "name");
var binding = tileXml4.getElementsByTagName("binding");
binding[0].setAttribute("branding", "name");
var scheduledTile = new Windows.UI.Notifications.ScheduledTileNotification(tileXml, startTime);
scheduledTile.tag = "plantc_tile";
var scheduledTile1 = new Windows.UI.Notifications.ScheduledTileNotification(tileXml1, startTime);
scheduledTile1.tag = "heart_tile";
var scheduledTile2 = new Windows.UI.Notifications.ScheduledTileNotification(tileXml2, startTime);
scheduledTile2.tag = "frog_tile";
var scheduledTile3 = new Windows.UI.Notifications.ScheduledTileNotification(tileXml3, startTime);
scheduledTile3.tag = "animalc_tile";
var scheduledTile4 = new Windows.UI.Notifications.ScheduledTileNotification(tileXml4, startTime);
scheduledTile4.tag = "kidney_tile";
var tileUpdater = Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication();
tileUpdater.addToSchedule(scheduledTile);
tileUpdater.addToSchedule(scheduledTile1);
tileUpdater.addToSchedule(scheduledTile2);
tileUpdater.addToSchedule(scheduledTile3);
tileUpdater.addToSchedule(scheduledTile4);
tileUpdater.getScheduledTileNotifications();
tileUpdater.enableNotificationQueue(true);
}
app.onready = function (args) {
sendTileNotification();
};
Well, that’s it for now, we thoroughly enjoyed the journey. So Thank You Intel AppUp for giving us the opportunity. Wish us luck :) . Over to the judges.

Add new comment