0% found this document useful (0 votes)
1 views78 pages

Mobile Application Development Notes

A mobile app is a software application designed for small, wireless devices like smartphones and tablets, categorized as web-based, native, or hybrid. Mobile apps are built using various programming languages and frameworks, providing convenience, personalization, and offline access, but they also face challenges such as limited functionality, compatibility, and security concerns. The document discusses the market drivers for mobile apps, the challenges in development, and the importance of user experience, security, and effective management in the mobile app lifecycle.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views78 pages

Mobile Application Development Notes

A mobile app is a software application designed for small, wireless devices like smartphones and tablets, categorized as web-based, native, or hybrid. Mobile apps are built using various programming languages and frameworks, providing convenience, personalization, and offline access, but they also face challenges such as limited functionality, compatibility, and security concerns. The document discusses the market drivers for mobile apps, the challenges in development, and the importance of user experience, security, and effective management in the mobile app lifecycle.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

UNIT – 1

What is a mobile app (mobile application)?

A mobile app (or mobile application) is a software application developed specifically for use on
small, wireless computing devices, such as smartphones and tablets, rather than desktop or
laptop computers.

Mobile apps are sometimes categorized according to whether they are web-based or native
apps, which are created specifically for a given platform. A third category, hybrid apps, combines
elements of both native and web apps.

In today's digital age, mobile apps are an essential part of most people's daily lives. From social
networking and entertainment to productivity and business, mobile apps play a vital role in how
we interact with technology.

How are mobile apps built?

Mobile apps are built using a variety of programming languages and frameworks, and they can
be downloaded and installed from app stores such as the Apple App Store or Google Play.

Mobile apps are designed to provide a wide range of functions and services and with
consideration for the demands, constraints and capabilities of the devices they're built for. For
example, a gaming app might take advantage of the iPhone's accelerometer.
Other examples include games, social media platforms, email clients and banking apps. They
can also be used to access information, such as news and weather updates, and to perform
tasks, such as online shopping and booking travel.

How does a mobile app work?

Mobile apps are designed to run on specific mobile operating systems such as iOS, Android and
Windows Phone. When a mobile app is downloaded and installed on a device, it is stored in the
device's memory and is launched using the device's operating system.

When a user opens a mobile app, the app communicates with the device's operating
system and other built-in software components to access the device's hardware and services
such as the camera, GPS and internet connection. The app then uses this information to provide
its specific functions and services to the user.
With A/B testing developers can try out different mobile app features.

Advantages of mobile apps

There are numerous advantages to using mobile apps, namely:

1. Convenience. Mobile apps can be downloaded and installed on a device, allowing users
to access the app's functions and services at any time, from anywhere.

2. Personalization. Mobile apps can be customized to meet the specific needs of individual
users, providing a personalized experience.

3. Offline access. Many mobile apps can be used offline, providing access to important
information and features even when an internet connection is not available.

4. Push notifications. Mobile apps can send push notifications to users, providing real-time
updates on important information and events.

Disadvantages of mobile apps

However, there are some disadvantages and considerations to keep in mind when using mobile
apps. These include:

1. Limited functionality. Mobile apps are designed to provide specific functions and
services, and they might not be able to provide the same level of functionality as a
desktop application.

2. Limited compatibility. Mobile apps are designed to run on specific mobile operating
systems, and they might not be compatible with all devices.
3. Security concerns. Mobile apps can access sensitive information on a device, and they
might not have the same level of security as a desktop application.

4. Limited updating capability. Some mobile apps might not be easily updated, and users
might need to download a new version of the app to access the latest features
and bug fixes.

While mobile apps offer convenience, personalization and offline access, they also have
limitations in terms of functionality, compatibility, security and updating capability. Business
software buyers should consider the advantages and disadvantages of mobile apps when
deciding on a distribution method for their software.

As the mobile market continues to grow, mobile apps are becoming an increasingly popular way
for businesses to engage with customers and employees, providing a convenient, personalized
and secure way to access important information and perform tasks on the go.

Market and business drivers for mobile applications include technological advancements like
widespread 5G and AI, changing consumer behavior that demands on-the-go access and
personalized experiences, and the growth of mobile ecosystems like app stores. Businesses are
driven to create apps for customer engagement, loyalty, brand awareness, and new revenue
streams through models like in-app purchases and subscriptions.

Market drivers

 Technological innovation:

o Increased mobile user base: Over 4.5 billion mobile phone users globally create
a massive market for apps.

o Advanced connectivity: The widespread adoption of 5G technology provides


higher speeds and bandwidth, enabling more complex apps.

o AI and machine learning: These technologies are used to create more intelligent,
personalized, and efficient user experiences.

 Consumer behavior:

o On-the-go access: Consumers are accustomed to using their phones for daily
tasks and want information and services anytime, anywhere.

o Personalized content: Users expect and appreciate personalized content, offers,


and advertisements tailored to their location and preferences.

o Demand for convenience: Mobile apps satisfy the demand for convenient and
easy access to services, from banking to shopping.
 Ecosystem growth:

o App stores: The explosive growth of app stores like Apple's App Store and Google
Play has made it easier for users to find and download a vast range of
applications.

o Affordable data plans: Lower costs for mobile data attract more users to the
online world and mobile apps.

Business drivers

 Customer engagement and loyalty:

o Enhanced engagement: Apps provide a direct channel for businesses to stay in


touch with customers through push notifications and other features.

o Customer loyalty programs: Apps are used to implement loyalty programs that
incentivize repeat purchases and build customer loyalty, such as Starbucks'
mobile rewards program.

o Improved customer service: Apps can provide support, handle inquiries, and
streamline customer service, making it more efficient and accessible.

 Revenue generation and new models:

o New revenue streams: Apps create opportunities for new revenue through in-
app purchases, subscriptions, and premium features.

o Monetization models: Businesses can generate revenue through various models,


including freemium, subscriptions, advertising, and e-commerce within the app.

 Marketing and brand building:

o Brand awareness: An app can be a powerful marketing tool that increases brand
visibility and keeps a brand top-of-mind for customers.

o Targeted marketing: The app environment allows for more targeted and effective
marketing campaigns based on user data.

 Business insights and efficiency:

o Data collection: Mobile apps provide a wealth of data on user behavior, which
can be used to refine products, services, and marketing strategies.

o Competitive advantage: Having a mobile app can differentiate a business from


competitors and give it a significant advantage in the market.
What are the challenges in developing mobile applications?

There is a large range of different mobile application challenges that an app developer will face
throughout the development lifecycle. This ranges from choosing the best approach to
developing the app, to creating an app that is good enough to stand out in the competitive
market.

So what are the main challenges of mobile app development? Let’s look at the key mobile
problem list.

Choosing the Best Development Approach

When starting app development projects, the first matter to consider is choosing the best app
development technology approach.

The real challenges in mobile app development are making sure you decide on the right
decisions in the early stages so that you create the best possible app for your customers. So let's
take a look at some of the development approaches you can take to overcome your mobile app
challenges.

Native app development


The first approach is known as native app development. This type is where you develop an app
using right tools specific to a certain mobile operating system (OS). The android app
development process involves challenges and complexities such as integrating third-party APIs,
ensuring compatibility across different Android versions and devices, and maintaining user
engagement while implementing futuristic features under tight deadlines. The native approach
comes with a range of advantages.

One of these is the fact that native apps often perform much better than other types of app
development and are often extremely reliable and safe, helping meet any mobile development
trend.

However, If you use the native approach, and decide to put your app in an Android mobile app
market, you will have to develop it all over again if you would like your app to be shown in
another marketplace.

Cross-platform app development

The second approach is called cross-platform development. Just like the name suggests, this
development type is perfect for those who are looking to put their apps on a range of different
app marketplaces. Developing Android apps comes with its own set of challenges, including
security issues, app visibility, device fragmentation, and integration of third-party APIs.

Although it sounds good on paper, there are numerous issues with cross-platform
development. Firstly, there is a huge dependency on the type of framework that is used to
develop the app. As you will have to do all the work on these development platforms that have
a distinct lack of features, you need to ensure it will have everything you will ever need for the
app you are developing.

There are simply many more features that can be worked on and at much faster speed in native
development than in cross-platform. Because of this, teams working on the app development
will often need to work on cross-platform, as well as iOS and Android native development,
making the whole process much more costly and time consuming.

Hybrid app development

You can also go for hybrid mobile development. This way, apps are developed using standard
forms of coding, like Javascript and CSS that have higher performance than cross-platform apps.

Hybrid applications consist where elements from native apps and web applications are
combined. They are web apps that have been placed inside a native app shell. This means that
mobile app developers require only one source of code for the app and it will still be usable on
multiple platforms. However, the unfortunate drawback is that a lot of native UX is sacrificed as
a result, along with all the great features in native development that hybrid apps just can't
replicate.

Choosing the right development approach is one of the crucial decisions in creating mobile
products. Be mindful in researching these different types and decide which one is better for
you, based on your needs and goals.

Ensuring great User Experience

When developing an app, designing a user interface that provides a great user experience
without faults is one of the most important processes and one of the crucial application
development challenges faced by UX designers and programmers. This can often be difficult, as
it needs to meet the best usability practices or it simply won’t be used as much as competing
apps having better user experience.

Great user experience is one of the biggest mobile app design challenges when making an app.
Ease of use, and loading times are just some of the factors that are imperative in users’ eyes for
them to carry on using them otherwise they may go for another mobile product.

Device compatibility and screen size

One of the key factors in mobile UX design is ensuring the app works well on a range of different
mobile devices. If it is not compatible with certain popular devices and the screen size is not
catered to this could make the user experience much worse.

This is often one of the toughest challenges faced while testing mobile applications as there are
many different devices and screen sizes, so ensuring the app is compatible with all of them can
be difficult.

Although it is important to develop apps with accessibility as a main focus, there are no special
requirements that need to be met. WCAG, which is the most reliable Web Content Accessibility
Guidelines, suggest that both mobile and desktop apps should all follow all their requirements
in the same way.

Developers will need to constantly monitor the WCAG guidelines to ensure that they are
meeting their requirements at every stage of the process.

Different mobile operating systems

There are many iOS, Android, and Windows app development challenges that developers face
when trying to provide the top-notch user experience. Specifically, the Android OSpresents
unique challenges such as fragmentation, security vulnerabilities, and the need for compatibility
with various device configurations and versions. Developers have to ensure that the app is
working well on every operating system to ensure a high-quality user experience.
Finance management and funding

After you have decided on developing a mobile application, you next need to think about the
costs, and how you will be able to afford it. Having a great idea for an app means nothing when
you don't have the funds to make it a reality.

The costs will vary depending on how complicated the app is. For example, apps often range
from $3,000 to $150,000. You need to consider all of this before developing the app.

This is often one of the biggest problems in software development, as it can be difficult to figure
out the costs involved, as well as getting the funding. You can get funding through a range of
different ways. These ways include angel investors, loans, or joint ventures.

Standing out in the mobile apps market

Mobile apps are extremely popular, and as such, the mobile market is extremely competitive.
One of the main challenges is app visibility in a crowded market. So how do you develop an app
that stands out from the crowd?

One of the biggest mobile app development challenges is promoting the app. There are several
ways to do this.

One of them is making it discoverable. If people can easily find it on an app marketplace, they
are much more likely to download it. If you’ve created a high-performing app that has a great
user experience but no one can find it, you won’t reach your business goals.

Make sure to look for a mobile app feature list example to find the best ways to promote the
app.

What are the difficulties in managing mobile technology?

When it comes to managing the app development process, there are many challenges such as
integrating third-party APIs, meeting tight deadlines, and ensuring a user-friendly design.
Otherwise, apps can create major problems, causing them to become inefficient and
unprofitable. Understanding the mobile development life cycle for Android, Apple, and other
app stores is the key.
Mobile product management

A digital product manager typically manages all development phases of the app during its
lifecycle.

In short, they prepare the app, making it ready for a smooth launch by gathering all the
necessary user data, getting relevant feedback and researching and creating a relevant go-to-
market strategy.

They also construct a product vision and product direction, where they create long term goals
that they want the product to achieve, and go about finding a strategy to achieve this.

