Mastering Android Application Development - Sample Chapter
Mastering Android Application Development - Sample Chapter
$ 44.99 US
28.99 UK
P U B L I S H I N G
Fr
ee
Sa
m
pl
C o m m u n i t y
E x p e r i e n c e
D i s t i l l e d
Antonio was born in southern Spain and currently lives in London working as an
Android contractor; he works part time developing for different companies, such as
TomTom, MasterCard, and the UK giant, British Telecom. His experience extends
from small start-ups to big telecom companies. Video streaming apps, newsreader
apps, Voice over IP, voice authentication, e-commerce, online payments, navigation,
and games are some of the technologies Antonio has worked on.
He is also the director of SuitApps, a venture outsourcing apps remotely for other
companies, where he leads and coaches a team of developers and UI/UX designers.
Apart from the app development industry, Antonio has experience in the online
teaching industry as an instructor of a course about getting started with Android
with more than 8,000 students and a five-star rating.
Preface
This book is a practical guide to learning the development of advanced Android
apps. This book helps master the core concepts of Android and quickly apply the
knowledge in real-life projects. Throughout the book, an app is created, evolved in
every chapter, so that the reader can easily follow and absorb the concepts.
The book is divided into twelve chapters. The first three chapters are focused on
the design of the app, explaining the basic concepts of design and the programming
patterns used in Android. The next few chapters aim to improve the application,
accessing the server side to download the information to be shown in the app. Once
the app is functionally complete, it is improved using Material Design components
and other third-party libraries.
Before finishing, extra services are added to the app, such as location services,
analytics, crash reports, and monetization. Finally, the app is exported, explaining
the different build types and certificates, and uploaded to Play Store, ready to be
distributed.
Preface
Chapter 3, Creating and Accessing Content from the Cloud, covers all that is necessary
to display information from the Internet in our app. This information can be on
an external server or API. We will create our own server using Parse, and we will
access it with advanced network requests using Volley and OKHttp, processing the
information and converting it into usable objects using Gson.
Chapter 4, Concurrency and Software Design Patterns, talks about concurrency in
Android and the different mechanisms to handle it, such as AsyncTask, Services,
Loaders, and more. The second part of this chapter talks about the most common
programming patterns used in Android.
Chapter 5, Lists and Grids, discusses lists and grids, starting with ListViews. It explains
how this component evolved in RecyclerView, and as an example, it shows how to
create a list with different types of elements on it.
Chapter 6, CardView and Material Design, focuses on improving the app from a user
interface perspective and introduces Material Design, explaining and implementing
features such as CardView, Toolbar, and CoordinatorLayout.
Chapter 7, Image Handling and Memory Management, mostly talks about displaying
images in our app that are downloaded from the Internet using different
mechanisms such as Volley or Picasso. It also covers different types of images, such
as Vector Drawable and Nine patch. Finally, it talks about memory management and
preventing, detecting, and locating memory leaks.
Chapter 8, Databases and Loaders, essentially explains how databases work in Android,
what content providers are, and how to get the database to communicate directly
with the views using CursorLoaders.
Chapter 9, Push Notifications and Analytics, talks about how to implement push
notification using Google Cloud Messaging and Parse. The second part of the chapter
talks about analytics, which is critical to understand how users behave with our app,
to capture error reports, and to keep our app free of bugs.
Chapter 10, Location Services, introduces MapView by implementing an example in
the app from the initial setup in the developer console to the final map view in the
app showing locations markers.
Chapter 11, Debugging and Testing on Android, talks mostly about testing. It covers unit
test, integration, and user interface tests. It also discusses using different tools and
best practices on the market to develop a maintainable app through automated tests.
Chapter 12, Monetization, the Build Process, and Release, shows how to monetize the app
and explains the key concepts of advertisement monetization. It shows how to export
an app with different build types and, finally, how to upload and market this app in
Google Play Store.
Getting Started
We will start the book with an overview of Material Design and Android 6
Marshmallow. The new Material Design concept from Google has been a revolution
in the way apps look and feel.
During the course of the book, we will build an app called MasteringAndroidApp.
In this chapter, we will explain what the app is about. In this app, we will put into
practice all the concepts and theory explained in every chapter. At the end of the
book, we should have a rich app, full of features, which can be easily modified to
create your own version and uploaded to the Google Play Store.
We will ensure that we have all the necessary tools, downloading the latest version
of Android and introducing Genymotion, the quickest emulator for Android,
strongly recommended for this book.
Material Design
Android Studio
SDK Manager
Genymotion
[1]
Getting Started
[2]
Chapter 1
This is an example of an app using the Material Design style; we can see cards
with shadows, different content, and an app bar with a navigation drawer. All
these components will be explained in the course of this book, and we will aim
to build an app using the same style.
Material design also came with important UI elements, such as RecyclerView.
This is a view that will replace ListView, which came earlier in Android, to
create any kind of a scrollable list of elements. We'll work with these components
in Chapter 5, Lists and Grids, starting with the basic version of ListView, evolving
it to understand how RecyclerView was born, and finishing with an example of it.
The CardView was another major UI element introduced. We can see one in the
previous image; it's a component with a background and shadows that can be
customized to fit all the content that we want. We will work with it in Chapter 6,
CardView and Material Design, where we'll also introduce the next component
design support library.
Design support library is a must have library that includes animations, FAB (Floating
Action Button), and the navigation drawer. You've probably already seen the sliding
menu that comes from the left in other apps. Design support library offers support
for these components in previous Android versions, allowing us to use Material
Design features in older versions.
All of the above are features from a UI and programming perspective, but
Material design also introduced different features for our phone, such as a new
notification management system with different priority levels. For instance, we
can say which notifications are important and establish a time frame when we
don't want to be disturbed.
[3]
Getting Started
[4]
Chapter 1
Runtime permissions
This has changed with the introduction of runtime permissions. The idea here is to
accept the permission only when you need it. For instance, WhatsApp might not
need access to your microphone until your make a call or leave a voice message.
[5]
Getting Started
Power-saving optimizations
There is another improvement regarding the battery life of our phones since Lollipop;
this time, Google has introduced two new states: doze mode and app standby.
Doze mode improves the sleep efficiency of idle devices. If we turn off the screen
and are not using the phone, we enter the idle state. Previously, applications could
do network operations and continue working in the background; now, with the
introduction of doze mode, the system periodically allows our apps to work in
the background and perform other pending operations for a brief period of time.
Again, this brings in some consideration while developing; for instance, in this
mode, our apps can't access the network.
App standby is an induced idle mode for an app that has not been used for a while
and doesn't have any processes running in the background. It is used for an app
if it does not show any notifications and if the user has not explicitly asked it to
be exempt from optimization. This idle mode prevents the app from accessing the
network and executing pending jobs. When the power cable is connected, all apps in
a standby state are released, and the idle restrictions are removed.
[6]
Chapter 1
Text selection
In the previous versions, when a user selected text, a set of actions appeared on the
action bar, such as copy, cut, and paste. With this version, we can show these actions
and more, in a floating bar that will be presented above the selection:
Fingerprint authentication
In this version of Android, we can authenticate the use of our fingerprint.
The authentication can be at a device level to unlock the phone, not just to
unlock a specific app; so, we can authenticate users in our app based on how
recently they unlocked their device.
[7]
Getting Started
Direct share
Direct share is a new addition to simplify the content sharing process. Previously,
if we were in the gallery and wanted to share a picture to a contact in WhatsApp,
we had to click on Share, find WhatsApp in the list of apps, and then find a contact
inside WhatsApp to share this content. This process will be simplified, showing a
list of contacts with whom you can share the information directly:
These are the main new features that have been released with Android 6
Marshmallow; the complete list can be seen at http://developer.android.com/
preview/index.html.
[8]
Chapter 1
Creating MasteringAndroidApp
Now that we've seen the main features of the latest Android version, we can
introduce the app that we are going to develop during the book. This app will
include most of these features, but we will also spend time in the components
widely used in previous Android versions.
To master Android, we should be prepared to understand legacy code; for instance,
we might have to work on an app that still uses ListView instead of RecyclerView,
which is new. We will not always create apps from scratch with the latest components,
especially if we are professional Android developers. Also, looking at previous
components will help us understand the natural evolution of these components to
have a better idea of how they are now.
We will start creating this app totally from scratch, starting with the initial design,
having a look at the most used design and navigation patterns in Android, such as
tabs at the top, a sliding menu on the left side, and so on.
The app that we will develop, MasteringAndroidApp, is one with server-side
interaction. This app will show information that is stored in the cloud, and we will
create the cloud component, making our app communicate with it. The topic we
have chosen for the app is a job listing board, where we will create job offers on the
server side, and the users of the app can read these offers and receive notifications.
You can easily customize the topic; this will be an example where you can change
the information and create your own app with the same structure. In fact, it's better
if you think of your own idea because we will discuss how to publish the app in
Play Store and how to monetize it; we will add adverts, which will generate revenue
when the users click on it. So, if you apply what you learn using your idea, by the
time you finish the book, you will have an app ready to be distributed.
We will develop the app explaining the programming patterns that are most used in
Android as well as concurrency techniques and different methods to connect to rest
APIs or servers.
We'll not only be focusing on the backend, but also on the UI; by displaying the
information in an efficient way, using lists and grids, downloading images from the
Internet, and customizing fonts and views with the latest material design features.
We will learn the mechanism for debugging our apps, managing logs, and consider
the memory usage while learning how to identify and prevent memory leaks.
Our app will have an offline mode based on a database, where we will store the
content from the cloud. So, if the mobile loses connection, we can still show the
information available when we were last online.
[9]
Getting Started
To complete our app, we will add extra features such as push notifications, crash
reports, and analytics.
To finish, we will see how the Android build system works, exporting our app
in different versions as well as obfuscating the code to protect it and prevent
decompiling.
We have compressed a huge amount of information that will help you to master
Android by the end of the book; however, before starting with our app, let's get
the tools ready.
At the top of the website, you will have a link to download it depending on your
OS version.
[ 10 ]
Chapter 1
Once it's installed, we need to download an Android M SDK, which will provide all
the classes and resources necessary to develop an app for a specific Android version.
This is done through SDK Manager, a tool included inside Android Studio.
We can click on Tools | Android | SDK Manager or find a shortcut in the uppermost
bar of Android Studio.
Once we open SDK manager, we will see a list of the available SDK platforms and
SDK tools. We need to ensure that the latest version available is installed.
With this, we have all that we need to develop our app. In order to test it, it would
be ideal to have Genymotion, which is an Android emulator that will help us test
our app on different devices.
The reason we use this emulator instead of the Android default one is primarily the
speed. Deploying an app in Genymotion is even quicker than using a physical device.
Apart from this, we benefit from other features, such as resizable windows, copying
and pasting from our computer, and other smaller details that are time consuming
with the default emulator. It can be downloaded from https://www.genymotion.
com.
[ 11 ]
Getting Started
All we need to do is install it, and once opened, we can add emulators with the same
features included with existing devices.
Summary
In this chapter, we went through the important changes in the latest versions of
Android, highlighting Android Marshmallow and Material Design.
We explained what we will do in the app that we'll be building through the course
of this book and the tools that we'll need to create it.
In the next chapter, we will look at the existing design patterns in Android and
start designing our app.
[ 12 ]
www.PacktPub.com
Stay Connected: