GUI Differentiation on Android Devices


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

GUI Differentiation on Android Devices

  1. 1. (FINAL 12/14/2009) GUI Differentiation on Android Devices By Ville-Veikko Helppi, Mentor Graphics Due to the completeness of the Android platform, which goes far beyond a generic Linux distribution, more embedded device manufacturers are quickly adopting Android across a wide range of vertical markets. However, standardizing on a single technology base does have its drawbacks, one of which is the risk that all products end up looking alike and offering much of the same functionality. There’s no question that in the current climate of “soon-to-be-announced” Android devices, the graphical user interface (GUI) plays an instrumental role. The most obvious and cost-efficient way to differentiate any Android device is to provide a rich user experience through the device’s GUI. Unfortunately, differentiating a GUI usually requires significant engineering investment and it is not necessarily guaranteed that the results will be accepted by a diverse and ever-more demanding user base. This article examines a compelling GUI technology that allows for the rapid creation and radical customization of a GUI in any Android-based device. Android Architecture and GUI Android is still a relatively new platform architecture loaded with many useful features, but it also comes with higher expectations. According to various research reports, the Android development platform will gain recognizable market share in the handset industry and eventually, it will have a footprint in all major vertical markets. However, Android architecture may not be as easily customizable as the open source approach may lead people to believe. Based on the open Linux Kernel and services associated to the GNU-based utility packages (ported to processor-specific architectures), the lowest level of software must stay untouched, and if changes are made, they will need to be distributed as source code. At the Libraries level, where a number of C and C++ libraries are located, there are a number of available licenses such as GPL, LGPL, BSD, and so on. It may, therefore, be possible to make changes to libraries without distributing the changes: however, any device that is customized at this level might conflict with Android‟s non-fragmentation rules. Looking at the GUI, the Android development platform affords basic GUI customizations. These types of customizations include changes to boot animations, personalized wallpapers and/or icons. Swappable themes are introduced in Android, but the software developer has very little chance to create or radically customize these themes without some serious software experience. The ability to make more compelling changes, such as creating a new menu or completely changing the look and feel of a menu system, is not within the scope of the Android SDK today. Instead, these customizations
  2. 2. need to be done at a deep code level and usually require major engineering investment. Customizing the Android GUI without Touching Code In general, changes to software are expensive and risky, even on Android, as the developer not only has to describe the GUI first in the XML level, but then write Java code for the behavior of each GUI element. To some extent, Android‟s standardized GUI framework and the use of graphical components or widgets (buttons, check and list boxes, keys, indicators, progress bars, etc.) has helped, but the GUI development always requires code to be written. An alternative approach is to use an intelligent, customizable GUI technology that enables designer resources (software engineers, GUI designers, and content providers) to rapidly create, customize, and test GUI logic without having to modify the actual Android software. An intelligent GUI technology would also allow the design team to package their designs into templates and themes, which can be rapidly deployed on the Android platform – regardless of whether it‟s running on the physical target device or running on the Qemu emulator (which is packaged with the Android SDK). This makes it relatively easy to create market- or product-specific variants and often without much engineering effort It is therefore crucial to employ a GUI tool that can easily aid developers in creating user interfaces and maintaining themes or templates. This tool would also have the capability to modify and enhance graphical elements quickly (such as bitmaps, icons, menu items, and the other UI components) – all while the code remains untouched. Any user interface development tool employed should provide software engineers or developers with an easy-to-use method to create UI flow – whether through menus or icon-based input methods. It should be possible to structure menus around the chosen design paradigm (for example, carousel, widget screens, etc.) and embedded widgets that can then be updated with live data feeds. Any tool should also make it easy to use standard GUI constructs like “yes/no” prompts, multiple-choice settings, and so on. Applying this level of customization to a home screen allows the OEM to develop a highly differentiated offering. Enabling “Expertise Alignment” The successful implementation of the GUI can be measured by several different form factors such as performance, intuitiveness, general usability, and memorability of certain sequences. Because of this, OEMs/ODMs will hire a variety of resources to focus on each of these GUI aspects. It is not uncommon to employ usability engineers, GUI designers, interaction designers, integration engineers, and software and hardware engineers to guarantee a successful GUI implementation. Therefore, the separation between the GUI designer and software engineer is tantamount to a compelling GUI that helps distinguish one device from
  3. 3. another (Figure 1). The presentation aspects of the GUI (what the GUI looks like and how it responds) are within the role of the GUI designer. And the functional aspects (what features the device affords access to) fall under the sole responsibility of the software engineer. In this way, an Android device manufacturer is able to align each respective expertise so that software engineers can focus all of their effort (and talent) on software development (no need to develop software for GUI on Android) and GUI designer can take care of the providing great user experiences with GUIs. Figure 1: Drawing a key distinction between the GUI designer and software engineer is the first step to creating a distinctive graphical user interface. Designing the GUI development independently of the software is not necessarily a new concept. Today, developers can find a variety of tools that can be used for this purpose. The problem lies in the fact that often a concept (the presentation) is given to engineers who say it is too demanding, or too complex to build (code), given their limited resources. To meet the deadline, compromises are made which ultimately dilute the original vision of the GUI, and as a result of these compromises, the end-product falls dreadfully short of its true potential. Separating application content and functionality from presentation is best managed using data providers which present content to the device‟s user interface. Productivity is increased as software engineers focus on developing the functionality and data providers, while UI designers remain free to develop the best possible user experience. Thus, any intelligent GUI technology employed should provide a clean “GUI abstraction” model for the Android GUI. This separation is critical in the context of providing the best possible UI experience and best exploiting the device‟s silicon (e.g. OpenGL/ES accelerated 3D). An Intelligent GUI Technology for Android
  4. 4. An intelligent GUI technology for Android, known as Inflexion™ UI solutions from Mentor Graphics is now available for Android-based devices. Inflexion UI solves the problem of similar look-and-feel Android devices by enabling rapid customization of the UI. It delivers a distinctive look and feel to any Android product – without requiring the developer to understand low-level graphics APIs, or even modifying applications at the code level. Figure 2: Mentor’s Inflexion UI within the Android software stack. This new type of Android UI technology enables design teams to create stunning new application launchers and “home screens” for Android by using a visual drag and drop method. Developers do not have to write or modify a single line of code to achieve this. Rich visuals (including 3D animation and lighting) can be employed within minutes. The standard Inflexion UI Engine is optimized to use Android‟s built-in 3D OpenGL/ES API, which can be software or hardware accelerated. This “engine” sits alongside other system libraries (Figure 2) and interfaces to the OpenGL/ES library for 3D rendering. On platforms that include a 3D accelerator, Inflexion will be able to take advantage of that accelerator with no additional engineering effort. If there is no supported accelerator, 3D effects will still be possible using software only. Moving up to the Application Framework, Inflexion provides a lightweight Java framework that exposes the functionality of the Inflexion Engine so that it can be used by Java applications. At the top level, Inflexion comes with a „shell application‟ to replace the standard Android home screen and menuing system. This
  5. 5. replacement enables the rapid and radical reskinning of the main screens without affecting any of the other applications such as those downloaded from the Google‟s application store “Android Market.” Conclusion By separating an application‟s visual and interactive characteristics from the underlying functionality, Inflexion UI enables engineering and design tasks to be carried out independently. Application content is managed by Inflexion software modules that serve as data providers to the device‟s user interface. Productivity is increased as software engineers can focus on developing the functionality and data engines the application requires, while UI designers remain free to develop the best possible user experience. In this way, Inflexion maintains a clear separation between presentation and content. This proven concept enables developers to create completely new interface designs without any programming or scripting because it automates many of the key interactive behaviors such as hierarchical browsing, master/detail views, and scrolling which are common to a wide range of UIs. With the assistance of this type of GUI technology, it will be easy for Android device makers to master a compelling, distinctive, and easy-to-use GUI which is key to the successful introduction and life of an Android-enabled device. Figure 3: Dynamic UI creation is possible with Inflexion UI.