As well as this they ensure to continuously enhance its features by testing for bugs, conducting
A/B testing and many other types of tests to ensure smooth launching, with the aim of
providing the user with the best experience possible.

During this time, an abundance of analytical data is collected and analyzed by project managers
to find out the app's best-performing features and best-suited target audience. From using user
feedback to A/B testing, data collection and analysis helps with increasing the company's return
on investment.
Employee trust and privacy

The first issue you must address when managing the businesses' mobile tech stack is employee
understanding. All companies rely heavily on their staff to ensure meeting targets within the
organization. Therefore, when transitioning over to a new platform, staff must be trained to
reduce any misinformation that can occur.

Trust plays a major role in the staff onboarding process. If privacy concerns and other crucial
elements aren't discussed by management, then employees may become wary about
promoting your app to customers.

Missed scaling opportunities

A common mistake during app management is not identifying areas to improve. Organizations
often abandon app development after the launch.

However, once you generate the feedback, there is always potential to enhance the mobile
software to reach beyond current targets and enhance satisfaction amongst customers.
Whether it be adding additional services or making the platform easier to navigate.

Keeping security tight

New threats present themselves through the use of apps and other technologies. Great
attention by the companies’ IT security team when managing apps is required to monitor and
optimize app performance to prevent any data leaks or malware attacks.

Security walls must be tested rigorously and maintained constantly otherwise the outcome can
be disastrous. Some apps may even be removed from the app store, whether it is Google Play or
the App Store. This is one of the crucial mobile application development challenges.
Always implement the best practices to ensure users’ data are completely safe and you won’t
have to deal with data breaches.

For example, with Fair Money, we enhanced security by optimizing KYC processes and
enforcing strict compliance, ensuring data protection while maintaining app stability.
Getting new or existing customers to adapt

For long-established companies that have recently released an app, or for new tech startups
that are targeting a hard-to-reach demographic, getting users to switch to this platform over
others can cause issues.

To overcome mobile app challenges, you should invest your time into creating informational
content that you can distribute through pre-existing channels to highlight the benefits of using
this platform. This includes funnels that are already being used to communicate with returning
customers, or targeting new ones.

What are the challenges of enterprise application development?

Streamlining business processes can help greatly in increasing the productivity and efficiency of
your company's daily operations. However, if you don't carefully examine certain aspects, it can
lead to many problems in app development.
Adaptability during development

For enterprise applications to work as intended, analysts and system architects must use
relevant data. Therefore, if new forecasts provide an insight that requires changes to ensure
overall efficiency, developers must be ready to alter their approach.

The team tasked with developing an app will be crucial if this happens. Willingness will
determine if the end-product will be suitable for the internal company needs or becomes
ineffective.

High cybersecurity standards

An enterprise app typically involves a complex structure. This contains all the necessary services
allowing the company to function. As new updates clear up, and gathered private information
increases, the protection of these assets should be a top priority.

Companies all over the world deal with insufficient security on their internal systems at great
expense. Cyberattacks are common and lead to enormous costs, and have even caused some
businesses to go bankrupt, creating development challenges for the whole industry.
To stay protected against mobile security issues, consider the following factors during your
development process:

 Different access levels to gain confidential information

 Back-up data systems in place

 Advanced anti-malware software built-in

 All data that is encrypted

Integration with other systems

Enterprises usually consist of various systems that help meet their daily operational needs.
When developing a new application, it's likely that your enterprise app is integrated with other
systems to optimize performance and keep it user-friendly.

To prevent these issues, your development team must consider possible integrations during the
early stages. This way, plans can be put in place to ensure all required systems integrate without
complication. Sometimes, the solution to this may be that an ERP system should be created to
deal with backend challenges.

Finding the right mobile developers

It is challenging to find the right app developers with the skills needed when creating enterprise
applications. Hiring experienced Android app development companies is crucial to navigate
development challenges and ensure the creation of functional and trendy apps. For companies
in need of customized solutions, great industry knowledge is a must-have to ensure there aren’t
any problems during the process.

Mobile App Development:

Every client will have a variety of fallacies about their app development process when planning
to build Android and iOS (iPhone & iPad) applications. In turn, certain widespread myths about
mobile app development discourage your company from creating mobile apps.

Many perceive failures more than they would without completing the appropriate
investigations. Here, we’ve covered a few common myths to avoid before beginning the
development phase.

1. Mobile Apps Are Cheaper

The assumption that mobile application development will be cheaper is probably the most
widespread myth. However, especially if it is unquestionably true that developing an application
is made simpler by having fewer features, this does not imply that these programs are cheap,
even when they are extremely straightforward in their design and interface.
These applications take a lot of time and work to design, and in a similar vein, you must be
prepared to spend more on the more sophisticated features you desire. The more complicated
your application’s structure is.

2. Mobile Apps Are Only Suitable for Smartphones

Smartphone users make up the most extensive consumer base for mobile applications, which
may or may not be accurate, but this does not imply those are the only devices on which these
applications can run.

Numerous additional mobile devices, such as handheld gaming consoles, tablets, smartwatches,
etc., can fully utilize these applications to their fullest potential.

3. Developing an Application Is a Quick and Easy Process

It’s a popular misconception that creating a mobile application is a simple and quick procedure.
You can develop a simple app much more quickly than a more sophisticated one, but it is still a
laborious process that can take several days to many weeks to finish.

When creating an application, several considerations must be made, including the user
interface, the marketing plan, any problems or glitches, the functionality, etc.

4. Cross-Platform App Conversion Is Easy

Each client believes that migrating a mobile app from one operating system to another (such as
from iOS to Android) is a straightforward process that can be completed swiftly and error-free
by the app development business.

However, it is not an automatic procedure; developers must create code from scratch for the
respective operating system.

5. Mobile Apps Require Promotion

Choosing the right promotions is an easy chore when there is intense competition, and you
must navigate a challenging market. But running promotions will cost additional time and
money.

Promoting your app increases user engagement, brand recognition, and app downloads.
Additionally, you must include eye-catching images, a brief video describing your software, and
a description that encourages customers to download it.

6. Application Success Depends on the Functionality

Each application’s success depends heavily on functionality. For example, mobile applications
with complex user flow and numerous features won’t be successful. But a successful app will
also have a decent user-friendly design and flow.
Hence, the truth is that users won’t care about the complexities of the functionalities; they
focus only on the interface and the experience of using your app.

7. If You Have Native Apps, You Wouldn’t Need Mobile Web Apps

Many companies make the wrong decision when considering mobile apps and ask whether to
create HTML5 or native apps. Instead, they should ponder the question, Should we
develop HTML5 AND native apps?

Mobile web apps are now required regardless of your preference for native apps.

Major companies are starting to notice this tendency growing. For instance, one of the most
used native apps across all platforms is provided by Facebook. However, they also offer a sleek
mobile web app that mimics the design and functionality of their native app.

These businesses discovered something: Apps for mobile web are required. Users might use a
platform that you do not support. The mobile web app serves as a fallback in these
circumstances. It functions on all platforms.

8. Building for iOS Is Sufficient

The process of creating native apps is challenging. Choosing a platform to build for is the most
essential thought that crosses developers minds. Your app determines everything.

Although iOS may be the most profitable choice, Windows and Android may also be wise
decisions because they will undoubtedly assist. An app that works across all platforms is
probably more well-liked.

9. Great Attracting Features Makes an App Successful

While it is evident that the present mobile app industry has shifted in favor of Super Apps—
apps with various functionalities to meet a wide range of customer needs—the same DOES NOT
hold for Enterprise apps.

When it comes to investing in enterprise Android or iOS app development, the success of the
app category rests on providing a small number of features that target particular employee
needs.

Therefore, when considering the features, strive to keep them as simple as possible and avoid
complicating the user’s experience.

10. There Are No Additional Tasks After Building the App

A mobile application’s development is a labor-intensive and intricate process in and of itself.


Making a mobile application involves various techniques, such as enhancing the user interface
and incorporating the newest features. The task is not complete, though, because the app is set
up and operating. The real effort starts after the program is prepared for public release since the
team must thoroughly test it for defects and usability.

A well-thought-out marketing plan is also essential to an app’s success to avoid being


overlooked in the relevant app stores. Regular updates are also necessary to maintain the
application’s functionality and responsiveness.

11. All Apps Are Made Bug-Free Before Releasing

The idea that your app would have flawless code is ridiculous. While some flaws in your app
wouldn’t bother your consumers, app crashes will cause them to leave quickly. They will cling to
your program since the benefits it provides to them outweigh any little irritating bugs.

It is crucial to ensure there are no crashes when testing your app. Nobody has any patience or
tolerance for that. But in cases of defects, it seems sensible to determine the frequency of the
test user scenario and set the priority accordingly.

It is acceptable to let your app launch with a few minor bugs that have not yet been fixed if you
have tested it thoroughly for an extended period. Being realistic about this is preferable to
striving for perfection, which could prevent your app from going live.

The entire goal of updates is to allow for the perpetual evolution of apps!

12. Developing an App Is Difficult Unless You Are an Expert

The development of a mobile application requires extensive software coding and development.
Therefore, it would be beneficial to do some preliminary research on the subject and be familiar
with developer languages to refine the idea for the application that is already in your head. Still,
it is not essential to be an expert in every area of mobile application development to create the
app of your dreams.

13. In-house Mobile App Development Is Necessary

Many think that the only approach to safeguard concepts and advance mobile app development
is through internal mobile app development. However, developing mobile apps in-house takes a
lot of time and money… something that service providers might not always possess.

Hiring a dedicated mobile app development agency makes you stress-free and helps you get all
the accessories of your app ready at a one-stop shop.

14. You Will Get the Traffic Once You Develop and Deploy The App

Perhaps you’re creating an app for your users. You can create one for commercial users or
general consumer consumption. Whatever the case is, it takes time for a mobile app to gain
users and money. Business users won’t rush to your app until you have a solid plan. The public
won’t adopt it. The public won’t immediately download it.

The development of a mobile app is only one small component of the puzzle. Users will
disregard it if there is no proper promotion and marketing.

15. The Mobile App Cannot Interact With Legacy Systems

Businesses are making large-scale expenditures in systems like ERP, or enterprise resource
planning. However, they are currently focused on creating mobile applications seamlessly
integrating with other technology. Unfortunately, Oracle, My SQL, and SAP are just a few of the
many backend systems and APIs that are difficult to use on mobile.

This may slow down app development or make them challenging to use. However, integrating
an enterprise-grade MBaaS solution with an API infrastructure resolves problems, and mobile
devices may easily access older systems.

16. Building an App Only Includes Coding

Many people mistakenly believe that creating a successful mobile application only involves
coding, but it involves more.

Understanding iOS and Android development is a vital requirement, but thoroughly preparing
an application from the core idea to the graphics to the covering feature design to the user
experience takes excellent capacity and expertise.

Understanding current trends and innovations are essential, as is adapting to new technology
and software. In addition, every single use case is unique, necessitating various programming
languages, toolkits, and network connectivity solutions for diverse backend systems and data
sources.

Types of Mobile Applications


Mobile applications are mainly classified into Native Applications, Web Applications, and
Hybrid Applications.

Native applications are developed specifically for a single platform such as Android or iOS using
platform-specific languages. They provide high performance and smooth user experience.
Native apps have full access to device features like camera, GPS, and sensors. They work well
even in offline mode. However, native apps require separate development for each platform,
which increases cost and time. Maintenance is also higher due to multiple codebases.

Advantages of Native Applications

1. Native apps provide high performance and fast execution.

2. They offer smooth and responsive user experience.

3. Full access to device hardware such as camera, GPS, Bluetooth, and sensors.

4. Can work offline without internet connection.

5. Better security and data protection.

6. Easy integration with operating system features.

7. More reliable and stable applications.

Disadvantages of Native Applications

1. Separate development is required for Android and iOS.

2. High development cost due to multiple codebases.

3. More time-consuming to build and maintain.

4. Requires skilled platform-specific developers.

5. App updates must go through app store approval.

6. Larger app size compared to web apps.

