Google Android Developer
Google Android Developer
On
(ESTD-2007)
DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING
CERTIFICATE
This is to certify that the dissertation entitled “GOOGLE ANDRIOD DEVELOPER” that
is being submitted by PULI ANITHA, 22X55A0230. Under the Guidance of Mr. A.
RAGHAVENDRA PRASAD M.Tech for Full internship of award of B.Tech Degree
in ELECTRICAL AND ELECTRONICS ENGINEERING in the SANTHIRAM
ENGINEERING COLLEGE, Nandyal (Affiliated to J.N.T. University, Anantapuramu)
is are cord of bonafied work carried out by them under our guidance and supervision.
Date of submission :
STUDENT’S DECLARATION
This will certainly not be complete without acknowledgements paid to all these who have
helped us in doing our Internship work
I manifest our heartier thankfulness pertaining to our contentment over
Mr.V. RAMANJANEYULU garu, as Internship guide with whose adroit concomitance the
excellence has been exemplified in bringing out this Internship work with artistry.
It is a great pleasure to acknowledge our profound sense of gratitude to our Head of
Department Mr. M.Y. VEERESH garu, his valuable and inspiring guidance, comments and
suggestions and encouragement towards the course of this Internship.
Involuntarily, I are precious to divulge our sincere gratefulness to our principal, the Dr.
M.V. SUBRAMANYAM garu, who has been observed posing valance in abundance
forwards our individuality to acknowledge our Internship work tendentiously.
At the outset I thank our Honorable chairman Dr. M. SANTHIRAMUDU garu,
correspondent, SANTHIRAM ENGINEERING COLLEGE for providing us with good
facilities and his moral support throughout the course.
I also express the overall exhilaration and gratitude to all the Teaching and Non Teaching
staff of EEE Dept., who admitted our Internship work and accentuated our attitude.
I also extend our heartfelt and sincere gratitude to our beloved parents for their tremendous
motivation and moral support.
SUBMITTED BY
P. ANITHA
22X55A0230
TABLE OF CONTENTS
1.Executive Summary
2. Introduction
5.Outcomes
6. Conclusion
7. Refferences
CHAPTER 1: EXECUTIVE SUMMARY
• Creating intuitive, reliable mobile apps using the android services and components
• Create a seamless user interface that works with different mobile screens
1.2. Outcomes:
Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs
Google Developer Student Clubs, a program of university based community groups for
students interested in Google developer technologies, recently started hosting study groups
calledAndroid Study Jams. The goal is to Learn Android app development through hands-
on codelabs in an online curriculum provided by Google. There are two tracks: one for
students who are new to programming, and one for those who already have experience.
Interested in participating? Facilitator materials are available for anyone to host Android
Study Jams in their community - take a look and start building apps.
Google Developer Student Clubs are dedicated to helping students learn programming
together, in a fun and interactive setting. While over 50 thousand students from all over the
worldhave participated in these Android workshops, we wanted to highlight the exciting
work from groups in Indonesia, Turkey, and Nigeria. From programming in Kotlin to
building a series of apps, these students have put their minds to work.
CHAPTER 2 : INTRODUCTION
• Large Market Reach: Android boasts the biggest market share in the mobile operating
system landscape. Developing for Android allows you to reach a wider audience compared
to other platforms.
• Open-Source Platform: The open-source nature of Android grants developers greater
flexibility and customization options when building apps.
• Rich Development Tools: Google offers a robust suite of tools like Android Studio, an
IDE specifically designed for Android app development, to enhance development
efficiency.
• Vibrant Developer Community: A vast and active community of Android developers
exists, providing extensive support, learning resources, and collaboration opportunities.
The Android development framework provides the foundation for building Android
applications. It offers a collection of pre-built components and functionalities to streamline
development. Here's a quick overview:
• Core Components: These include Activity Manager (app lifecycle), View System (UI
elements), Resource System (app resources), and Services (background tasks).
• APIs: Android APIs grant access to device features (camera, sensors), network
functionalities, and integration with Google services (Maps, YouTube).
• Open-Source: Developers benefit from flexibility and customization due to the open-
source nature of the framework.
• Development Tools: Google offers tools like Android Studio (IDE) to simplify the
development process.
• Learning Resources: A vast developer community and extensive documentation from
Google provide ongoing support and learning opportunities.
Mastering this framework empowers developers to build feature-rich and user-friendly
applications for the widely used Android platform.
Objective of the Activity Done: Starting with Kotlin and Android Studion
Detailed Report:
• A Kotlin program requires a main function as the entry point of the program.
• To define a function in Kotlin, use the fun keyword, followed by the name of the
function,any inputs enclosed in parentheses, followed by the function body enclosed in
curly braces.
• The name of a function should follow camel case convention and start with a lowercase
letter.
• Use the println() function call to print some text to the output.
• Refer to the Kotlin style guide for formatting and code conventions to follow when
codingin Kotlin.
• Troubleshooting is the process of resolving errors in your code.
• Use the val keyword to define a variable that is read-only where the value cannot change
once it's been assigned.
• Use the var keyword to define a variable that is mutable or changeable.
• To declare a variable, start with the val or var keyword. Then specify the variable name,
data type, and initial value. For example: val count: Int = 2.
• With type inference, omit the data type in the variable declaration if an initial value
isprovided.
• Some common basic Kotlin data types include: Int, String, Boolean, Float, and Double.
• Use the assignment operator (=) to assign a value to a variable either during declaration
ofthe variable or updating the variable.
• You can only update a variable that has been declared as a mutable variable (with var).
• Use the increment operator (++) or decrement operator (--) to increase or decrease
thevalue of an integer variable by 1, respectively.
• Use the + symbol to concatenate strings together. You can also concatenate variables
ofother data types like Int and Boolean to Strings.
• Functions are defined with the fun keyword and contain reusable pieces of code.
• Functions help make larger programs easier to maintain and prevent the
unnecessaryrepetition of code.
• Functions can return a value that you can store in a variable for later use.
• Functions can take parameters, which are variables available inside a function body.
• Arguments are the values that you pass in when you call a function.
• You can name arguments when you call a function. When you use named arguments,
youcan reorder the arguments without affecting the output.
• You can specify a default argument that lets you omit the argument when you
call afunction.
• To create a new project: open Android Studio, click New Project > Empty Activity >
Next,enter a name for your project and then configure its settings.
• To see how your app looks, use the Preview pane.
• Composable functions are like regular functions with a few differences: functions names
are capitalized, you add the @Composable annotation before the function, @Composable
functions can't return anything.
• To create an AVD, open your project, click Tools > Device Manager, and use the Device
Manager to select a hardware device and system image.
• To run your app on a virtual device, ensure that you created a device, select the device
from the toolbar menu, and click .
• You can run Android apps on your physical device through a cord or through Wi-Fi.
• Windows users need to install a USB debugging driver to run apps on their physical device.
• If you are running your app through Wi-Fi, you can pair using a QR code or a 6 digit code.
• Jetpack Compose is a modern toolkit for building Android UI. Jetpack Compose simplifies
and accelerates UI development on Android with less code, powerful tools, and intuitive
Kotlin APIs.
• The user interface (UI) of an app is what you see on the screen: text, images, buttons, and
many other types of elements.
• Composable functions are the basic building block of Compose. A composable function is
a function that describes some part of your UI.
• The Composable function is annotated with the @Composable annotation; this annotation
informs the Compose compiler that this function is intended to convert data into UI.
• The three basic standard layout elements in Compose are Column, Row, and Box. They
are Composable functions that take Composable content, so you can place items inside.
For example, each child within a Row will be placed horizontally next to each other.
• The Resource Manager tab in Android Studio helps you add and organize your images
andother resources.
• An Image composable is a UI element that displays images in your app.
WEEK-2
Learned Conditions in
Day-1 Conditions in Kotlin
Kotlin
Learned Nullability in
Day-2 Nullability in Kotlin
Kotlin
Learned about
properties and
Day-4 Objects in Kotlin
functionalities of
Objects in Kotlin
Learned Lambda
Day-6 Lambda Expressions in Kotlin
Expressions
4.2 WEEKLY REPORT
Detailed Report:
Conditions In Kotlin:
Conditions are commands in programming that make decisions, allowing code to behave
differently based on different conditions. Decision-making in programming involves writing
instructions for how a program should act in different situations. In Kotlin, we use an if/else
statement to perform different actions based on a condition.
ELSE Branch: The “else” keyword in programming provides an alternative action when
the“if” condition is not met.
WHEN Statement: The `when` expression in Kotlin is used for handling multiple
conditions,similar to a switch statement in other languages.
Nullability in KOTLIN improves code reliability by differencing between Nullable and Non-
Nullable types, marked with “?” for Nullable types.
In Kotlin, classes are blueprints for creating objects that encapsulate data and behavior.
Objects are instances of classes that hold unique state and can perform actions defined by
their class.
1. Introduction to classes
o Default Constructor
o Parameterized Constructor
o Primary
o Secondary
o HAS-A (Aggregation)
o IS-A (Inheritance)
9.Visibilty Modifiers
o Public
o Protected
o Private
o Internal
Function Types And Lambda Expressions In Kotlin:
“Function types” specify the types of parameters and return values for functions, “Lambda
expressions” provide concise syntax for defining anonymous functions inline.
Learned about
Day-4 Intro to Tip Calculator
Calculator
Detailed Report:
Introduction
A dice roller app is a basic yet engaging application that simulates the rolling of a
dice. It'sa popular choice for beginners to learn Android development due to its simplicity
and the opportunity to explore fundamental concepts. This report outlines the core
components and stepsinvolved in building a dice roller app.
Core Components
• UI (User Interface):
• Logic:
o Image resource management to display different dice faces based on the random
number.
Development Steps
1. Project Setup
2. UI Design
3. Image Resources
• UI (User Interface): The visual elements users interact with, such as buttons, text fields,
and images.
• State: Data that can change over time and affects the UI's appearance, such as user input,
application data, and network responses.
Core Concepts
• Views: Building blocks of the UI. They represent visual elements on the screen and handle
user interactions.
• Layouts: Organize views into hierarchies to define the UI structure.
• View Groups: Containers that hold other views, such as LinearLayout, RelativeLayout,
and ConstraintLayout.
• State Management: Techniques for storing and managing application data that affect the
UI’s Managing State
• Instance State: Save and restore UI state when an activity or fragment is destroyed and
recreated.
• Shared Preferences: Store simple key-value pairs for persistent data.
• ViewModel: Store and manage UI-related data that survives configuration changes.
• StateFlow and SharedFlow: For reactive state management with Kotlin Flow.
Best Practices
Learned about
Day-4 Intro to Affirmations app
Affirmation app
Learned about
Day-5 Scrollable List
Scrollable List
Objective of the Activity Done: Built Scrollable lists and Beautiful apps
Detailed Report:
Kotlin is a versatile and modern programming language that combines concise syntax
withpowerful features for both object-oriented and functional programming paradigms. Its
interoperability with Java makes it suitable for a wide range of applications, from Android
development to backend services and web applications. By understanding these
fundamentals, developers can leverage Kotlin's strengths to write efficient, maintainable,
and scalable code across various platforms
In this guide, you will learn how to build an Affirmations app using Jetpack Compose.
Theapp will display a list of encouraging messages (or quotes!) paired with beautiful images,
designedto bring positivity to your day. By leveraging Jetpack Compose, you can create a
smooth, scrollable list that presents this uplifting content in an engaging manner. The key
concepts include data classes, composable functions, and efficient list management with
‘LazyColumn’
Creating scrollable lists in Jetpack Compose involves defining a data model, crafting
individual item components using ‘Card’ composables, and organizing these items within a
‘LazyColumn’ for efficient scrolling. Utilizing modifiers and surface composables ensures
that the UI is well-styled and responsive. The declarative nature of Compose simplifies the
process, allowing developers to build dynamic and interactive lists with ease.
WEEK-5
Learned about
Material Design with
Day-1 Material Design with
Compose
Compose
Learned about
Material Theming with
Day-2 Material Theming with
Jetpack Compose
Jetpack Compose
Learned App
Day-4 Intro to App architecture
architecture
Learned about UI
Day-5 Architecture: The UI Layer
Layer
Learned about
Day-6 ViewModel
ViewModel
4.5 WEEKLY REPORT
Material Design, created by Google, offers guidelines for building high-quality digital
experiences for Android and other platforms. This module focuses on Material Theming,
which lets you customize your app's colors, typography, and shapes. You'll also learn to add
a top app bar with the app's name and icon. Prerequisites include familiarity with Kotlin,
building layouts and simple lists in Compose. You'll learn to apply Material Theming, add
custom colors, fonts, and shapes, and create a top app bar. You'll need the latest version of
Android Studio and an internet connection to download starter code and fonts.
At last I created a Material app by customizing color palettes for light and dark themes,
defining component shapes, downloading and integrating custom fonts, and designing a top
bar for branding. Through this codelab, you learned how to use Material Theming to
personalize colors, typography, and shapes. Key files include Theme.kt for theme settings,
Color.kt for colordefinitions, Shape.kt for shapes, and Type.kt for typography. These skills
enable you to craft unique and cohesive app designs.
1. onCreate 5. onPause
2. onStart 6. onStop
3. onRestart 7. onDestroy
4. onResume
A typical Android app contains multiple app components, including activities, fragments,
services, content providers, and broadcast receivers. You declare most of these app
components in your app manifest. The Android OS then uses this file to decide how to
integrate your app intothe device's overall user experience.
In Compose, the only way to update the UI is by changing the state of the app. What
you can control is your UI state. Every time the state of the UI changes, Compose recreates
the parts of the UI tree that changed. Composables can accept state and expose events.
Unidirectional data flow: A unidirectional data flow (UDF) is a design pattern in which
state flows down and events flow up. By following unidirectional data flow, you can
decouple composables that display state in the UI from the parts of your app that store and
change state.
The UI update loop for an app using unidirectional data flow looks like the following:
• Event: Part of the UI generates an event and passes it upward—such as a button click
passed to the ViewModel to handle—or an event that is passed from other layers of your
app, such as an indication that the user session has expired.
• Update state: An event handler might change the state.
• Display state: The state holder passes down the state, and the UI displays it.
The use of the UDF pattern for app architecture has the following implications:
Introduction to
Day-1 Learned about
Navigation and
Navigation and
Cupcake App
Cupcake App
Learned adaptive
Day-4 Adaptive layouts
layouts
Built an adaptive
Build an adaptive app
Day-5 appwith dynamic
withdynamic
navigation
navigation
• Single Source of Truth: Navigation graphs provide a centralized representation of the app's
navigation structure, making it easier to visualize and manage.
• Type Safety: Navigation in Jetpack is type-safe, meaning you can navigate between
destinations using actions defined in the navigation graph, reducing runtime errors.
• Back Stack Management: Jetpack Navigation manages the back stack automatically,
ensuring a consistent back navigation experience for users.
• Deep Linking: It supports deep linking, allowing users to navigate directly to specific
destinations within the app from external sources like URLs.
Navigation Graph
A navigation graph is an XML resource file that defines all possible destinations and
the actions that can be taken to navigate between them. It acts as a visual representation of
the app's navigation hierarchy.
NavHostFragment
The NavHostFragment is a container within your layout that hosts the navigation graph.
It dynamically swaps out fragments defined in the navigation graph as the user navigates
through the app.
NavController
One of the great advantages of developing our app in the Android platform is the vast
opportunity to reach users in different kinds of form factors, such as wearables, foldables,
tablets,desktop, and even TV. When using an app, your users may want to use the same app
on large screen devices to take advantage of the increased real estate. Increasingly, Android
users use theirapps on multiple devices of varying screen sizes, and expect a high-quality user
experience acrossall devices.
So far, I learned to make apps primarily for mobile devices. In this, I’ve learned how
to transform my apps to make them adaptive to other screen sizes. I'll use adaptive navigation
layoutpatterns that are beautiful and usable for both mobile and large screen devices, such
as foldables,tablets, and desktop.
WEEK-7
In this unit, I have learnt on how to build an Android app that can retrieve data from
the internet. The key concepts covered include Kotlin coroutines for asynchronous
programming andRetrofit for consuming RESTful web services.
Introduction to Coroutines
• async: Starts a coroutine and returns a Deferred, which represents a future result.
• runBlocking: Blocks the current thread until its scope completes, useful in main functions
or tests.
HTTP (Hypertext Transfer Protocol) is the foundation of any data exchange on the
Web. REST (Representational State Transfer) is an architectural style that uses HTTP
methods to create, read, update, and delete data. RESTful services use standard HTTP
methods:
In this we may learn about the data layer and its two basic components: repositories and the
datasource. We will also cover data immutability, error handling, threading, testing in this
concept.
• App overview
From this topic I had learnt about the load and display images from the internet by using the
above steps like add repository and manual dependency injection steps and also load and
display images from the internet steps finally I am concluding that these are the steps I used
in downloading and display image from the internet and we may apply architecture best
practices tothe app and use coil to download and display images.
Objective of the Activity Done: Introduction to SQL, Use Room for Data Persistence
Detailed Report:
Introduction
SQL (Structured Query Language) is a specialized programming language essential for
managing and manipulating data within relational database management systems (RDBMS).
Its primary purpose is to provide a standardized method for interacting with databases,
allowing usersto retrieve, manipulate, and define data efficiently. SQL consists of several
key components:
Importance of SQL:
SQL plays a crucial role in modern data management and is indispensable for various
reasons.
Room is a powerful library provided by Android that simplifies and streamlines data
persistence in SQLite databases. It serves as an abstraction layer over SQLite and offers
several benefits for Android developers:
Brief
Day Learning Outcome Person in
description
of the Charge
signature
daily
activity
Learned about Datastore
Day-1 Introduction to & Learned about
Datastore &
Preferences Preferences with
with Datastore Datastore
Save Learned how to save
Day-2 Preferences Preferences locally with
locally with
Datastore &Learned
Datastore &
Introduction to about
Work Manager WorkManager
Learned how to
Implementing
Day-3 WorkManager Implement work
& Advanced manager & Learned
WorkManager about WorkManager and
and Testing
Testing
Learned about Android
Day-4 Android View
View System & Learned
System & Build
how to buildan Android
an Android app
app with Views
withViews
Compose in Learned about compose
Day-5 Views & Views in Views & Learned
in Compose about Views in
Compose
Learned about View
View
Day-6 Interoperability in
Interoperability
Compose & Learned
in Compose &
how
Add Compose
Add Compose to a
to a legacy app
legacyapp
4.8 WEEKLY REPORT
Objective of the Activity Done: Store and access data using Keys with Datastore, Schedule
tasks with WorkManager
Detailed Report:
Data Store is a modern way to store data in Android, replacing Shared Preferences. It offers
two types: Preferences Data Store for simple key-value pairs and Proto Data Store for
structured data, allowing for easier and safer data handling.
Datastore is a modern Android library for storing user preferences locally using a key- value
store or typed objects. It provides a more efficient and type-safe alternative to Shared
Preferences, using Kotlin Coroutines for asynchronous data access. Datastore supports both
preferences and proto formats, allowing for flexible data storage solutions. This helps
improve app performance and maintainability.
Creating a flight search app in Kotlin involves building a user-friendly interface to searchfor
flights, integrating APIs to fetch real-time flight data, and implementing features like
filteringby price, duration, and airlines. The app can use Recycler View for displaying search
results and include navigation components for seamless user experience. Additionally,
incorporating local storage for recent searches can enhance usability.
WorkManager is a powerful and flexible library for managing background work in Android
applications. It provides a robust solution for scheduling deferrable, asynchronous tasks that
are guaranteed to execute even if the app exits or the device restarts. Here are the key
takeaways:
• Versatility
• Constraints and Conditions
• Data Handling
• Testing Support
5. Views in compose
6. View interoperability
This course may end here, but this is just the beginning of your journey into Android app
development!
In this course, I had learned to build apps using Jetpack Compose, the modern UI toolkit for
building native Android apps. Throughout this course, you built apps with lists, single or
multiple screens, and navigated between them. You learned to create interactive apps, made
yourapp respond to user input and updated the UI. You applied Material Design and used
colors, shapes, and typography to theme your app. You also used Jetpack and other third-
party libraries to schedule tasks, retrieve data from remote servers, persist data locally and
more.
5. OUTCOMES DESCRIPTION
5.1. Technical Skills Acquired as Android Developer Intern
Android development is a key area in mobile application development, enabling the creation
of applications for devices running the Android operating system. This document aims to
provide a comprehensive overview of the outcomes associated with mastering Android
development.
• Overview of Android OS: A solid understanding of the Android operating system, its
architecture, and its various components.
• Android Versions and API Levels: Familiarity with different Android versions, API
levels, and their features.
• Development Tools: Proficiency in using Android Studio, the official IDE for Android
development, and other essential tools such as Gradle, ADB, and the Android Emulator.
2. Proficiency in Java and Kotlin Programming Languages
• Java Basics: Mastery of Java fundamentals, as it is the primary language for Android
development.
• Kotlin Integration: Understanding Kotlin, the modern, statically-typed programming
language that is fully interoperable with Java and now officially supported by Google for
Android development.
• Coding Standards: Adherence to best practices and coding standards in both Java and
Kotlin to write clean, efficient, and maintainable code.
3. User Interface Design and Development
• UI/UX Principles: Knowledge of user interface (UI) and user experience (UX) design
principles specific to mobile applications.
• XML Layouts: Proficiency in designing responsive and dynamic UI layouts using XML.
• Room Persistence Library: Use of Room, an abstraction layer over SQLite, to simplify
database operations.
• Shared Preferences: Utilization of Shared Preferences for simple data storage.
• HTTP Requests: Mastery of making network requests using libraries such as Retrofit,
OkHttp, and Volley.
• RESTful APIs: Understanding of REST principles and the ability to consume RESTful
APIs.
• JSON Parsing: Proficiency in parsing JSON responses to retrieve and display data.
• Library Management: Ability to integrate and manage third-party libraries and SDKs
using Gradle.
• Popular Libraries: Familiarity with popular libraries such as Glide, Picasso, Dagger, and
Firebase.
8. Testing and Debugging
• Unit Testing: Writing unit tests using JUnit and Mockito to ensure code reliability.
• Debugging Tools: Proficiency in using Android Studio's debugging tools to identify and
fix issues.
9. App Deployment and Distribution
• APK Generation: Understanding the process of generating signed APKs for deployment.
• Google Play Store: Knowledge of the Google Play Store submission process, including
the creation of store listings, managing app versions, and tracking app performance using
the Google Play Console.
• Data Privacy: Ensuring user data privacy by following best practices and regulations such
as GDPR.
• Security Measures: Implementation of security measures to protect sensitive data and
prevent common vulnerabilities such as SQL injection, XSS, and insecure data storage.
• Ethical Coding: Adherence to ethical standards in coding practices, including
accessibility and inclusivity considerations.
setContent { DiceRollerTheme
{
Surface(modifier = Modifier.fillMaxSize(), color =
MaterialTheme.colorScheme.background) {
DiceRollerApp()
}
}
}
}
}
@Preview
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage(modifier =
Modifier.fillMaxSize().wrapContentSize(Alignment.Center))
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) { var
result by remember { mutableStateOf(1) }
val imageResource = when(result) { 1 ->
R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5 else ->
R.drawable.dice_6
}
Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) {
Image(painter = painterResource(imageResource), contentDescription =
result.toString())
1. https://developer.android.com/courses/android-basics-compose/unit-1
2. https://developer.android.com/courses/android-basics-compose/unit-2
3. https://developer.android.com/courses/android-basics-compose/unit-3
4. https://developer.android.com/courses/android-basics-compose/unit-4
5. https://developer.android.com/courses/android-basics-compose/unit-5
6. https://developer.android.com/courses/android-basics-compose/unit-6
7. https://developer.android.com/courses/android-basics-compose/unit-7
8. https://developer.android.com/courses/android-basics-compose/unit-8