IntermshipDemoReport 1
IntermshipDemoReport 1
IntermshipDemoReport 1
AN INTERNSHIP REPORT
Submitted by
Daraniya Bhakti
180540107035
CERTIFICATE
This is to certify that the internship report submitted along with the project entitled
Internship Project has been carried out by Daraniya Bhakti under my guidance in
DECLARATION
We hereby declare that the Internship report submitted along with the Internship
entitled Internship Project submitted in partial fulfillment for the degree of Bachelor
Tatvasoft under the supervision of Mrs. Sweety Patel and that no part of this report
has been directly copied from any students’ reports or taken from any other source,
At the very beginning, I would like to express my gratitude to the almighty for giving me
This internship report might never have been completed without the necessary practical
I express my heartfelt gratitude and deepest regard to my internal guide, Dr. Gopi
and Technology, Rajkot, Gujarat, for her constant guidance, helpful advice, and
continuous encouragement throughout the progress of this work, without which the work
I want to express my special thanks to Mrs. Sweety Patel, Learning and Development
I would like to convey my appreciation and thanks to those who have guided me
generously with the right knowledge for this report. Thank you to everyone who
responded each and every time in order to collect the necessary data.
ACKNOWLEDGEMENT ...................................................................................................ii
1.1 HISTORY.............................................................................................................. 1
REFERENCES ................................................................................................................. 38
1.1 HISTORY
1.3 SERVICES
1.4 TECHNOLOGIES
Backend
Combat development challenges by reinforcing the backend functioning of the
application with easy synchronization of different features and seamless
communication with relation or NoSQL database.
o .Net
o Java
o Node Js
o PHP
o ROR
Frontend
Reinvent the look and feel of web applications using JavaScript technologies along
with HTML and CSS to improve aesthetics and enhance the digital experience of
your customers.
o Angular Js
o React Js
o View Js
Mobile Apps
Transform web applications into leading-edge mobile applications by enabling
mobility across multiple platforms such as iOS, Android and Windows.
o Android
o iOS
o Flutter
o React Native
o Xamarin
Database
Consolidate data from multiple complex data sources and manage end-to-end data
integration to predict significant and actionable insights.
o SQL Server
o MySQL
o mongoDB
o ORACLE
o PostgreSQL
o Elasticsearch
1.5 VALUES
Quality Driven
Innovation
Well Established Processes
Broad Industry Experience
All students are allowed to choose their internship, and they can complete their internship
at any company. This is a great opportunity for every individual.
Every student has to submit a final report after completing the internship. The report
needs to be filled with the day-to-day activities of the student during the internship
period. The report should contain the company profile, the student’s project involvement,
professional growth, hard and soft skills, and learned technologies.
2.3 SCOPE
This report is a reflection of the days I have spent at the internship. It has a list of my
achievements, activities, and learning, as well as my mental and professional growth.
I feel I have improved myself. I am not standing in the place where I was before the
internship. I am ahead. This report will put light on that fact.
From this internship, I have learned how industry-level projects are built from scratch and
how to write code with proper coding standards and styling. It also helped me enhance
my soft skills, like talking with seniors, teamwork, management, and taking initiative.
During the internship, I was supposed to watch video lectures and, parallelly, have to
refer to different documents regarding Android. And by learning from that, I have
performed a demo of that particular topic. And then I have to use all that gained
knowledge in developing the tasks assigned to me. After completing those tasks, I have to
submit them to my mentor. Then they review it and guide me if any changes are required.
This way, my internship was carried out. As a result, this regular evaluation of my work
has greatly aided me in improving my work.
The main objective of this internship was to make candidates work-ready in mobile
development using Android technology. I was mainly focused on practical and self-
learning. I aimed to build my programming base and write code by following coding
standards. From an individual employee’s point of view, the main aims are:
The technology assigned to me in this internship was Android. They provided me with
materials to learn Android from scratch and advanced by referring to that.
Android is an open source and Linux-based Operating System for mobile devices
such as smart phones and tablet computers. Android was developed by the Open
Handset Alliance, led by Google, and other companies.
JAVA
KOTLIN
The technologies mentioned above are the ones in which we can develop Android
applications. Kotlin is preferred as the official language for Android development
by Google. But in this internship, I have started learning technology, first in the
Java language. Then, after gaining the proper knowledge and confidence, I started
learning the Kotlin language and using it for developing Android apps.
Android apps are used by almost half of the population of the world which makes the
android platform highly considerable when it comes to developing any kind of mobile
app. Tatvasoft is a reliable Android app development company that aims at improving
your digital experience while providing an engaging, user friendly mobile app.
Backend
o .NET
o JAVA
o PHP
o Node
o Ruby on Rails
Frontend
o JAVA
o KOTLIN
o Rx-JAVA
o Rx-KOTLIN
o Coroutines Kotlin
DevOps
o CI/ CD
o GitHub Actions
Database
o SQLite
o Realm
o Core Data
o Firebase
Testing
o Appium
o Katalon Test Studio
o Browser Stack
1. Discovery
2. UI/ UX Design
3. Development
4. API Integration
5. Testing
6. Deployment
7. Maintenance
Android Studio was announced on 16th May 2013 at the Google I/O conference as an
official IDE for Android app development. It started its early access preview from
version 0.1 in May 2013. The first stable built version was released in December
2014, starts from version 1.0.
Since 7th May 2019, Kotlin is Google's preferred language for Android application
development. Besides this, other programming languages are supported by Android
Studio.
Features:
Java is a programming language and a platform. Java is a high level, robust, object-
oriented and secure programming language. The primary objective of Java
programming language creation was to make it portable, simple and secure
programming language. Apart from this, there are also some excellent features which
play an important role in the popularity of this language. The features of Java are also
known as Java buzzwords.
Features:
1. Simple
2. Object-Oriented
3. Portable
4. Platform independent
5. Secured
6. Robust
7. Architecture neutral
8. Interpreted
9. High Performance
10. Multithreaded
11. Distributed
12. Dynamic
Features:
o Concise: Kotlin reduces writing the extra codes. This makes Kotlin more
concise.
o Null safety: Kotlin is null safety language. Kotlin aimed to eliminate the
Null Pointer Exception (null reference) from the code interoperable.
o Interoperable: Kotlin easily calls the Java code in a natural way as well
as Kotlin code can be used by Java.
o Smart cast: It explicitly typecasts the immutable values and inserts the
value in its safe cast automatically.
o Compilation Time: It has better performance and fast compilation time.
o Tool-friendly: Kotlin programs are build using the command line as well
as any of Java IDE.
o Extension function: Kotlin supports extension functions and extension
properties which mean it helps to extend the functionality of classes
without touching their code.
MODULES
In this whole internship period, I have learned all the topics from basics to advance in
Android technology, which are useful for building mobile apps. Below are topics which
were covered in it:
• Fundamentals
• Activities and Intents
• Testing, debugging and using support libraries
• User Interaction
• Delightful user experiences
• Testing user components
• Background tasks
• Triggering, scheduling and optimizing background tasks
• Preferences and settings
• Storing data using SQLite
• Sharing data with content providers
• Loading data using loaders
• Permissions, performance and security
• Firebase and AdMob
• Jetpack architecture components
• MVVM architecture
• Clean architecture
• Publish app on Google play store
After completion of every module, respective tasks were assigned to me, which I had to
complete as an application of the particular topic.
4.1 ASSIGNMENT - 1
4.1.1 Purpose
This was the first task assigned in the internship period. The purpose of assigning
this task was to get practice in designing proper Ui designs. In which I have to use
different layouts as per instructions and design the screens and required
functionalities.
4.1.2 Functionality
4.2 ASSIGNMENT - 2
4.2.1 Purpose
The purpose of this task was to get practical knowledge of the activity lifecycle
and the handling of its states. Along with that, there was the implementation of
intents. There are two types of intents, both of which were used here for different
functionalities.
4.2.2 Functionality
This app has two screens. On both screens, there is a list of activity lifecycle states
as per the activity has attained the states along with a time stamp at which it
stained that state and a small description regarding it.
List Screen: On this screen, along with the list of states, there are two buttons
named "Send" and "Grid." By clicking on Send, the user gets options to send the
text of the state log with a time stamp to someone via any other app like email,
whatsapp, and others that can send text files. And by clicking the grid button, the
grid layout screen is opened.
Grid Screen: the same state log along with a time stamp is displayed but in grid
view.
4.3 ASSIGNMENT – 3
4.3.1 Purpose
The purpose of this assignment was to learn how to do the debugging of our app
while in building stage, how to solve errors, testing and using support libraries.
4.3.2 Functionality
We can also solve or find errors by adding log messages to code. There are
different types of log levels in which messages can be visible those are:
4.4 ASSIGNMENT – 4
4.4.1 Purpose
This app is based on the Book Management System. The purpose of this task was
to get a grip on adding a navigation drawer to the home screen and menus on the
screen. In addition to that, we have to implement sorting, filtering, and search
functions in the list of books.
4.4.2 Functionality
Home Screen: Navigation drawer which has two options i.e. add book and book
list, which means they can navigate to that screen by selecting that.
Add Book Screen: On this screen, there is one form in which you can make an
entry for a book with details like name, author, launched date, type, genre, and age
group. Then, on clicking the "add" button, that entry is inserted into the database
and displayed in the book list.
Book List Screen: This screen as designed by using recycler-view. That screen
displays the list of all books with book name and author name of each entry. There
is also search bar on the top of screen, from which user can search book using
book name. It includes options menu in it from which user can sort list books by
book name and launch date, and also filtering can be done by author name, book
type and book genre. By clicking on the list entry, detail screen of that entry is
opened.
Book detail Screen: On this screen, all the details of the selected book are
displayed. By selecting an option menu in this screen, the user will be redirected
to the edit book form with filled data. From there, if the user wants to edit any
details, they can do so. By clicking the edit button, data will be updated in the
database also and in the book list.
Fig 4.8 Add Book Screen Fig 4.9 Book List Screen
4.5 ASSIGNMENT – 5
4.5.1 Purpose
In this app, the main aim was to learn proper design using Material elements,
implementing different user controls, adding drawables, how to use custom styles,
and making a UI that supports both orientation and user localization in one or
more languages.
4.5.2 Functionality
There was only one screen in this demo, containing a user profile form with two
sections, i.e., personal details and educational details. For proper submission,
validation for every input field was added. This validation checks the input on the
click of the Sign In button. If inputs are proper, toast for "Sign up successfully" is
displayed, and for improper values, an error is displayed in the field with invalid
data. In this form, many user input controls like edit text, radio buttons, date
pickers, check boxes, seek bars, and dropdowns are used.
Fig 4.14 User Form (2) Fig 4.15 User Form (3)
4.6 ASSIGNMENT – 6
4.6.1 Purpose
This task was assigned to learn how the UI testing is done for Android apps. I was
told to write test cases manually as per the requirements and also learn to record
the espresso test.
4.6.2 Functionality
I created a sample app for learning UI testing that includes one form with various
user input controls and a save button that validates the form and displays toast for
successful signup.
Firstly, I have added one espresso recorded test case for the whole app.
I also wrote manual test cases, which test the visibility of all user input controls
and test cases about validations and display of Toast.
4.7 ASSIGNMENT – 7
4.7.1 Purpose
The main purpose of this assignment was to learn the practical use of background
tasks: how to implement them, how to use them, and everything else. Background
tasks such as the use of an async task class, a broadcast receiver, services, and an
internet connection Along with it, there was also the use of an API to learn its
integration, to fetch data, and everything. Because this task was related to Google
maps, I also learned how to implement it; how to get the current location; how to
access the latitude and longitude of any location; how to add markers at our
required locations; and many other things. I need to use a broadcast receiver to
display the device's battery percentage.
4.7.2 Functionality
I have made three screens in this demo of a weather forecast app. In addition to
this, I also added a splash screen to the app.
City List Screen: On this screen, the list of bookmarked cities is displayed. Along
with the city name, there is one delete button for every item. By clicking on
which, the user can delete that bookmarked city from their list. In the action bar as
an option menu, there is a map icon from which the user can navigate to the
Google map screen.
Google map screen: On this screen, a Google map is displayed across the whole
screen, along with one bookmarked button. When a user selects a proper place or
city on the map, a marker is added at that location, and if the user wants to
bookmark that city, they must click the bookmark button. For multiple
bookmarks, users have to follow the same thing. If the selected place is not a
proper city or land area, then they want to be able to bookmark it.
City Detail Screen: A user can open this screen by clicking on the city name in
the list screen. So the weather forecast for that city is displayed here. Those details
are fetched from the Open Weather Map API, like temperature, minimum
temperature, maximum temperature, rain, wind speed, humidity, pressure, and
wind degree. On this screen, beside the city name, there is also a battery
percentage of the device mentioned along with an appropriate battery icon.
4.8 ASSIGNMENT – 8
4.8.1 Purpose
4.8.2 Functionality
This app has two screens. But only one is visible normally.
Main Screen: On that screen, there is a list of actions along with an individual
switch to on/off that action. If the action's switch is on, then it will be able to
notify the user when that action takes place. This notification will be sent by the
app even if the app is in the background.
Along with these notification actions, there are two items to set alarms such as:
Set alarm on predefined time
Set alarm after certain amount of time
In setting these alarms, the user has to select a specific time and turn on the switch
to set the alarm at a predefined time, and for another one, the user has to enter the
amount of time in seconds and turn the switch on. All notifications and alarms
have an event name and a short description in it.
4.9 ASSIGNMENT – 9
4.9.1 Purpose
The purpose of this task was to learn how to get access to the internal storage of a
device and display images from a specific folder in a gallery. For accessing
internal storage, runtime permissions are required, so learn how to ask for runtime
permissions. It also has a feature to change the theme of the app by changing the
action bar and status bar color. Shared preferences were used to store the choices
of themes and folders to view images.
4.9.2 Functionality
In this app there are 3 screens designed to make the gallery app.
Images Screen: This is the main screen, which is designed using a grid layout to
show a grid of images. It displays all the images from a selected folder in the
device's internal storage. It has one option menu with a settings option. From
there, we can open the settings screen.
Settings Screen: There are two options on this screen: the first is to customize the
theme by choosing colors for the action bar and status bar, and the second is to
choose the folder in internal storage from which the user wants to display images.
Before selecting a folder, the user has to allow the runtime permission for internal
storage access and then images are displayed in the images screen.
Full Image Screen: This screen is opened by clicking on any image in the grid
layout on the images screen. Then the user can slide to the next and previous
image by clicking the navigation arrows at the bottom of the screen.
4.10 ASSIGNMENT – 10
4.10.1 Purpose
This app was assigned to get a grip on using an SQLite database. In that, I have to
learn the creation of databases, creating tables and applying different operations
on them, like insert, update, and delete. By applying different queries, we learn
how to get data as per requirements.
4.10.2 Functionality
In this app, I have to make a user directory app, in which one can add user data,
display it, update it, and delete it. There are two screens in this app that store the
user’s data in a database.
User List Screen: On this screen, a list of users is displayed with details like
name, blood group, telephone number, country, and an appropriate icon as per
selected gender. Each entry has two corresponding icons called the "edit" button
and the "delete" button. The Edit button is used to edit the details of that user and
by clicking the Delete button, one alert dialogue is a popup to verify that deleting
the entry and selecting the Ok button means that entry is deleted from the database
as well as that list. There is also one floating action button at the bottom of the
screen. By pressing it, a new screen is opened in which the user form is there.
Add User Screen: When a user wants to add an entry, they can open this screen
by clicking on the add button in the list screen. On this screen, a form is displayed
in which they have to enter all the details properly. And by clicking the add user
button, form validation takes place, and if all the data is proper, it is inserted into
the database and displayed in the user list. By clicking on Edit, the user is
redirected to this screen, but this time the form is pre-filled with all the details and
allows the user to edit it and update it in the database.
Fig 4.29 User List Screen Fig 4.30 Add User Screen
Fig 4.31 Update User Screen Fig 4.32 Delete User Screen
4.11 ASSIGNMENT – 11
4.11.1 Purpose
The goal of this project was to learn how to create a view pager fragment and how
to set the screen's tabs. It was primarily due to content providers' applications.
How to utilize it and extract data from the phone book, audio file list, and other
areas of the device.
4.11.2 Functionality
This app has only one screen, but that screen is divided into two sections due to
the addition of a tab view (Fig 4.33). So in one tab I have added a list of contacts
in my phone book and in the other a list of audio files from device storage.
4.12 ASSIGNMENT – 12
4.12.1 Purpose
The purpose of this app was to learn how to implement the view pager fragment
and how to set the tabs on the screen. And here it was the application of loaders. I
learned the implementation of loaders. There are two types of loaders, i.e., cursor
loader and Async Task loader. How to use it and get the data from the device's
contacts list, audio files list, and many other things.
4.12.2 Functionality
This app has only one screen, but that screen is divided into two sections due to
the addition of a tab view (Fig 4.33). So in one tab I have added a list of contacts
in my phone book and in the other a list of audio files from device storage.
Fig 4.33 Contact List Tab Fig 4.34 Audio files List Tab
CHAPTER – 5 CONCLUSION
During our internship program, we have gained a lot of knowledge in terms of improving
our practical skills. The various types of tasks and training that I have completed over the
last four months of my internship have increased my knowledge of developing mobile
apps. I am very glad to see that what I have learnt at university can be repeated in the
working world. In this real-life situation, I was able to apply our theoretical knowledge.
During these past four months, I have been able to see the different theoretical aspects
and methodologies. I've been able to satisfy my curiosity about how to practically develop
mobile apps through this internship program.
Generally, the internship program laid a sound foundation for us to start our career. It
would definitely be sensible to scale this practice up and to replicate it in other disciplines
as well.
REFERENCES
Android Developers
Developers