Web applications run in mobile browsers and do not require installation. They are easy to
develop and update. Web apps work on multiple devices using a single codebase. They reduce
development cost significantly. However, they depend heavily on internet connectivity. Web
apps have limited access to device hardware. Performance is slower compared to native apps.
User experience is also less interactive.
Advantages of Web Applications

1. No installation required on the device.

2. Works across multiple platforms using a single codebase.

3. Low development cost and faster development.

4. Easy to update and maintain.

5. Requires less storage space on devices.

6. Accessible from any device with a browser.

7. Ideal for content-based applications.

Disadvantages of Web Applications

1. Requires continuous internet connection.

2. Limited access to device hardware features.

3. Slower performance compared to native apps.

4. Poor offline support.

5. Less interactive user experience.

6. Security depends on browser and network.

7. No direct access to app store visibility.

Hybrid applications combine features of both native and web apps. They are developed using
web technologies and wrapped in a native container. Hybrid apps use a single codebase for
multiple platforms. Development time and cost are lower than native apps. They can access
some device features. However, performance is lower than native apps. Complex applications
may face limitations in hybrid frameworks.

Advantages of Hybrid Applications

1. Single codebase works on multiple platforms.

2. Lower development cost than native apps.

3. Faster development and deployment.


4. Can access some native device features.

5. Can be published on app stores.

6. Easier maintenance compared to native apps.

7. Suitable for medium-level applications.

Disadvantages of Hybrid Applications

1. Performance is lower than native apps.

2. Depends on third-party frameworks.

3. Limited access to advanced hardware features.

4. UI may not feel fully native.

5. Debugging can be complex.

6. Not ideal for graphics-intensive apps.

7. Security may be weaker than native apps.

UNIT – 2

Designing Applications with Multimedia and Web Access


Capabilities :-
Designing Web Applications for Mobile Screens is crucial for any application to be successful
these days. In 2021, the number of mobile users worldwide stood at 7.1 billion. As the number
of mobile phone users continues to increase, more and more UI/UX designers are focusing on
Designing web applications for keeping mobile screens in mind.

Most of the designs are now more mobile-friendly and designing web applications for mobile
screens is now becoming a very critical aspect of the entire web design process.

Mobile First Design

Mobile first design as the name suggests is about designing any application, website, or piece of
software keeping mobile-friendliness as the main priority and making sure that the design is
compatible with smaller screens. In this approach, unlike the traditional approach where we
first design for the larger viewports, we may not design for the larger screens first, but rather
start with designing the application or website for smaller screens in order to make the
application or the website more scalable and reach out to a larger number of audience.
The Mobile First Design approach came in existence ever since the first smartphone was
created. But it started becoming recorganized by the designers community after Google
popularized the mobile first design in 2010. They did it by making sure that all their applications
are mobile friendly. Now mobile first design is taken as a best practice by almost all major tech
companies.

Importance of Designing Web Applications for Mobile Screens

Importance of Designing Web Applications for Mobile Screens is immense. And that was the
reason mobile-first approach was born in early 2010s. The Importance of Designing Web
Applications for Mobile Screens can be understood through following points:

Better User retention:

User retention is a very tricky job and is completely independent of how good the codebase is.
The user only looks and interacts with the interface not the code. Key to User retention is a
good user interface coupled with great user experience. A user will not spend time on an app
where text is overflowing and colors are causing eye strain.

Effective and Enjoyable interaction:

A good mobile first web application design is a great way which can improve the user's
interaction with any mobile application. User interface design is aimed at easy enjoyable and
effective interactions between the users and the app. The primary goal of application UI
principles is to provide the best interaction to the user.

Turning customers to loyal customers:

The whole idea of UX design, more specifically, Designing Web Applications for Mobile Screens
is to create an application structure that provides the best experience to the users. The aim of
mobile application design principles is to turn customers into loyal customers by providing a
positive experience to them. UX is directly or indirectly responsible for a user's journey through
an application which ultimately decides the success of the business.

Scaling the application to millions of mobile users:

Designing applications keeping in mind the mobile users can really help you in targeting more
customers and getting more eyeballs to your product/service. The mobile approach UI/UX
design can help us scale the application to more number of people. UI/UX design concepts like
Repetition, Alignment, Contrast, etc. become even more important for the mobile app approach
since the size of the screen and the visuals that can fit in are limited.

Communicate your mission:


The visual elements along with the copywriting takes the major part of communication for the
brand. To communication you mission and your product/service - you will have to do these to
things right. Irrespective of what help marketing provides, users have to come to your
website/app to buy product/service or know about it. Here good copywriting along with great
UI can create a lasting impression in the mind of the user.

How to Design Web Applications for Mobile Screens

The process of designing web applications for mobile screens can be divided into 3 parts:

Step 1. User Research

The process of UI/UX designing starts with user research. The UI/UX designer takes detailed
notes of the user research. there's a lot of information that will be gathered so the UI/UX
designer has to analyze the information, understand the trend, and organize data using tools to
identify trends and patterns in that data. The role of the UI/UX designer is to create reports and
presentations to present that complex information to other people in the team.

Step 2. Wireframing and Prototyping (Mobile First approach)

Wireframes are detailed structural sketches that illustrate a concept. A wireframe for a digital
product is similar to a blueprint for a house. Wireframe clearly illustrates how the product
functions and the core elements of its design. These steps are quite similar to that of web
designing for desktop screens the only difference being here we will focus on Mobile-first
approach. Mobile-first approach basically means to design prototypes focusing on mobile
screens and then move towards larger screens.

Step3. Visual Designing and testing

The UI/UX designer then comes up with creative and innovative design solutions. he/she
designs the User Interface and creates different visual touch points and establish the
interactivity with them. Along with that the interfaces are tested and iterated upon the
shortcomings.

Best UI/UX practices - Designing Web Applications for Mobile Screens

Follow these essential best practices for designing better web applications for mobile screens.

Emphasize on what mobile user needs:

Here is an example, Phones are getting bigger and the header section is unreachable so by
having the search box closer to the thumb users can easily access it. While other did not even
notice, in the new iOS release Apple moved the browser bar from the top of the screen to the
bottom of the screen. These are the small things that matters and in mobile design. Always give
emphasis on what the mobile audience wants from the design.

Contrast:

Setting up a proper contrast to the mobile UI helps the user differentiate between what is
important and what is not. Proper contrast can be obtained through organizing the design,
establishing hierarchy, emphasizing a focal point and adding visual interest. It can be done by a
lot of different ways - we can add contrast with color, with weight, with size of typography or
even with the imagery.

Limit Form Fields:

In mobile screens, limited form fields is essential improve usability as users are checking out the
webpages from small screens. Hence we must keep the form elements spaced out so visitors
can fill them out easily without accidentally clicking on the wrong one. Here , two practices are
a must - avoiding drop down menus and using easy to find, bigger buttons. Multi-step forms are
even better for mobile users as users can fill out each question at a time which allows them to
go quickly through the form without scrolling.

Alignment and Proximity:

A proper alignment in a mobile first user interface helps organize and group elements, it creates
a visual rhythm of elements on the screen, Alignment and proximity brings order in unordered
typography. Hence a proper alignment becomes even mor crucial for smaller screen where the
readers can handle a large chunk of text all together.

Page Speed:

Page speed is not just an essential factor for mobile first approach but also one of the most
crucial factor in user experience and conversions. The ideal page loading time should be 2
seconds that means your webpage should load within two seconds ideally but in the worst case
scenario it should load in two to four seconds.

Repetition:

Proper use of repetition through increasing consistency, increases the user's ability to learn and
identify the pattern in our interface or layout and it also reduces confusion and helps the user
guess objects in the layout properly.

Integration with GPS and social media networking applications


GPS Integration with Social Media (Geosocial Networking)
GPS integration allows social media and mobile apps to use a user’s real-time location to
provide location-based services. This creates geosocial networking, where users interact based
on where they are. Features like check-ins, geotagging, and live location sharing enhance user
experience by showing nearby restaurants, events, friends, and services.

Key Features

 Location Sharing: Users share live or tagged locations (e.g., WhatsApp, Instagram).

 Check-ins & Discovery: Apps show nearby places, events, or friends (Facebook Places,
Foursquare).

 Geotagging: Location data is added to photos or posts for richer content.

 Proximity Marketing: Businesses send ads or offers to users near their location.

 Real-time Navigation: Apps like Waze use GPS data for traffic and route updates.

How It Works (Technical)

 APIs: Developers use GPS and mapping APIs such as Google Maps API to access location
data.

 Geofencing: Virtual boundaries trigger actions when users enter or leave an area.

Benefits

 Enhanced Engagement: Users receive personalized and relevant content.

 Targeted Marketing: Businesses reach nearby customers effectively.

 Improved Utility: Better navigation, local recommendations, and safety features.

Examples of Apps

 Social Media: Facebook, Instagram

 Messaging: WhatsApp

 Location-Based Services: Waze, Uber, Lyft, Tinder

Security & Privacy


Although GPS integration improves safety and convenience, it raises privacy concerns. Users
must control permissions and be aware of how their location data is collected and used.

Accessing applications hosted in a cloud computing environment:-


You can access cloud-hosted applications through a web browser or a dedicated mobile app by
connecting to the internet. For businesses, this often involves using a virtual private network
(VPN) to securely connect from a corporate device. The most common method is through a
Software as a Service (SaaS) model, where the application is delivered directly over the internet,
eliminating the need for local installation or maintenance.

Methods for accessing cloud applications

 Web Browser: Access applications directly through a web browser, such as Chrome,
Firefox, or Safari, by navigating to the provider's website. This is the most common
method for consumers and employees using web-based services.

 Dedicated Desktop or Mobile App: Some services offer a dedicated application that you
can install on your computer or smartphone. This app connects to the cloud service to
provide access to the application's features and data.

 Application Programming Interface (API): This is a more technical method often used by
developers to integrate cloud applications into other software. An API allows different
applications to communicate with each other and exchange data.

How to connect

 Internet Connection: You must have a stable internet connection to access any cloud
service.

 User Credentials: You will need to log in with a username and password to access your
account.

 Security Measures: For corporate access, you may need to connect through a VPN to
ensure a secure connection, especially when accessing sensitive data or applications.

Examples of cloud-hosted applications

 SaaS Applications: These are applications delivered as a service, such as online email,
enterprise resource planning (ERP) software, or customer relationship management
(CRM) systems.

 Custom Applications: Businesses can develop and host their own applications in the
cloud using platforms like Amazon Web Services (AWS) or Microsoft Azure, then allow
employees or customers to access them via a browser or app.

 Healthcare Software: Healthcare providers can access patient data and applications
from anywhere, which is crucial for a flexible and remote workforce.

Design patterns for mobile applications


Design patterns are reusable solutions to common software development problems. They have
had a significant impact on software development, including mobile app development. The
implementation of mobile apps has established some proven models and standards to
overcome the challenges and limitations of mobile app development.

Most mobile applications were built with low code and were not based on architecture. Mobile
app development with the right design patterns can effectively integrate user interfaces with
data models and business logic. This will affect the quality of your source code.

Model View Controller (MVC) Architecture

MVC is a design model that separates an application into three interacting parts: Model, View,
and Controller. This separation allows for better code design and modularization.

Model View Controller

 Model: Represents application data and business logic.

 View: Displays data to the user.

 Controller: Processes user input and controls data flow between Model and View.

For Example:
Imagine a mobile weather app. The model stores weather information, the View displays it to
the user, and the controller handles user interactions such as updating the displayed location or
converting units (e.g. from Celsius to Fahrenheit).

Model View Presenter (MVP) Architecture

MVP is a new architecture that separates an application into three parts: Model, View, and
Presenter. This is similar to MVC but puts more responsibility on the Teacher to manage the
interaction between Model and View.

Model View Presenter

 Model: Manages data and business logic.

 View: Represents the user interface.

 Designer: Acts as an intermediary processing user input and updating the View and
Model.

For Example:

In a note-taking app, the Model would store the text, the View would display it, and the provider
would handle user input such as typing, editing, or deletes the process.
Model View View Model (MVVM) Architecture

