Chapter - 2 FOR YEAR 4
Chapter - 2 FOR YEAR 4
2.1. Introduction
This unit introduces learner to the subject of development of mobile applications. With the
increased usage of mobile devices across the world, more and more applications are being
targeted at them. If an application that is developed for computers can also run on the mobile
devices, then the entire paradigm of application usage changes as it enables the user to run
application from wherever he is. There were different standards on which the mobile networks
are based. One of the popular standards is GSM. In this unit, we introduce the GSM
architecture. There were a number of environments under which mobile applications can be
developed. One of the popular environments is Java. We introduce J2ME (Java 2 Micro
Edition) in this unit in conjunction with wireless application development with it. Any
application should be tested before being put to full-fledged use. In this unit, Java Device Test
Suite is introduced with the help of which wireless applications can be tested.
Learn about the factors that influence your mobile app development process by taking note of
the items on this list.
1. Distribution Channel
As a developer, you must first identify which platform best supports your grand idea. Though
Google Play Store and Apple App Store serve the same function, they have different guidelines.
You can view the description, icon, logo, screenshots or image gallery, and a snippet or a trailer
of the app on both platforms. However, there are few elements that differentiate one from the
other.
For instance, businesses generate more income when they first release their app on the App
Store than in Google Play Store. In terms of description, Google Play Store gets more taps
because of their read more button is in a prominent position. You can find the description
hidden above the image gallery and screenshots. The App Store, on the other hand, optimizes
their description for iPhone screens. You can read the description directly without needing to
tap on a button or scroll down. In terms of screenshots or image gallery, Apple App Store has
an advantage because the Play Store places them below the fold. These factors play a part in
your app’s user engagement. The setup of the platforms can influence how people respond to
your app. Moreover, the platforms are also essential when thinking of other factors such as
monetization, security, and the availability of different types of apps.
2. Audience Research
For your idea to become successful, you must first conduct audience research. Knowing your
audience involves understanding the industry and getting in-depth knowledge about the people
that might take an interest in your apps. It is important because users tend to be diverse. You
must track the demographics of the users of your app. That way, you can identify the age,
gender, relevant businesses, and potential customers you can target. If you want your app to
solve a problem, you should not base your decisions on assumptions. Guessing users’ tastes
and preferences lead to poorly executed app development. You can make an approximation of
the gender that is likely to use your app, but it’s best if you conduct surveys, look into online
communities, and use tools to get to know your market. Creating different personas also helps
you visualize the needs of different users. It helps you identify which parts of the project you
must prioritize and which features to include in your app.
3. App Idea
Apps don’t come out of thin air. They start as brilliant ideas. Unfortunately, not all ideas
become great and successful once you turn them into an app. Remember that working on an
app development project requires money, effort, and time. Therefore, you must first examine
your idea before you can begin working on it. You must first check if your design is unique.
With thousands of apps on both platforms, you are sure to find one that already has the concept
you have in mind. Besides being unique, your app idea must satisfy a need. There’s no use
wasting your resources if no one needs and wants your concept. Of course, you must also find
out if your idea has a lot of competition. It may be difficult to break through in a saturated
market. Most of all, you must be able to differentiate your idea from the what’s already
available on the platforms. It must also be able to resolve the weaknesses of the existing
competitive apps.
A Nielsen survey on consumer preference for mobile apps vs. mobile sites found that Indian
consumers prefer apps that personalize their experience. You can improve your app idea
when you research your audience as well as your competition. It helps strengthen your app idea
and push you to exhaust your brain juices to generate innovative solutions.
To properly execute your app idea, you must come with a plan. In this case, you must have a
solid app development strategy. A cohesive strategy answers all the questions you have towards
the app development process. It clarifies how much of the design work you will undertake for
the app development. It covers your timeframe for working in the project. It also factors in the
technology you will use to develop your app idea. Part of your app development strategy must
include the strengths and weaknesses of each mobile device. You need all of these to step up
your game and help you execute an app development plan. If you over or underestimate in any
of the factors, your app can end up becoming a failure.
5. UI/UX
User interface (UI) and user experience (UX) are part of what keeps users hooked on an app.
According to the founder and CEO of Apps Discover Technologies, Ashish
Bahukhandi shared that successful apps are those that provide a hassle-free experience aside
from serving its purpose. Users prefer apps that are “handier” compared to those that require
too much effort to operate. Navigation and usability aren’t the only ones that matter to the
users. They are also receptive to several UI/UX factors. For instance, an app with low-res
images, slow loading times, broken sign up/ login functionality and app navigation, and poor
connectivity to social profiles are all signs of poor UI/UX. Unnecessary micro-interactions,
lags or unresponsive clickable elements, inappropriate spaces, and mismatch fonts types and
size are some of the factors you should watch out for when developing your app.
6. Testing
Developing and designing your mobile app idea is only half of the job in your mobile app
development journey. You must also run a few tests to ensure your design runs smoothly. It’s
a way to secure that your mobile app has no exceptions and bugs. If you launch your app
without testing it, you can run into problems that can spark fires that are difficult to put out.
There are seven ways to test your app and check if it doesn’t have bugs. You should see if each
of the app’s function. Each time you add a function, you must see if the existing features are
still working correctly. You must also look into the app’s integrations and usability. It’s also
important to find out if your app is compatible with different platforms and devices. Most of
all, you should test if the app functions properly at the user’s end before going live. Avinash
Tiwari, Co-founder and Director of pCloudy, states that developers must know the app
development ecosystem. You must stay informed of the latest updates in OS versions as well
as market trends. These practices help you anticipate problems with latest released apps. You
should always check release notes to identify potential issues that can encourage users to
abandon your app.
7. Security
Security must be part of your app development process. Users should not have to think of the
threat of malware when they use your app. Thus, you should leverage the security features of
the device’s OS. You can also keep the user’s information safe through encryption. You should
also restrict your app’s permissions to a minimum. Always prioritize security to ensure your
app isn’t vulnerable to external threats.
8. Monitoring
You still have work to do after you publish your mobile app. You must be hands-on with fixes,
performance improvements, changes, and integrating new features. As a developer, you must
track crashes and look at technical information to help you resolve the problems users
encounter. You can also check into analytics as well as recommendations and reviews by users
to see how well the market responds to your app. The information you get from these platforms
is what you need to identify trouble spots and make room for improvement.
Lifecycle management – Once an app is deployed, developers must test, host, deploy,
maintain and analyze its usage throughout its lifecycle. As a result, it’s important for developers
to consider the long-term capabilities and long-term costs of tools.
Delivery – Apps aren’t done when they go into production. They must be dependable. They
must scale. They will need updating based on evolving requirements and end user
feedback. Developers need to make sure the tool they select will allow for easy upgrades,
updates, availability, scalability and performance.
The main considerations for mobile app design are listed below:
· App Architecture
· Target users
· Testing
Device testing
Performance testing
Various testing scenarios The main challenges in mobile app strategy are given below:
· Diversity of devices and heterogeneous technologies: There are various mobile platforms
and devices. The app should provide optimal experience in all the scenarios.
· Security: Mobile app should ensure data security during transmission and during storage.
· User experience: Mobile app should provide optimal user experience leveraging the device
capabilities to provide highest engagement possible.
· Network: Mobile app should be designed to work in regions with network, latency and
bandwidth challenges.
The rapid availability of information and the possibility of rapid processing of data outside of
operational areas and office environments are important competitive factors for a growing
number of companies today.
Mobile software solutions for laptops, tablet computers and smartphones with touch or
keyboard operation represent an important technical basis for this.
The apps and applications developed by us are characterized by their simple user guidance and
intuitive operation. The technical possibilities of the available mobile devices are always taken
into account and optimally used. This can be reflected both in the type of operation (touch or
keyboard) and in the type of data processing (online or offline).
platforms
In the field of mobile applications, we primarily develop apps and programs for the following
platforms:
iOS
Android
Apps are a modern necessity and I seriously think most of us would be lost without them (Even
literally lost without Google Maps!). And since apps are so popular, it stands to reason that it
is equally popular (and profitable!) to develop them. Apps are an excellent way to create a
brand and build a loyal fan base (and also have fun while doing so!). That is the reason this
article deals with the Top Android Development Frameworks that are currently most
popular and so important to learn in 2019.
1. Ionic
Ionic Framework is a very popular open-source mobile framework that was released in 2013.
It’s also free and MIT open source (so it will most probably remain free!). According to its
website, Ionic can be used to “Build and ship beautiful cross-platform hybrid and
Progressive Web Apps with ease.” And that’s not all! Ionic is also a cross-platform
framework, which means that you can create apps and then customize them for Android, iOS,
Windows, etc. Also, if you have a problem with your documentation, fear not! Ionic has
documentation support with real-life examples.
2. Xamarin
Xamarin is an extremely popular Mobile framework (With over 1.4 million developers using
it!) that was acquired by Microsoft in 2016 and is currently a Microsoft subsidiary. According
to Xamarin, “Apps built using Xamarin look and feel native because they are.” So
basically, Xamarin can be used to write native Android, iOS and Windows apps with a C#
codebase (Xamarin is great for C# developers!) that can also be shared across multiple
platforms. Xamarin is also popular (and only!) IDE with Microsoft Visual Studio and can be
used to create native apps with AutoComplete and IntelliSense.
3. Adobe PhoneGap
4. React Native
React Native is an open-source mobile framework that was created by Facebook and released
in 2015. According to Mark Zuckerberg, “The biggest mistake we made as a company was
betting too much on HTML as opposed to native” and that lead to the creation of React
Native. It provides support for various IDEs and mobile app development tools and that is one
of the main reasons it is used by many (popular!) companies such as Instagram, Tesla, Walmart,
Baidu, etc. to develop their mobile apps.
5. Flutter
6. Titanium SDK
Titanium SDK is an open-source framework that was created by Appcelerator, Inc. and
released in 2018. (It’s quite new!) It is basically a development environment that can be used
to create native apps across various operating systems like iOS, Android, BlackBerry, etc.
Titanium is quite popular and has been used in around 70, 000+ Mobile Applications till now.
And that’s not all! According to the Titanium website “The Titanium environment helps
organizations get to market 60% faster and achieve a significant competitive advantage.”
7. JQuery Mobile
jQuery Mobile is a Touch-Optimized Web Framework that was developed by the jQuery team
and released in 2010. It is based on HTML5 and can be used to create responsive web sites and
apps that can be accessed using multiple devices such as smartphones, tablets, desktops, etc.
According to the jQuery team, this takes the “write less, do more” mantra to the next level!!!
In addition to that, jQuery also provides support for different operating systems such as
Windows, Firefox, Mac OS, Blackberry, Kindle, etc.(So make your choice!)
8. Corona SDK
Corona Software Development Kit was developed by Corona Labs Inc. and released in 2009.
It is a great platform for creating apps for mobile as well as desktop systems. Corona Labs
states that “You can create your project once and publish it to multiple types of devices,
including Apple iPhone and iPad, Android phones and tablets, Windows Desktop,
etc.” Also, Corona is incredibly fast as it is supported by Lua, an open-source scripting
language that is lightweight, fast, and powerful as well (Triple whammy!)
9. Native Script
Native Script is an open-source framework for creating native (duh!) mobile apps that were
developed by Progress and initially released in 2014. It was developed using JavaScript and
TypeScript (which is basically a superset of JavaScript). Native Script also supports Angular
and Vue.js frameworks and these can be used to share existing web-based code. It also doesn’t
hurt that Native Script is 100% free and open source!
Mobile Angular UI is a mobile UI framework (As is clear from the name!) that allows the
creation of HTML5 hybrid mobile apps using a combination of Angular JS and Bootstrap.
According to the Mobile Angular UI website, “If you know Angular JS and Twitter
Bootstrap you already know Mobile Angular UI!!!” In essence, Mobile Angular UI
provides some components that are not available in Bootstrap 3 such as switches, scrollable
areas, sidebars, overlays, etc. and also provides Angular.js directives to provide a better mobile
experience.
The Generic User Interface (Generic UI, GUI) framework allows you to create UI screens
using Java and XML. XML is optional but it provides a declarative approach to the screen
layout and reduces the amount of code which is required for building the user interface.
The application screens consist of the following parts:
Descriptors – XML files for declarative definition of the screen layout and data components.
Controllers – Java classes for handling events generated by the screen and its UI controls and
for programmatic manipulation with the screen components.
The code of application screens interacts with visual component interfaces (VCL Interfaces).
These interfaces are implemented using the Vaadin framework components.
The main part of the screen is a Java or Groovy class called controller. Layout of the screen is
usually defined in an XML file called descriptor.
In order to show a screen, the framework creates a new instance of the Window visual
component, connects the window with the screen controller and loads the screen layout
components as child components of the window. After that, the screen’s window is added to
the main application window.
A fragment is another UI building block which can be used as part of screens and other
fragments. It is very similar to screen internally, but has a specific lifecycle and
the Fragment visual component instead of Window at the root of the components tree.
Fragments also have controllers and XML descriptors.
A screen controller is a Java or Groovy class that contains the screen initialization and event
handling logic. Normally, the controller is linked to an XML descriptor which defines the
screen layout and data containers, but it can also create all visual and non-visual components
programmatically.
All screen controllers implement the Frame Owner marker interface. The name of this
interface means that it has a reference to a frame, which is a visual component representing
the screen when it is shown in the main application window. There are two types of frames:
Window – a standalone window that can be displayed inside the main application window in
a tab or as a modal dialog.
Fragment – a lightweight component that can be added to windows or other fragments.
Controllers are also divided into two distinct categories according to the frames they use:
Aside from investing in mobile applications, many ecommerce stores see the increase of
purchases coming from mobile. If an online store doesn’t optimize checkout experience,
usability or their mobile app design, they may lose market share or even render themselves
obsolete.
2.6. Android User
Android is the most popular operating system in the world, with over 2.5 billion active users
spanning over 190 countries. Created by Andy Rubin as the open-source alternative to iPhone
and Palm OS, Android quickly became the favorite operating system for most mobile
manufacturers in the early 2010s.
With titans of the industry such as Samsung, LG, Motorola and HTC all launching phones
running Android, it quickly became the most popular mobile OS, hitting over one billion active
users by 2014.
Android has added more users every year since inception. Even though in more mature markets
user growth has stagnated, Android has continued to grow at a remarkable rate through its
popularity in developing countries. In Brazil, India, Indonesia, Turkey and Vietnam, Android
has over 85 percent market share.
User interface (UI) design is the process designers use to build interfaces in software or
computerized devices, focusing on looks or style. Designers aim to create interfaces which
users find easy to use and pleasurable. UI design refers to graphical user interfaces and other
forms—e.g., voice-controlled interfaces.
User interfaces are the access points where users interact with designs. They come in three
formats:
Voice-controlled interfaces (VUIs)—Users interact with these through their voices. Most
smart assistants—e.g., Siri on iPhone and Alexa on Amazon devices—are VUIs.
Gesture-based interfaces—Users engage with 3D design spaces through bodily motions: e.g.,
in virtual reality (VR) games.
Users judge designs quickly and care about usability and likeability. They don’t care about
your design, but about getting their tasks done easily and with minimum effort. Your design
should therefore be “invisible”: Users shouldn’t focus on it but on completing tasks: e.g.,
ordering pizza on Domino’s Zero Click app.
So, understand your users’ contexts and task flows (which you can find from, e.g., customer
journey maps), to fine-tune the best, most intuitive UIs that deliver seamless experiences. UIs
should also be enjoyable (or at least satisfying and frustration-free).
When your design predicts users’ needs, they can enjoy more personalized and immersive
experiences. Delight them, and they’ll keep returning. Where appropriate, elements of
gamification can make your design more fun.
Voice UIs employ speech recognition and natural language understanding technologies to
transform user speech into text and meaning. Speech is a tool for enhancing traditional touch
user interfaces into multimodal voice user interfaces.
Voice user interfaces are highly intuitive as they use the most natural way for us to
communicate: speech. They are significantly faster than typing to input information but
significantly slower than reading or seeing to output information from the computer system
back to the user.
The first voice user interfaces were IVR, Interactive Voice Response, systems that enabled
users to interact with a phone system by using speech. Typically, IVRs recognized only
digits, but nonetheless they were early voice user interfaces.
The first applications of voice UIs were interactive voice response (IVR) systems that came
into existence already back in the 80s. These were systems that understood simple commands
through a telephone call and were used to improve efficiency in call centers. Last time I
encountered one was a customer support call center for home appliances where a synthesized
voice asked me to say the name of the manufacturer of the device I needed help with. Once it
recognized correctly my utterance “Siemens”, it directed me to a correct person.
Current voice user interfaces can be a lot smarter and can understand complex sentences and
even combinations of them. For example, Google Assistant is perfectly fine with something
like “Turn off the living room light and turn on the kitchen light”.
However, as these smart speakers always wait until the end of the user utterance and only
then process the information and act accordingly, they will fail if the user hesitates with their
speech or says something wrong. For instance, you can try something like “Turn off the
kitchen light, turn on the living room TV, turn on the bedroom and terrace lights and turn off
the radio in the kitchen.”
Consistency of the design layout: Different sections of the app must be coherent in the design,
and there must be a consistent flow of the layout throughout the app. Apps
like Evernote, Netflix, and Dropbox deliver great consistency in their design layout. This also
applies to the common features of the apps built for the same OS.
Unambiguous Interactive Elements: The design elements that are interactive in nature must
be clearly depicted. Ambiguity should be avoided to make sure that the users are going to
access such elements when required by them. Options hidden in menus may sometime be
forgotten. Several surveys and studies have revealed that conspicuous menu options are not
good for mobile apps. At least, the key navigation elements must be visible.
Single Trial Learning Experience: The term ‘Intuitive’ is often used to describe mobile apps
when suggesting that they are very user-friendly. Actually, this word means that users
understand the flow of the app without remembering the steps. Options should be placed in a
manner where users can infer what the next step would be.
Anticipate and Answer Users’ Queries: When a user’s tap a button, they want to know
whether the process has started and how long will it take. As technology abstracts these actions,
the users are usually kept in the dark while the process is going on. Use Toast in Android and
notifications in iOS so users will be notified when a process has completed. The Gmail app is
a good example of such a design, as it displays messages like “saved in draft, message sent,
etc.” to inform the users about the completion of the task.
Layered User Experience: The UX should be layered. Layered here refers that all the features
of an app must not be exposed at once. It should surface out as the users delve deeper into the
app and discover new things. This would help in keeping the users’ interest intact for a longer
time. WhatsApp offers a good layered experience as users explore new features as they go
deeper into the app.
1. Uniqueness
There is no point in creating something that already exists, and it is the same with mobile app
design. Your app should definitely have a number of advantages, but presenting them the right
way is another story. Take Clear, for example, it is a to-do list, but its interface fundamentally
differs from all other to-do lists. There are no buttons and there’s no navigation menu, just
tasks. Users can only navigate and interact with the app with the help of gestures, which was
their unique feature. Uniqueness is one of the most important mobile design principles and that
is why it stays on the first place in our list.
2. Structure
User interfaces for mobile applications should be organized in such a way that users will find
it helpful and meaningful. Make sure similar items are grouped together and users won’t spend
tons of time trying to find what they need. You also need to keep in mind that the number of
features and sections should not overwhelm the user, so be ready to sacrifice some less relevant
features.
3. Contexts
Some apps can be used only on the go, others can be used in a relaxed atmosphere, and some
apps can be used in both situations. Context seriously affects mobile user interface design, such
as a bigger font, highlighted buttons, and only vital content. On the other hand, the interface
can be entertaining and full of engaging options. Before moving on, you need to find out in
what context your app will be used and then build the interface according to this information.
4. Gestures
Gestures allow users to navigate apps intuitively. Gestures can also add some gamification and
may help you gain particular audiences, like teenagers. Mobile devices are designed for
gestures, so try to get the most out of it and become a source of inspiration for other apps.
Simultaneously, try use gestures that are familiar to your users and keep in mind how your
users will be handling their device and in what context. Let’s say if the user is holding the
handrail on a public transport with one hand and trying to work an app with the other hand, it
might be annoying if there are no other gestures but to pinch to expand, since this gesture
requires two hands.
5. Tolerance
App interface design should be created in a way that if some options come up along the way,
the system would suggest by default such variants that will be most beneficial to the user. Make
sure your app allows users to undo certain actions and there are notifications showing that some
changes will be made and can be undone. Tolerance means allowing users to make mistakes
and giving them the opportunity to revoke changes.
6. Consistency
If there are several elements serving one and the same purpose in the app, they should look and
function the same way. No exceptions. Changing one element means changing all other
variants. If there are several styles of “submit” buttons on different pages, it can be frustrating
and the app would look messy. Consistency means tidiness and it is certainly a must-have in
every app, which is why in the majority of mobile app design companies there’s a rule to create
a UI kit for every project. This includes all elements of the app, and it becomes easier to follow
the consistency principle with a UI kit.
7. Communication
The core idea here is to let users know your app registered the action and processing it even if
it is not possible to give an immediate result. When the user performs a certain action, it can
be considered an act of communication with your app, which is why the app should respond
with something. Sometimes even the loader sign can be enough. From a psychological
perspective, people need to get acknowledgment for their actions, and it is especially important
in the banking sphere.
2.9. Multichannel and Multimodal UI
One of the breakthroughs users can benefit of is that automatic speech recognition (ASR)
improved highly significant over the last years. ASR now works good for dictation tasks.
However, dictation is a highly specific use case which does not require the extraction of
semantics from the utterances. Some applications use speech input for form filling. However,
filling each single slot by speech is often not more efficient then typing. The question arises:
What are important challenges in using speech as a “mainstream” modality? While ASR made
significant efforts within the last years, e.g. partly driven by the successful application of deep
neural networks, the identification of the intended semantic for a further processing by the
dialog manager is still a rather difficult process. ASR capabilities are easy to integrate into new
user interfaces by making use of available programming APIs. On the technical side one of the
next challenges is therefore to realize conversational speech interaction in many applications.
This requires to simplify the usage of NLP methods for information extraction, dialog
processing and presentation, so that developers can easily deploy speech interfaces. Since the
Internet is mobile nowadays and conversational speech is the most convenient interaction mode
of complex applications that require more than simple gestures, this will enable even more
services at the hand of the users. In that matter it is important to better understand the specific
benefits that emerge for individual users. Information about these benefits can be revealed by
observing the users’ modality choice behavior. Understanding the factors influencing users’
modality choice will enable interface designers to adapt applications to the advantage of the
user, and to inform the user about extra possibilities of interaction.