An Action Bar is a bar at the top of the screen which is used across the application to identify the application brand and to support navigation. As Action Bar is not available for pre-honeycomb Android devices, we decided to make use of the ActionBarSherlock library, an open-sourced library designed to facilitate the implementation of Action Bar natively across all versions of Android devices using a single API. This library also provides additional features such as Fragments which is currently not present in the standard ActionBar mode.
To integrate with the Sherlock Action Bar used as a header bar, fragments are used to allow multiple interfaces within a single activity. This allows a better manipulation of functions when users navigate through the application. For example, the navigation between a web view and a native view with differing interface will only require two different fragments, instead of creating a new activity. In addition, due to the flexibility of fragments, each of them can be recycled and used in other activities within the application, reducing the need for repeated codes.
3. Image Loading
To speed up the display of pages and improve user experience, we have made use of “lazy loading” to enable the display of native pages (template) first while images are downloaded and displayed on the pages as and when they are ready. We have been able to do so with the use of the “Asynchronous” feature available in Android development.
4. URL Tracking
The android application that we are building for Qiito is a mixture of Qiito’s current mobile web and pure native pages. Some of the native pages include travelogue listing, travelogues and places. To enable switching between mobile web and native pages, there is a need to monitor the changes in URL. Should a following URL point to a webpage that requires native display, example travelogue listing, travelogues or places, there will be a need to call the native codes for display. Else, the mobile web should be called instead.
5. Different phone models with different OS versions
Since the Android software is offered on many different phone models, our team needs to cater for different image sizes to these phones. This is because phones tend to vary in size, features and user experience. Thus, this further complicates the native design process as additional time is required in resizing images and there is difficulty in ensuring consistency of the application for the rest of the other models. Additional testing is required as different sizes of phone models are tested to ensure that the images are displayed correctly.
Furthermore, older Android OS, which may not be able to support the newer OS, will not have the luxury to enjoy certain functionalities. Thus, extra time is needed to search for the best implementations without reducing usability of the application.
6. Offline Map Display (Pending)
Whilst overseas, users may have difficulty obtaining data connectivity to have access to the full functionalities of Google Maps. With the implementation of OSMDroid (Open Street Map Droid), the application will cache a specific map area pertaining to the user’s itinerary. This allows users to view the touring area on the offline map, complete with zooming features and search function of that particular area. Being an open-sourced package increases the difficulty of implementation, due to lack of proper documentation to explore customized functions. There are also certain restriction of its usage due to it being free, thus algorithms for download are required to be stricter.
7. QBeam – Augmented Reality View (Pending)
Even as locals, users may be surprised to discover unknown places of interest around their town. This is where QBeam comes in to help with the discovery, by displaying places of interests surrounding the user’s current location. This will be viewed through the lens of the phone camera, complete with the direction and distance away from the user.
The team will be looking into exploring the Vuforia and Wikitude SDKs for Android in later iterations to deploy the Augmented Reality View function.