MVVM is a design model widely used in mobile development, especially in frameworks like
Android’s Jetpack. Its purpose is to separate the application into three parts: Model, View, and
ViewModel.

Model View View Model

 Model: Represents data and business logic.

 View: Represents the user interface.

 ViewModel: Acts as an interface between the Model and the View, which contains the
reference logic.

For Example:

In an e-commerce application, the Model contains product data, the View displays product
information, and the ViewModel manages interactions, such as adding items to a cart.

VIPER Architecture

VIPER stands for View, Interactor, Presenter, Entity, and Router. VIPER is primarily based at the
clean architecture ideas, which purpose to separate the concerns of different layers of the
utility. Each layer has a single duty and communicates with different layers through properly-
defined interfaces.
VIPER Architecture

Let’s briefly explain the function of every element:

 View: This is the consumer interface layer, wherein the perspectives and look at
controllers are defined. The view is chargeable for showing the information provided by
way of the presenter and forwarding the person moves to the presenter.

 Presenter: This is the presentation layer, where the good judgment for formatting and
imparting the records is defined. The presenter is liable for fetching the records from the
interactor, reworking it right into a suitable layout for the view, and updating the view
hence. The presenter additionally handles the consumer movements acquired from the
view and calls the router to navigate to other screens.

 Interactor: This is the enterprise good judgment layer, where the common sense for
manipulating the data and interacting with external services is described. The interactor
is accountable for gaining access to the facts from the service layer, acting any vital
operations on it, and returning it to the presenter. The interactor additionally
communicates with the entity layer to store and retrieve the information fashions.

 Entity: This is the information layer, wherein the data models and systems are described.
The entity is responsible for representing the data in a constant and coherent manner
throughout the software. The entity layer also can encompass records get entry to
gadgets (DAOs) or repositories that summary the information of records patience and
retrieval.
 Router: This is the navigation layer, where the logic for routing and transitioning among
different monitors is defined. The router is chargeable for developing and providing the
view controllers, passing any vital facts to them, and coping with any dependencies or
configurations. The router also communicates with the presenter to get hold of the
navigation requests and execute them.

Singleton Method Design Pattern

The singleton policy ensures that there is only one instance of a class and provides global
access. This is especially useful when you want to manage a single instance of an object or
control access to a delayed object.

For Example:

Singleton can be used to manage player’s score in mobile game. There can only be one instance
that is responsible for tracking scores and is updated throughout the game.

Factory Method Design Pattern

The Factory Method model defines an interface for creating an object but allows subclasses to
modify the type of the created object. Especially useful when you need to create objects with a
common interface but different functionality.

For Example:

In a mobile app that supports multiple payment gateways, payments can be made using the
Factory Method. Each payment gateway (e.g., PayPal, Stripe) is a small business and provides its
services.

Observer Method Design Pattern

The observer structure defines one to many dependencies between objects, so when one
object changes its state, all its dependents are automatically notified and updated. This is useful
for scheduling distributed events.

For Example:

In the reports app, many features (Observers) such as the title widget, the report feed view, and
the notification provider (Themes) can subscribe to updates when new information arrives. The
observer model ensures that they are created all registered parts report, and accordingly You
can update it.

Dependency Injection (DI) Method Design Pattern


Dependency Injection is a method of providing class dependencies from the outside, rather
than creating them in the class. It improves code modularity and testability by making classes
independent of their dependencies.

For Example:

In an Android app, instead of creating a single database connection object in the class, you can
place the database object externally, allowing you to easily test and modify database
operations.

Adapter Method Design Pattern

The adapter configuration allows you to use the interface of an existing class as a link to a new
one. It is often used to work with others without modifying the source code of existing classes.

For Example:

If you want to use a third-party library that provides data in a different way, you can create an
adapter that will convert the library's results to the format your app would expect and make
sure that they are compatible meet without changing the library code.

Strategy Method Design Pattern

The strategy model defines a family of algorithms, contains each of them, and provides them
with flexibility. It allows you to select the appropriate algorithm at runtime. This example is
useful when you want to provide different options for a task.

For Example:

In a weather application, you can use various methods to retrieve weather information, such as
using a REST API, WebSocket, or local storage. The user can change these options, and the app
adapts to his preferences.

Composite Method Design Pattern

A composite pattern allows you to arrange objects in a tree structure to represent a part-of-the-
whole structure. This is helpful when you have to deal with individual objects and sets of
objects accurately.

For Example:

You can use Composite pattern to create complex shapes from simple shapes in the mobile
drawing app. Complex designs can contain individual designs, allowing users to manipulate and
categorize resources as needed.

Understanding Application users


1. Who Are Application Users

Application users are the people who interact with an application to perform tasks or achieve
goals. They include end users, business users, administrators, and technical users. End users use
the app for daily activities like messaging or shopping. Business users rely on apps for
professional tasks such as reporting or data management. Administrators manage user access,
data security, and system settings. Technical users maintain or update the application. Each type
of user has different expectations and responsibilities. Understanding these categories helps
developers design features according to user roles. It also ensures that users only access
functions relevant to them. Proper identification of users improves efficiency and security.

2. User Needs and Goals

User needs and goals define what users expect from an application. Some users want fast
performance, while others need advanced features. Understanding these needs helps
developers focus on essential functions. Clear user goals reduce unnecessary features and
complexity. For example, a student app focuses on simplicity, while a business app emphasizes
accuracy. When user goals are understood, applications become more effective. This leads to
better satisfaction and fewer complaints. Developers can also prioritize features based on
importance. Meeting user needs ensures long-term application success.

3. User Behavior and Interaction

User behavior refers to how users interact with an application. This includes how often they use
it and which features they prefer. Studying behavior helps identify common problems or
confusion points. Developers can improve navigation based on usage patterns. Interaction data
shows which buttons, menus, or screens are used most. It also helps reduce errors and improve
workflow. Understanding behavior allows optimization for speed and ease of use. This results in
smoother and more enjoyable user experiences.

4. User Experience (UX) and Interface Design

User experience focuses on how easy and pleasant an application is to use. A good interface is
simple, clear, and visually appealing. Understanding users helps design layouts that are easy to
navigate. Clear labels and instructions reduce user mistakes. UX design ensures consistency
across screens and features. It also considers accessibility for disabled or elderly users. A well-
designed interface increases user confidence. Good UX leads to higher user engagement and
retention.
5. User Skills and Technical Knowledge

Users have different levels of technical skills. Some users are beginners, while others are
advanced. Applications should be easy for new users to learn. Advanced users should have
access to powerful features. Help options like tutorials and tooltips support beginners. Clear
error messages guide users when problems occur. Understanding skill levels avoids frustration.
This makes the application usable by a wide audience.

6. Security and Privacy Expectations

Users expect their personal data to be safe and private. Understanding these expectations helps
developers implement strong security. This includes secure logins, passwords, and data
encryption. Users should control what information they share. Clear privacy policies build trust.
Applications must protect against unauthorized access. Secure systems increase user
confidence. Privacy-aware design ensures legal and ethical compliance.

7. Importance of Understanding Application Users

Understanding application users is essential for successful software development. It helps in


creating user-friendly applications. Proper understanding reduces errors and support costs. It
improves user satisfaction and loyalty. Developers can design better features and interfaces. It
also ensures security and accessibility. Applications become more efficient and reliable. Overall,
user understanding leads to better application quality.

Information Design
Information Design is the practice of organizing, structuring, and presenting information in a
clear and effective way so that users can easily understand and use it. The main goal is to
communicate information quickly, accurately, and efficiently by combining text, visuals, and
layout techniques.
Key Topics in Information Design

1. Purpose of Information Design

The purpose of information design is to make complex information simple and easy to
understand. It helps users find important details quickly without confusion. Good information
design improves decision-making and reduces errors. It is commonly used in websites, mobile
apps, manuals, dashboards, and infographics.

2. Clarity and Simplicity

Clarity means presenting information in a straightforward manner. Simple language, short


sentences, and clear headings improve understanding. Unnecessary details are removed to
avoid overload. Simple designs help users focus on key messages. This makes information more
effective and user-friendly.

3. Organization and Structure

Information should be logically organized using headings, subheadings, lists, and sections.
Proper structure guides users step by step. Grouping related information improves readability.
Well-organized content helps users locate information quickly and efficiently.

4. Visual Representation

Visual elements such as charts, icons, images, and diagrams make information easier to
understand. Visuals help explain data and relationships better than text alone. Good use of
color, spacing, and typography improves readability. Visual design supports faster
comprehension.

5. Audience-Centered Design

Information design focuses on the needs of the target audience. Content is designed according
to users’ age, knowledge level, and purpose. Understanding the audience ensures relevant and
meaningful communication. This improves user satisfaction and engagement.

6. Consistency and Accessibility

Consistency in fonts, colors, and layout improves usability. Accessibility ensures information is
usable by everyone, including people with disabilities. Clear contrast, readable fonts, and simple
navigation support inclusive design. This makes information available to a wider audience.

Achieving Quality Constraints


Achieving quality constraints means ensuring that a system, product, or application meets
predefined quality standards while being developed and delivered. Quality constraints define
the limits and expectations related to performance, reliability, usability, security, cost, and time.
Meeting these constraints is essential for creating a successful and user-satisfactory system.

1. Understanding Quality Constraints

Quality constraints are specific requirements that a system must satisfy. These include response
time, accuracy, security level, usability, and availability. Developers must clearly identify these
constraints at the planning stage. Proper understanding helps avoid defects and rework later.

2. Performance Constraints

Performance constraints ensure that the system responds quickly and handles workloads
efficiently. This includes speed, scalability, and resource usage. Optimization techniques such as
efficient coding and load balancing help achieve performance goals. Performance testing
ensures the system works well under heavy usage.

3. Reliability and Availability

Reliability ensures the system works correctly without failure over time. Availability ensures the
system is accessible when needed. Redundancy, backups, and fault-tolerant designs help meet
these constraints. Regular monitoring improves system stability.

4. Usability Constraints

Usability constraints focus on ease of use and user satisfaction. The system should be simple,
intuitive, and accessible. User feedback and usability testing help refine the design. Clear
interfaces reduce errors and training time.

5. Security Constraints

Security constraints protect data and system resources from unauthorized access. This includes
authentication, authorization, encryption, and secure coding practices. Regular security testing
and updates help maintain safety. Strong security builds user trust.

6. Cost and Time Constraints

Quality must be achieved within budget and schedule limits. Efficient planning, resource
management, and prioritization are required. Agile and iterative development methods help
balance quality, cost, and time. Monitoring progress ensures constraints are met.

7. Testing and Quality Assurance


Testing plays a major role in achieving quality constraints. Functional, performance, and security
testing identify issues early. Quality assurance ensures standards are followed throughout
development. Continuous testing improves overall system quality.

Establishing the development environment


Android operating system is the largest installed base among various mobile platforms across
the globe. Hundreds of millions of mobile devices are powered by Android in more than 190
countries of the world. It conquered around 71% of the global market share by the end of 2021,
and this trend is growing bigger every other day. The company named Open Handset
Alliance developed Android for the first time that is based on the modified version of the Linux
kernel and other open-source software. Google sponsored the project at initial stages and in the
year 2005, it acquired the whole company. In September 2008, the first Android-powered
device was launched in the market. Android dominates the mobile OS industry because of the
long list of features it provides. It's user-friendly, has huge community support, provides a
greater extent of customization, and a large number of companies build Android-compatible
smartphones. As a result, the market observes a sharp increase in the demand for developing
Android mobile applications, and with that companies need smart developers with the right skill
set. At first, the purpose of Android was thought of as a mobile operating system. However, with
the advancement of code libraries and its popularity among developers of the divergent
domain, Android becomes an absolute set of software for all devices like tablets, wearables, set-
top boxes, smart TVs, notebooks, etc.
Features of Android

Android is a powerful open-source operating system that open-source provides immense


features and some of these are listed below.
 Android is an Open Source Project so we can customize the OS based on our
requirements.

 Android supports different types of connectivity for GSM, CDMA, Wi-Fi, Bluetooth, etc.
for telephonic conversation or data transfer.

 Using wifi technology we can pair with other devices while playing games or using other
applications.

 It contains multiple APIs to support location-tracking services such as GPS.

 We can manage all data storage-related activities by using the file manager.

 It contains a wide range of media supports like AVI, MKV, FLV, MPEG4, etc. to play or
record a variety of audio/video.

 It also supports different image formats like JPEG, PNG, GIF, BMP, MP3, etc.

 It supports multimedia hardware control to perform playback or recording using a


camera and microphone.

 Android has an integrated open-source WebKit layout-based web browser to support


User Interfaces like HTML5, and CSS3.
 Android supports multi-tasking means we can run multiple applications at a time and
can switch between them.

 It provides support for virtual reality or 2D/3D Graphics.

Android Versions

Google first publicly announced Android in November 2007 but was released on 23 SEPTEMBER
2008 to be exact. The first device to bring Android into the market was the HTC Dream with the
version Android 1.0. Since then, Google released a lot of android versions such as Apple Pie,
Banana Bread, Cupcake, Donut, Éclair, Froyo, Gingerbread, Jellybeans, Kitkat, Lollipop,
marshmallow, Nougat, Oreo, etc. with extra functionalities and new features.

The following table shows the version details of android which is released by Google from 2007
to date.
Code Name Version API level Release date

- Android 1.0 1 September 23, 2008

- Android 1.1 2 February 9, 2009

Cupcake Android 1.5 3 April 30, 2009

Donut Android 1.6 4 September 15, 2009

Eclair Android 2.0 - 2.1 5-7 October 26, 2009

Froyo Android 2.2 - 2.2.3 8 May 20, 2010

Gingerbread Android 2.3 - 2.3.4 9-10 December 6, 2010

Honeycomb Android 3.0.x - 3.2.x 11 - 13 February 22, 2011

Ice Cream
Android 4.0 - 4.0.4 14 - 15 October 18, 2011
Sandwich

Jelly Bean Android 4.1 - 4.1.2 16 - 18 July 9, 2012

Kitkat Android 4.4 - 4.4.4 19 July 9, 2012

Lollipop Android 5.0 - 5.1 21 - 22 October 17, 2014

Marshmallow Android 6.0 - 6.0.1 23 October 5, 2015


Code Name Version API level Release date

Nougat Android 7.0 - 7.1 24 - 25 August 22, 2016

Oreo Android 8.0 26 August 21, 2017

Pie Android 9.0 27 August 6, 2018

Android Q Android 10.0 29 September 3, 2019

Android 11 Android 11.0 30 September 8, 2020

Snow Cone Android 12.0 - 12.1 31-32 October 4, 2021

Tiramisu Android 13 33 August 15, 2022

Upside Down Cake Android 14 34 October 4, 2023

Vanilla Ice Cream Android 15 35 May 15, 2024

Programming Languages used in Developing Android Applications

1. Java

2. Kotlin

Developing the Android Application using Kotlin is preferred by Google, as Kotlin is made an
official language for Android Development, which is developed and maintained by JetBrains.
Previously before Java is considered the official language for Android Development. Kotlin is
made official for Android Development in Google I/O 2017.
Advantages of Android Development

 The Android is an open-source Operating system and hence possesses a vast community
for support.

 The design of the Android Application has guidelines from Google, which becomes
easier for developers to produce more intuitive user applications.

 Fragmentation gives more power to Android Applications. This means the application
can run two activities on a single screen.

 Releasing the Android application in the Google play store is easier when it is compared
to other platforms.

Disadvantages of Android Development

 Fragmentation provides a very intuitive approach to user experience but it has some
drawbacks, where the development team needs time to adjust to the various screen
sizes of mobile smartphones that are now available in the market and invoke the
particular features in the application.

 The Android devices might vary broadly. So the testing of the application becomes more
difficult.

 As the development and testing consume more time, the cost of the application may
increase, depending on the application's complexity and features.

Android Architecture

Android architecture contains a different number of components to support any Android


device's needs. Android software contains an open-source Linux Kernel having a collection of a
number of C/C++ libraries which are exposed through application framework services. Among
all the components Linux Kernel provides the main functionality of operating system functions
to smartphones and Dalvik Virtual Machine (DVM) provide a platform for running an Android
application.

Components of Android Architecture

The main components of Android architecture are the following:-

 Applications

 Application Framework

 Android Runtime

 Platform Libraries
 Linux Kernel

Pictorial representation of Android architecture with several main components and their sub-
components

Understanding Android's architecture is essential for building efficient applications. For those
looking to master this structure and move from beginner to advanced skills in Kotlin,
the Android Mastery with Kotlin: Beginner to Advanced course offers a comprehensive guide

1. Applications

Applications is the top layer of android architecture. The pre-installed applications like home,
contacts, camera, gallery etc and third party applications downloaded from the play store like
chat applications, games etc. will be installed on this layer only. It runs within the Android run
time with the help of the classes and services provided by the application framework.

2. Application framework

The Application Framework is a core part of Android that gives developers the tools and services
they need to build apps. It provides access to device features like hardware, screen display, and
system resources. It includes several important services that make it easier to build powerful
and consistent Android apps without having to create everything from scratch. The services are
as follows:

1. Activity Manager - Manages the app’s activities and their life cycle (like opening,
pausing, or closing screens).

2. Notification Manager - Allows apps to show alerts or updates to the user.

3. Package Manager - Keeps track of all the apps installed on the device.
4. Window Manager - Handles the placement and appearance of windows on the screen.

5. Content Providers - Help apps share data with other apps (like contacts or photos).

6. View System - Controls how things (like buttons or text) appear on the screen.

3. Application runtime

Android Runtime environment is one of the most important part of Android. It contains
components like core libraries and the Dalvik virtual machine(DVM). Mainly, it provides the base
for the application framework and powers our application with the help of the core libraries.
Like Java Virtual Machine (JVM), Dalvik Virtual Machine (DVM) is a register-based virtual
machine and specially designed and optimized for android to ensure that a device can run
multiple instances efficiently. It depends on the layer Linux kernel for threading and low-level
memory management. The core libraries enable us to implement android applications using the
standard JAVA or Kotlin programming languages.

Note: Now, starting from Android 5.0 and above, we use ART (Android Runtime) to compile
bytecode into native code to leverage ahead-of-time compilation.

4. Platform libraries

The Platform Libraries includes various C/C++ core libraries and Java based libraries such as
Media, Graphics, Surface Manager, OpenGL etc. to provide a support for android development.

 Media library provides support to play and record an audio and video formats.

 Surface manager responsible for managing access to the display subsystem.


 SGL and OpenGL both cross-language, cross-platform application program interface (API)
are used for 2D and 3D computer graphics.

 SQLite provides database support and FreeType provides font support.

 Web-Kit This open source web browser engine provides all the functionality to display
web content and to simplify page loading.

 SSL (Secure Sockets Layer) is security technology to establish an encrypted link between
a web server and a web browser.

5. Linux Kernel

Linux Kernel is heart of the android architecture. It manages all the available drivers such as
display drivers, camera drivers, Bluetooth drivers, audio drivers, memory drivers, etc. which are
required during the runtime. The Linux Kernel will provide an abstraction layer between the
device hardware and the other components of android architecture. It is responsible for
management of memory, power, devices etc. The features of Linux kernel are:

 Security: The Linux kernel handles the security between the application and the system.

 Memory Management: It efficiently handles the memory management thereby


providing the freedom to develop our apps.

 Process Management: It manages the process well, allocates resources to processes


whenever they need them.

 Network Stack: It effectively handles the network communication.

 Driver Model: It ensures that the application works properly on the device and
hardware manufacturers responsible for building their drivers into the Linux build.
Other Commonly Used Architectures in Android

There are few commonly used Android Architectures used mentioned below:

1. MVC ( Model View Controller )

MVC or Model View Controller breaks the model into three main components Model that
stores the application data , View UI layer that holds the component visible on the screen
and Controller that establishes the relationship between Model and the View.

2. MVP ( Model View Presenter )

To avoid complexities like maintainability, readability, scalability, and refactoring of applications


we use MVP model. The basic working of this model relies of the points mentioned below:

 Communication between the View-Presenter and Presenter-Model happens with the


help of Interface (also called Contract).

 There is One to One relationship between Presenter and View , One Presenter Class only
manages One View at a time.

 Model and View doesn't have any knowledge about each other.

3. MVVM ( Model View ViewModel ) :

MVVM or Model View ViewModel as the name suggest like MVC model it contains three
components too Model , View and ViewModel. Features of MVVM model are mentioned below:

 ViewModel does not hold any kind of reference to the View.

 Many to-1 relationships exist between View and ViewModel.


 No triggering methods to update the View.

And we can achieve this using 2 methods:

 Using DataBinding library of Google.

 Using Tools like RxJava for Data Binding.

Benefits of Architecture

Using Architecture solves many problems for us few of them are:

 Improves the Maintainability , quality and robustness of the application

 Scalability of the Application is increased using Architecuture as , users and developers


bot the engamenents on the application can be increased.

 Testing of Application gets easy because of it.

 Bugs can be identified and removed easily with the well defined process.

Android Application Structure


An Android application structure defines how the files and components of an Android app are
organized in a project. A well-defined structure helps developers manage code, resources, and
configuration efficiently. Below is a detailed explanation of the main parts of an Android
application structure.

1. [Link]

The [Link] file is the core configuration file of an Android app. It declares the
app’s package name, components (activities, services, broadcast receivers, and content
providers), permissions, minimum SDK version, and hardware requirements. Every Android app
must have this file, as the system uses it to understand the app’s structure and behavior.

2. Java / Kotlin Source Code

This folder contains the application logic written in Java or Kotlin. It includes classes for
activities, fragments, services, and other components. Each class controls how the app behaves
and responds to user interactions. The main activity usually acts as the entry point of the
application.

3. res (Resources) Folder


The res folder stores all non-code resources used in the app. It includes layout files (XML) for UI
design, drawable files for images, mipmap for app icons, values for strings, colors, and styles,
and menu files. Separating resources from code improves organization and supports
localization.

4. layout Folder

The layout folder inside res contains XML files that define the user interface of the app. These
files describe the arrangement of UI components such as buttons, text views, and images.
Layouts make UI design flexible and easy to modify without changing code.

5. drawable Folder

The drawable folder contains images, icons, and graphical resources used in the app. It may also
include XML drawable files for shapes and selectors. Different drawable folders support multiple
screen densities for better display.

6. values Folder

The values folder contains XML files for reusable values like strings, colors, dimensions, and
themes. Using values improves consistency and supports multi-language apps through
localization.

7. Gradle Scripts

Gradle files manage dependencies, build configurations, and app versions. They control how the
app is compiled and packaged into an APK or AAB file. Gradle also helps include external
libraries.

8. assets Folder

The assets folder stores raw files such as HTML, fonts, or text files. These files are accessed
directly using an AssetManager. Unlike resources, assets are not compiled.

9. APK / App Bundle Output

After building the project, all files are packaged into an APK or Android App Bundle (AAB). This
file is installed on Android devices. It contains code, resources, and configuration data.

What is an Android Emulator?


The Android SDK provides a virtual mobile device emulator that runs on a computer. An android
emulator is used for executing, debugging, and testing android applications. The emulator helps
the developer to run a trial product virtually without an actual hardware device. An emulator is
similar to a physical hardware mobile device including all the features that an actual mobile
contains except that it cannot place an actual phone call. The emulator comes with predefined
configurations for various Android phones, tablets, Wear OS, and Android TV devices. Emulator
represents a specific Android device that can be used as a target platform to run and test your
android application on your PC.

It provides navigation control keys along with touchscreen accessibility. On a virtual device, the
cursor can be used as a finger and perform all the functions such as typing, opening
applications, swiping, etc. The Android Emulator runs on a full Android system stack, down to
the kernel level including a set of preinstalled applications that we can access from our
applications.

Android emulator enables us to choose api level and android version of your choice by
configuring AVDs. While launching the emulator at runtime, we can use a variety of commands
and options to control its behavior. The android emulator offers dynamic binary translation of
device machine code to the OS and processor architecture of our development machine.

The emulator supports various hardware features like:

 ARMv5 CPU AMD corresponding MMU

 A 16-bit LCD Display

 Dialpad\keyboard

 Sound chip

 Flash memory

 GSM modem

 Camera

 Sensors like accelerometers

Advantages of Android Emulator

 Transfer of files is faster in virtual devices, as here a file can be transferred through drag
and drop.

 Emulator enables the programmer to work with physical sensors such as


accelerometers, gyroscopes, proximity, etc.

 One can play games, browse the internet, change settings, etc.

 Android emulator enables you to choose any version of your choice and accordingly, a
developer can build an app.
 Developer can check all possible test cases through android emulators.

Disadvantages of Android Emulator

 Android emulator works with slow speed as compared to actual physical devices.

 Emulators cannot recognize the speed and performance of the battery, location, and
hardware-related activities.

 Testing on an emulator is not accurate as you are using a virtual device not an actual
device.

 One cannot identify issues related to networks or notifications on an emulator.

 The emulator crashes at launch if it does not receive enough disk space.

About Android Virtual Device(AVD)

Android Virtual Device(AVD) is a software representation of an actual world physical android


device. In other words, it doesn’t have any physical existence but behaves like a physical android
device itself. It has everything which you think a physical machine would have.

Whether it’s storage, audio, notifications, applications, etc., all are present in the android virtual
device. Most of the android virtual devices are self-configurable. In other words, you can
configure the hardware and the version of android which you wish to operate on.

Why Android Virtual Device?

We understood what an android virtual device is from the above, but now the question arises,
“Why do we need it?” We already have many physical android devices available then why
android virtual device is so popular. So, there are several use cases of android virtual devices,
which makes their existence more popular.

Suppose you are an android developer but don’t have an android device at all. In such cases, to
test your application will you purchase a new phone? The answer is No, not at all. You can
simply use an android virtual device to test your applications.

The other use case is supposed when you wish to test your application on a specific android
version. Then would you hunt for a device with that particular android version? No, you won’t.
You shall go for an android virtual device that is flexible with the configurations and allows you
to decide and alter its configuration whenever required.

Similarly, many other use cases of the android virtual devices make it so essential for android
developers.

Who uses Android Virtual Device?


As discussed before, android virtual devices are highly used by android developers. But it’s not
just restricted to android developers. Even regular users can use it if they require it. Most
gamers worldwide use android virtual devices to play games that their actual physical devices
won’t support.

Most of the time, the physical android devices with higher configurations cost a lot and can’t
afford it. You can use an android virtual device to configure the software and hardware
requirements you require in those circumstances.

Features of Android Virtual Device(AVD)

Android Virtual Device brings many features that make it so popular among developers, gamers,
and android users. Let’s see a few of the features of AVD before proceeding with the setup.

 It is self-configurable and allows users to pick up any android version of their choice.

 It provides storage and also allows applications to be installed.

 This behaves mostly like your actual physical device and provides most of the
functionalities.

 You can alter the appearance of your android virtual device depending on your needs.

 Android Virtual Device is as secure as your physical device.

Setting up your Android Virtual Device

Now, it’s time for us to explore the steps to set up your Android Virtual Device.

Step 1: Start your Android Studio and click on Tools —-> AVD Manager. The AVD Manager
window will appear on your Android Studio, as shown below.
Step 2: Now, you can see a button “Create Virtual Device.” Simply click on it, and it will redirect
you to another window where you will be asked to select your hardware requirements.

Step 3: Now, simply select the type of device and the model you wish to have. I am choosing the
device type as a phone and the model as Pixel 2 XL for my case. After selecting these, press on
Next.
Step 4: Now, you will see a window seeking to select the system image you wish to have for your
device. Here, the system image simply means the version of android you want to have.

Step 5: For my case, I am selecting Android R (or Android 11) as my device’s system image. To
choose the android version, I need to press the download button present beside the Android
version. After pressing the download button, the download of the system image will start, as
shown below.

Step 6: After the download is accomplished, simply press on Finish and then press Next, as
shown below.
Step 7: After pressing Next, you will be redirected to a window where you need to enter the
name of your AVD and select the graphics hardware. You can provide the desired name for your
AVD, for instance, “TechVidvan AVD.”

Now click on Finish, and your AVD setup will accomplish.


Step 8: Now, you can see the available Virtual devices in your Android Studio, as shown below.

You need to go to the actions block and press the play button to start the Android Virtual Device
in your system.

UI design
1. Establishing the Android Development Environment

To develop Android apps, a proper development environment is needed. Install Android Studio,
the official IDE, along with Java Development Kit (JDK) or Kotlin. Android Studio includes tools
like code editor, debugger, emulator, and Gradle for building apps. The Android SDK provides
APIs and libraries. Setting up the environment correctly allows coding, testing, debugging, and
deployment. Developers can run apps on virtual devices or physical devices. Gradle manages
dependencies and app versions. A well-configured environment reduces errors and
development time.

2. Android Architecture

Android architecture is a layered framework. At the base is the Linux Kernel, managing
hardware, memory, and security. Above it, the Hardware Abstraction Layer (HAL) enables
hardware communication. Native Libraries provide tools like SQLite, OpenGL, and WebKit. The
Android Runtime (ART) runs applications and manages memory. Application Framework
provides APIs for activities, services, content providers, and resources. The top layer is
Applications, including user apps like Gmail or WhatsApp. This layered design ensures
modularity, portability, and security.

3. Android Application Structure

An Android app consists of multiple organized components. [Link] defines


permissions, components, and metadata. Java/Kotlin files contain application logic. The res
folder stores resources like layouts, images, and strings. Gradle files manage dependencies and
build settings. The assets folder contains raw files like fonts or HTML. After building, all files are
packaged into an APK for installation. A proper structure ensures modularity, maintainability,
and scalability of apps.

4. Emulator

The Android emulator simulates a real Android device on a computer. It allows developers to
run and test apps without physical devices. Emulators mimic hardware features like screen size,
CPU, RAM, GPS, camera, and sensors. Developers can test different Android versions and device
configurations. It is essential for debugging, testing UI, and checking performance. Emulator
snapshots allow faster launch. However, it may be slower than real devices and requires high
system resources.

5. Android Virtual Device (AVD)

An AVD is a configuration that defines the characteristics of an emulator. It includes device type,
screen size, Android version, CPU, RAM, and storage. Using AVDs, developers can test apps on
multiple virtual devices. They simulate real-world conditions like orientation changes, network
connectivity, and battery status. AVD Manager in Android Studio helps create and manage these
virtual devices. AVD ensures apps work on different devices without needing physical hardware.

6. UI Design

UI design in Android is about creating interactive and user-friendly interfaces. It uses XML
layout files to define views like TextView, Button, ImageView, and EditText. Layouts like
LinearLayout, RelativeLayout, ConstraintLayout, and FrameLayout organize components.
Material Design principles ensure consistency, feedback, and intuitive navigation. UI design
considers multiple screen sizes, densities, and orientations. Event handling (clicks, gestures)
makes UI interactive. A well-designed UI improves usability, engagement, and user satisfaction.

7. Activity

An Activity represents a single screen in an app. It handles UI rendering and user interactions.
Each activity has a lifecycle with methods like onCreate(), onStart(), onResume(), onPause(),
onStop(), and onDestroy(). Developers manage transitions between activities using intents.
Proper lifecycle management ensures efficient memory use and smooth performance. Multiple
activities can exist in a single app.

8. Fragments

Fragments are reusable UI components within an activity. They allow modular design and
dynamic UI changes. Each fragment has its own lifecycle but is linked to the parent activity.
Fragments are useful for tablets and large screens where multiple components are displayed
simultaneously. They can be added, replaced, or removed at runtime. Using fragments improves
code reusability and flexibility.

9. Services

A Service runs in the background without a user interface. It performs long-running operations
like music playback, data sync, or downloads. Services can be started or bound. They continue
running even if the app is minimized. Proper use of services enhances app functionality without
interrupting user experience.

10. Broadcast Receiver

Broadcast Receivers listen for system-wide or app-specific broadcast events. Examples include
battery low, SMS received, or network changes. They perform short tasks in response to
broadcasts. Receivers can be registered in the manifest or dynamically in code. They allow apps
to respond to events without continuous running.

11. Intents and Intent Filters

Intents are messaging objects for communication between components. Explicit intents target a
specific component, while implicit intents request a generic action. Intent filters declare which
intents a component can handle. Intents enable activity transitions, service starting, and
broadcast sending. They allow app interoperability and component communication.

12. Content Provider

A Content Provider manages and shares app data with other apps securely. It provides a
standard interface for data access using URIs. Content providers support CRUD operations:
Create, Read, Update, Delete. Examples include Contacts and Media Store. They ensure
controlled and secure data sharing.

13. SQLite Programming

SQLite is an embedded database for local storage in Android apps. It stores structured data in
tables. Developers can perform SQL operations like INSERT, SELECT, UPDATE, and DELETE. SQLite
is lightweight and doesn’t require a server. It is ideal for offline storage and small datasets.
14. SQLite Open

SQLite databases are opened using getWritableDatabase() or openDatabase(). This creates a


connection between the app and the database. Queries can then be executed to manage data.
Closing the database properly prevents memory leaks and errors.

15. SQLite Helper

SQLiteOpenHelper is a helper class for managing database creation and upgrades. Developers
extend this class and implement onCreate() and onUpgrade(). It simplifies database operations
and ensures smooth schema updates.

16. SQLite Database

SQLite Database stores data locally in tables with rows and columns. It is fast, secure, and
portable. Android APIs provide easy methods to interact with SQLite databases. It supports
offline apps and persistent storage of user data.

17. Interaction with Server-Side Applications

Android apps interact with servers using APIs, usually via HTTP/HTTPS. Data is sent and received
in JSON or XML format. Libraries like Retrofit and Volley simplify server communication. Server-
side interaction enables login, data sync, cloud storage, and dynamic content. Security and error
handling are critical for smooth communication.

Activity

An Activity is a single screen in an Android application where the user can interact with the app.
It acts as the entry point for user interaction and handles UI rendering and input events. Each
activity has a lifecycle, including methods like onCreate(), onStart(), onResume(), onPause(),
onStop(), and onDestroy(), which manage state transitions and resource usage. Activities can
communicate with each other using Intents, either explicit (specific target) or implicit (generic
action). Proper lifecycle management ensures smooth performance and avoids memory leaks.
Multiple activities can exist in a single app, each serving a different function, such as login,
home screen, or settings.

Fragments

A Fragment is a modular, reusable portion of the UI that can be combined with other fragments
in an activity. Fragments help design flexible layouts, especially for tablets and large screens.
Each fragment has its own lifecycle, which is connected to the parent activity’s lifecycle.
Fragments can be added, replaced, or removed dynamically at runtime. They allow multiple
screens to exist within a single activity without launching new activities. Using fragments
improves modularity, reusability, and code maintainability. They are useful for building
responsive UIs that adapt to different screen sizes.

Services

A Service is a component that runs in the background without a user interface. Services are
used for long-running operations like music playback, file downloads, data synchronization, or
background calculations. There are two types: Started Services, which run until stopped, and
Bound Services, which allow components to bind and interact with the service. Services
continue running even if the app is minimized or the user navigates away. They help perform
tasks without interrupting the user experience. Proper management ensures efficient resource
usage and prevents battery drain.

Broadcast Receiver

A Broadcast Receiver is a component that listens for system-wide or app-specific broadcast


messages called intents. Examples include battery low, network changes, SMS received, or app-
installed events. Broadcast receivers do not have a user interface and perform short tasks in
response to events. They can be registered statically in the manifest file or dynamically in code.
Broadcast receivers allow apps to react to external events without continuously running in the
background. They are essential for event-driven programming and help improve app
responsiveness and efficiency.

SQLite Database: The Local Storage Solution

SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-
featured SQL database engine. It is the default database included in the Android operating
system for local data storage.

Key Characteristics:

 Serverless: Unlike MySQL or PostgreSQL, SQLite does not run as a separate server
process. It reads and writes directly to ordinary disk files.

 Self-Contained: It requires no external dependencies.

 Transactional: It ensures atomicity, consistency, isolation, and durability (ACID


properties).

Intents and Filters

An Intent is a messaging object used to request an action from another app component. It is the
primary mechanism for interaction between components (Activities, Services, Broadcast
Receivers) in Android.
Intent Components:

 Action: Specifies the general action to be performed (e.g., ACTION_VIEW,


ACTION_SEND, ACTION_MAIN).

 Data (URI): The data on which the action is to be performed (e.g., a phone number, a
web address).

 Category: Provides additional context for the action (e.g., CATEGORY_LAUNCHER).

 Extras: Key-value pairs for additional information.

Types of Intents:

1. Explicit Intents: Specify the target component (e.g., a specific Activity class) by name.
Used for communication within your own app.

2. Implicit Intents: Do not name a specific component. Instead, they declare a general
action to perform. The system then finds an available component (possibly from a
different app) that can handle the intent.

Intent Filters

An Intent Filter is a block of XML code in the app's manifest file ([Link]) that
specifies the types of implicit Intents a component (Activity, Service, or Broadcast Receiver) can
respond to.

 A component must have an Intent Filter that matches the Action, Data, and Category of
an implicit Intent to be launched by it.

Content Provider and SQLite Programming

A Content Provider acts as an interface for managing access to structured data. It's the standard
interface for sharing data between different applications.

Key Roles:

 Data Abstraction: It hides the details of the underlying data source (which could be a
SQLite database, files, or a network).

 Inter-Process Communication: It provides a secure way for other apps to query, insert,
update, or delete your app's data, subject to permissions.

Content Provider - SQLite Relationship


When a Content Provider is backed by a local SQLite database, it uses the standard CRUD
(Create, Read, Update, Delete) methods to interact with the database:

 query(): Selects data.

 insert(): Inserts a new row.

 update(): Modifies existing rows.

 delete(): Deletes rows.

SQLiteOpenHelper: The Database Management Class

The SQLiteOpenHelper class is a helper utility for managing database creation and version
management. You rarely interact with the raw SQLite API; instead, you subclass
SQLiteOpenHelper.

Essential Methods to Override:

1. onCreate(SQLiteDatabase db):

o Purpose: Called only once when the database is created for the first time.

o Action: This is where you execute SQL CREATE TABLE statements to set up your
database schema.

2. onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):

o Purpose: Called when the database version number (defined in your app's code)
is increased.

o Action: This is where you handle schema changes, typically by using DROP TABLE
IF EXISTS and then calling onCreate() again, or by executing ALTER TABLE
commands.

Getting a Database Instance:

 getReadableDatabase(): Returns a SQLiteDatabase object for read operations.

 getWritableDatabase(): Returns a SQLiteDatabase object for read and write operations.

SQLiteDatabase: The Core Interaction Object

The SQLiteDatabase class represents a database connection and provides the methods for
actual SQL execution.
Key Interaction Methods:

 execSQL(String sql): Executes a single SQL statement that does not return data (e.g.,
CREATE, DROP, INSERT, UPDATE, DELETE).

 rawQuery(String sql, String[] selectionArgs): Executes a SELECT query. It returns a Cursor


object containing the results.

 insert(String table, String nullColumnHack, ContentValues values): A convenience


method for inserting rows.

 update(String table, ContentValues values, String whereClause, String[] whereArgs): A


convenience method for updating rows.

Example Flow (Simplified):

1. Get a writable database instance: SQLiteDatabase db = [Link]();

2. Prepare data: ContentValues values = new ContentValues(); [Link]("name", "John");

3. Insert data: [Link]("users", null, values);

4. Close the database: [Link]();

Interaction with Server Side Applications

While SQLite handles local persistence, interaction with server-side applications (backends)
handles remote/shared persistence and business logic.

Standard Interaction Process:

1. Request: The Android app sends a request to the server, typically using HTTP/HTTPS and
an API (often a REST API).

2. Data Format: The data exchanged is usually formatted as JSON (JavaScript Object
Notation) or XML.

3. Server Processing: The server processes the request (e.g., fetching data from a
MySQL/PostgreSQL server database, running calculations).

4. Response: The server sends a response (JSON/XML data) back to the Android app.

Bridging Local and Remote Data:


 Caching: The app often stores the server data locally using SQLite (e.g., displaying news
articles even when offline). This requires a mechanism to check if the local data is "stale"
and needs an update from the server.

 Synchronization: When the user makes changes offline, the app stores them in SQLite
and then synchronizes them with the server when a connection is available.

UNIT-4

Location and Connectivity Integration

1. Google Maps, GPS, and Wi-Fi Integration

Integrating location services allows apps to be context-aware, which is a key feature of modern
mobile devices.

 Google Maps Platform: To display maps, you use the Maps SDK for Android. This
involves:

o Getting an API key from the Google Cloud Console.

o Adding the map to your layout using the <fragment> tag with GoogleMap as the
class.

o Programmatically managing the map using the GoogleMap object, which allows
you to set the camera position, add markers, and draw shapes.

 Location Services (GPS/Wi-Fi): Android uses the Google Play services Location API
(specifically the Fused Location Provider) for efficient location updates.

o GPS (Global Positioning System): Provides the most accurate location (fine-
grained), but uses more battery.

o Wi-Fi/Cell Data: Provides approximate location (coarse-grained), but is faster and


more power-efficient.

o Permissions: You must declare location permissions in the [Link]


(ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION) and request them at
runtime for Android 6.0 (API 23) and above.

 Location Request: You define a LocationRequest object to specify the desired accuracy
and update frequency (e.g., set priority to PRIORITY_HIGH_ACCURACY).

2. Wi-Fi Integration

Direct Wi-Fi integration often involves the ConnectivityManager and WifiManager classes.
 Checking Connectivity: Use ConnectivityManager to check the current network state
(connected, type of network).

 Wi-Fi Scanning: Use WifiManager to scan for available Wi-Fi access points.

 Wi-Fi Suggestions/Network Request (Modern APIs): Newer Android versions (Android


10+) use APIs like the Wi-Fi Network Suggestion API to securely and conveniently guide
the user to connect to a specific network (e.g., connecting a smart home device).

🔔 Android Notification

Notifications are messages displayed outside of your app's normal UI to inform the user of
events, reminders, or incoming messages.

 Notification Channel (Required since Android 8.0/API 26): Every notification must be
assigned to a Channel. Channels allow users to control the behavior of groups of
notifications (e.g., turning off sound for "promotional" notifications but keeping sound
for "critical" notifications).

 Components:

o Icon: A small icon (required).

o Title and Text: The main content of the message.

o Pending Intent: The action that executes when the user taps the notification,
typically opening an Activity.

o [Link]: The standard way to create the notification object,


ensuring compatibility across different Android versions.

 Types of Notifications:

o Heads-up: Appears briefly over the current screen for important, high-priority
notifications.

o Standard: Appears in the notification shade and status bar.

o Foreground Service Notification: A mandatory, persistent notification for


services running in the foreground (e.g., music player, location tracking) to
prevent the system from killing the service.

🔊 Audio Manager

The AudioManager class provides access to control volumes, ringer modes, and audio focus on
the device.
 Volume Control: You can set or adjust the volume for specific audio streams (e.g.,
STREAM_MUSIC, STREAM_RING, STREAM_VOICE_CALL).

o Methods: setStreamVolume(), adjustVolume().

 Ringer Mode: Used to change the device's ringer mode:

o RINGER_MODE_SILENT

o RINGER_MODE_VIBRATE

o RINGER_MODE_NORMAL

o Method: setRingerMode().

 Audio Focus (Advanced): Essential for managing scenarios where multiple apps might
want to play audio simultaneously (e.g., a music app vs. a navigation app).

o An app must request audio focus before playing. If another app has focus, it may
temporarily lose it (AUDIOFOCUS_LOSS_TRANSIENT) and must pause its own
audio playback. This prevents audio clash.

📲 Communication and Peripherals

4. Sending SMS and Phone Calls

These functions primarily rely on Implicit Intents and require specific permissions.

Action Intent Action Permission Required

Phone Call
Intent.ACTION_DIAL None (opens dialer, user confirms call)
(Dialer)

Phone Call
Intent.ACTION_CALL CALL_PHONE (starts call immediately)
(Direct)

Intent.ACTION_SENDTO (with None (opens messaging app, user


Send SMS
[Link] confirms)

Send SMS SEND_SMS (sends directly in the


SmsManager class
(Direct) background)

Note: Direct actions (ACTION_CALL, SmsManager) are less common now due to stricter Android
policies on user privacy and direct manipulation of communication features. The recommended
approach is to use Intents that allow the user to confirm the action.
5. Bluetooth

Bluetooth integration allows your app to communicate with other Bluetooth-enabled devices
(like headsets, smartwatches, or IoT devices).

 Bluetooth Adapter: The primary object, accessed via


[Link](). Used to check if Bluetooth is supported and
enabled.

 Types of Bluetooth:

o Classic Bluetooth (BT): Used for streaming data (like audio or files). Follows the
client-server model.

o Bluetooth Low Energy (BLE): Used for short bursts of data transmission, ideal for
IoT and lower-power accessories. Focuses on GATT (Generic Attribute Profile) for
communication.

 Permissions: Requires BLUETOOTH and BLUETOOTH_ADMIN (for older Android versions)


or BLUETOOTH_SCAN, BLUETOOTH_CONNECT (for Android 12+ runtime permissions).

6. Camera and Sensor Integration

Camera

Modern Android camera development uses the CameraX Jetpack library, which is built on the
lower-level Camera2 API but provides a consistent and easy-to-use interface.

 Key Use Cases (CameraX):

o Preview: Displaying the live feed on a PreviewView.

o Image Capture: Taking a static photo.

o Video Capture: Recording video.

o Image Analysis: Processing frames (e.g., for barcode scanning or AI/ML


inference).

 Permissions: CAMERA permission and WRITE_EXTERNAL_STORAGE (if saving to public


storage).

Sensor Integration

The Sensor Framework allows you to access physical sensors on the device.

 SensorManager: The system service used to get a list of available sensors and register
listeners.
 Sensor: An object representing a specific sensor (e.g., TYPE_ACCELEROMETER,
TYPE_GYROSCOPE, TYPE_LIGHT).

 SensorEventListener: The interface you implement to receive data updates


(onSensorChanged()) and detect changes in sensor accuracy (onAccuracyChanged()).

 Types:

o Motion Sensors: Accelerometer, Gyroscope (used for gesture detection,


orientation).

o Environmental Sensors: Barometer, Ambient Temperature, Humidity.

o Position Sensors: Magnetometer (Compass), Proximity Sensor.

🚀 Publishing Android Application

Publishing an application involves making your finalized app available to users via the Google
Play Store.

Key Steps (via Google Play Console):

1. Developer Account: Create and register a Google Play Developer account (requires a
one-time registration fee).

2. App Bundle Creation: Generate a Signed App Bundle (.aab) or a signed APK. The App
Bundle is the recommended format as it allows Google Play to deliver optimized APKs
tailored to the user's device, resulting in smaller downloads.

3. App Setup: In the Google Play Console:

o Create a new app listing.

o Complete mandatory information (Privacy Policy, App Access, Ads declaration,


Content Rating questionnaire, Target Audience).

4. Store Listing: Prepare and upload all marketing assets:

o Icon and Feature Graphic.

o Screenshots (Phone, Tablet, etc.).

o Short and Full Descriptions.

5. Release Tracks: Upload the .aab to a release track:

o Internal Testing: Quick testing for a small internal team.


o Closed Testing (Alpha/Beta): Testing with a larger, external group of testers.

o Production: The final release track for all users.

6. Review and Launch: Review all configuration settings and "Start rollout to Production."
The app enters a review process by Google Play before becoming available on the store.

💻 Introduction to KOTLIN

Kotlin is the preferred, modern language for Android development, officially supported by
Google.

 Definition: Kotlin is a cross-platform, statically typed, general-purpose programming


language developed by JetBrains.

 Key Features and Advantages:

o Concise Syntax: Requires significantly less boilerplate code compared to Java,


leading to faster development.

o Null Safety: Kotlin's type system actively distinguishes between references that
can hold null and those that cannot. This dramatically reduces
NullPointerException crashes, a major source of instability in Android apps.

 Example: var name: String? = null (nullable) vs. var name: String = "John"
(non-null).

o Interoperability: It is 100% interoperable with Java, meaning you can have both
Java and Kotlin files in the same project and call code between them seamlessly.

o Extension Functions: Allows you to "extend" a class with new functionality


without inheriting from the class. This makes code cleaner and more readable.

o Coroutines: A major feature for asynchronous programming. They simplify


background operations (like network calls or database access) by writing
asynchronous code in a sequential, easy-to-read style.

UNIT - 5
Introduction to Objective-C
Objective-C is a general-purpose, object-oriented programming language that is a superset of
the C programming language, meaning any valid C code can be compiled by an Objective-C
compiler. It was the primary language for Apple's OS X and iOS operating systems and their
associated APIs (Cocoa and Cocoa Touch) from the late 1980s until the introduction of Swift in
2014.

Key Features

 Object-Oriented: It supports core OOP principles like encapsulation, inheritance, and


polymorphism through classes and objects.

 Dynamic Runtime: It uses a dynamic runtime system that resolves method calls at
runtime (dynamic binding) rather than compile time, which allows for greater flexibility,
such as message forwarding and introspection.

 Message Passing: Instead of calling methods using typical function syntax, Objective-C
uses square brackets to send "messages" to objects (e.g., [myObject doSomething];).

 Syntax: It combines standard C syntax for non-object-oriented operations (primitive


types, flow control) with Smalltalk-style messaging syntax for object interactions. Code
files have .m extensions, and header files use .h extensions.

 Interoperability: Objective-C code can be easily integrated with Swift using bridging
headers, and can also incorporate C and C++ code seamlessly.

 Memory Management: Modern Objective-C uses Automatic Reference Counting (ARC)


to manage memory, abstracting the manual retain/release cycles that were previously
required.

Primary Uses

While new Apple development has largely shifted to Swift, Objective-C remains relevant for
several reasons:

 Legacy Codebases: Many existing, large-scale iOS and macOS applications (including
apps by companies like Facebook and Dropbox) have significant portions of their code
written in Objective-C, requiring ongoing maintenance and updates.

 Cocoa/Cocoa Touch Frameworks: The foundational frameworks for Apple platforms are
built with Objective-C, and developers often interact with Objective-C APIs.

 Open-Source Projects: Various open-source libraries and tools within the Apple
ecosystem still utilize Objective-C.
iOS Features (The Platform)
iOS (iPhone Operating System) is Apple's mobile platform known for its user-friendly, gesture-
based interface, deep integration within the Apple ecosystem (iPhone Mirroring, AirDrop,
iCloud), robust security (App Sandboxing, encryption, Biometrics), and a curated App Store,
offering features like Siri, FaceTime, customizable Home Screens, advanced Accessibility, and AI-
driven tools like Visual Intelligence and Live Translation for communication and productivity.
Recent updates focus on "Liquid Glass" design, enhanced personalization, and tools for focus
and privacy.

Core Platform Features

 User Interface: Intuitive, gesture-based (tap, swipe, pinch) with customizable Home
Screens, widgets, and Control Center.

 Security & Privacy: App Sandboxing, Face ID/Touch ID, data encryption, and robust
privacy controls.

 Ecosystem Integration: Seamless continuity with Mac, iPad, Watch (Handoff, Universal
Clipboard, AirDrop).

 Core Apps: iMessage, FaceTime, Safari, Photos, Mail, Notes.

 Assistants: Siri, Apple's voice and AI assistant, integrated across the system.

Key Recent Features (iOS 26/18 Era)

 Liquid Glass Design: A refreshed, more delightful visual experience.

 Visual Intelligence: Analyze screen content for search, context, and actions (e.g., identify
objects in Photos).

 Live Translation: Real-time translation in Messages, FaceTime, and Phone.

 Game Mode: Prioritizes CPU for gaming and minimizes Bluetooth latency.

 Enhanced Photos: Redesigned interface and smarter search.

 RCS Support: Improved messaging with Android devices (richer media, typing
indicators).

 Personal Voice/Live Speech: Advanced accessibility for users with speech loss.

 Polls in Messages: Create polls within conversations.

UI Implementation: UIKit
UIKit is Apple's foundational and comprehensive framework for building graphical user
interfaces (UI) on iOS, iPadOS, and tvOS. It uses an imperative, event-driven approach and
provides a wide range of pre-built components for creating interactive app experiences.

Key Concepts

 Imperative Programming: In UIKit, developers manually construct UI elements and


explicitly manage how they change in response to user input or data updates (e.g., using
methods and setters).

 Core Components: The framework offers essential elements like UIButton, UILabel,
and UITextField, as well as more complex structures such
as UITableView, UICollectionView, navigation controllers (UINavigationController), and
tab bar controllers (UITabBarController) for managing user flow.

 View Controllers: UIViewController objects are central to UIKit architecture, managing


the interaction between your app's data and the views displayed on screen.

 Layouts: UIKit primarily uses Auto Layout and UIStackView to create responsive designs
that adapt to different screen sizes and orientations.

 Accessibility: It includes robust features to make apps accessible to all users through
accessibility labels and traits.

Implementation Methods

You can implement UIKit interfaces using two primary methods:

 Storyboards/Interface Builder: This visual approach allows developers to drag and drop
UI elements onto a canvas, configure their properties, and define transitions without
writing extensive code.

 Programmatic UI: Developers can also build the entire interface purely in code, which
often provides more control and can lead to more reusable components and cleaner
architecture in large projects.

UIKit vs. SwiftUI

While Apple is actively promoting SwiftUI (a modern, declarative framework) as the future of UI
development, UIKit remains essential for:

 Maintaining and updating existing, large codebases.

 Complex, highly customized designs that require granular control.

 Ensuring support for older iOS versions.


UIKit and SwiftUI can also be seamlessly integrated within the same project, allowing
developers to use UIKit views inside SwiftUI and vice versa.

Touch Frameworks

iOS uses touch events to drive user interaction.

 UIResponder: The base class for objects that can respond to and handle events (like
UIView and UIViewController).

 Touch Handling: When a user touches the screen, the system delivers a sequence of
UITouch objects to the appropriate responder via the touchesBegan:, touchesMoved:,
touchesEnded:, and touchesCancelled: methods.

 UIGestureRecognizer: A class designed to simplify complex touch interactions (gestures).


Instead of tracking individual touches, you attach a gesture recognizer to a UIView to
easily detect:

o UITapGestureRecognizer

o UIPinchGestureRecognizer

o UISwipeGestureRecognizer

o UIRotationGestureRecognizer

Data Persistence

Data persistence refers to the techniques used to store application data beyond the lifetime of a
single session.

1. Core Data

Core Data is not a database; it is an object graph management framework provided by Apple. It
helps manage the lifecycle of modeled objects (known as managed objects) and can optionally
persist them to a persistent store, typically an SQLite file.

 Managed Object Model: Defines the schema (entities, attributes, relationships).

 Managed Object Context (MOC): The "scratchpad" where you create, retrieve, modify,
and save managed objects. All changes must be explicitly saved from the MOC to the
store.

 Persistent Store Coordinator: Acts as a broker, connecting the MOC to the physical
persistent store (e.g., SQLite file).
2. SQLite

SQLite is a fast, serverless, self-contained SQL database engine. It can be used directly in iOS via
the C-language API ([Link]) or wrapped in higher-level libraries.

 Direct SQLite: Requires manual handling of C code, SQL queries, and converting C-struct
data into Objective-C objects. It offers maximum performance control but requires more
coding overhead than Core Data.

🔗 Action and Outlets (The MVC Connection)

Actions and Outlets are the primary methods for connecting the user interface (View) to the
application code (Controller) in the Model-View-Controller (MVC) design pattern.

 Outlet (@property):

o Purpose: A connection from a UI element (like a UIButton or UILabel) in the


Storyboard/NIB file to a property variable in the View Controller's code.

o Function: Allows the code to reference the UI element and modify its attributes
(e.g., changing the text of a UILabel).

o Objective-C Syntax: @property (nonatomic, weak) IBOutlet UILabel *myLabel;

 Action (- (IBAction)):

o Purpose: A connection from an event fired by a UI element (like a tap on a


UIButton or text change in a UITextField) to a method in the View Controller's
code.

o Function: Allows the code to respond to user interaction.

o Objective-C Syntax: - (IBAction)buttonTapped:(id)sender;

🤝 Delegates and Storyboard

1. Delegates

The Delegate pattern is a core design pattern in Cocoa and Cocoa Touch.

 Concept: An object (the delegating object) hands off some of its responsibilities to
another object (the delegate).
 Function: It is used to customize the behavior of standard UIKit components and
communicate events back to the controller.

o Example: A UITextField uses a delegate (UITextFieldDelegate) to ask the


controller: "Should I allow the user to type this character?" or "What should I do
when the user presses the return key?"

 Protocol: The delegate must conform to a specific protocol (an interface that defines the
required and optional methods).

2. Storyboard

A Storyboard is a visual representation of the application's user interface, showing the content
of multiple screens (View Controllers) and the transitions (segues) between them.

 Function: It centralizes the UI design process, simplifying the creation of complex


application flows.

 Segues: The visual connectors between View Controllers, defining the transition style
(e.g., push, modal). Segues can be triggered programmatically or by user interaction.

📍 Location Aware Applications

These applications use the device's GPS and network triangulation to determine geographic
position.

1. Core Location

Core Location is the framework responsible for providing location, altitude, and heading
information.

 CLLocationManager: The central object used to start and stop location services.

 Permissions: Requires declaring usage descriptions in [Link] and requesting user


permission at runtime (requestWhenInUseAuthorization or
requestAlwaysAuthorization).

 Delegate: The CLLocationManagerDelegate receives location updates via the


locationManager:didUpdateLocations: method.

2. Map Kit

Map Kit is the framework used to embed customizable maps directly into your application and
perform map-related functions.
 MKMapView: The view used to display map data (satellite, hybrid, standard).

 Annotations: Objects that display specific points of interest on the map (e.g., custom
pins).

 Geocoding: Converting coordinates (latitude/longitude) to a human-readable address,


and vice versa.

📅 Integration with System Apps and Services

Integrating Calendar and Address Book

iOS provides frameworks to securely access and manage the user's personal data, subject to
permission.

 EventKit Framework (Calendar): Allows reading, writing, and modifying calendar events
and reminders.

o Requires permission and grants the app access to the user's EKEventStore.

 Contacts Framework (Address Book): Allows fetching and managing the user's contacts.

Social Media Application Integration

This typically involves using the Social Framework (for older systems) or more commonly, using
the specific social media platform's SDK (e.g., Facebook SDK, X (Twitter) API).

 Native Integration: Utilizing iOS features like the Share Sheet (UIActivityViewController)
to allow users to share content without requiring separate login/API integration within
the app itself.

📶 Using Wi-Fi (Networking)

While the Core Location and Map Kit use Wi-Fi for coarse location, the term "Using Wi-Fi" often
refers to networking capabilities.

 Foundation Framework: Used for all standard network communication.

o URLSession: The modern, powerful API for handling network requests (GET,
POST, etc.), handling background transfers, and managing sessions.

 Connectivity: Developers must use the Reachability pattern (often implemented with
the SystemConfiguration framework) to check if the device has a network connection
(Wi-Fi or cellular) before attempting a network request.
🛒 iPhone Marketplace (The App Store)

The iPhone Marketplace is the App Store, the exclusive distribution channel for all public iOS
applications.

Key Aspects for Developers:

 Apple Developer Program: Mandatory paid membership to distribute apps.

 Provisioning Profiles and Certificates: Used to digitally sign and authenticate the app,
ensuring it is allowed to run on devices and on the App Store.

 App Review Process: Every application must be manually reviewed by Apple against
their guidelines before publication.

 In-App Purchase (IAP): Using the StoreKit framework to sell content, subscriptions, or
premium features directly within the app.

You might also like