Final Internship Report
Final Internship Report
Belagavi-590018, Karnataka
An Internship Report On
“IP Mobile Android”
Submitted in partial fulfillment for the award of the degree in
BACHELOR OF ENGINEERING
IN
INFORMATION SCIENCE & ENGINEERING
Submitted by
SHANJANA S USN: 1BH19CS098
CERTIFICATE
It is certified that the internship Work entitled “IP Mobile Android” carried outby Shanjana S,
[1BH19CS098], the Bonafide student of AMC Engineering College, Bangalore in partial
fulfillment for the award of Bachelor of Engineering in Information Science and Engineering
of Visvesvaraya Technological University, Belagavi during the year 2023-2024. Thus, it is certified
that all corrections/suggestion indicated for Internal Assessment have been incorporated in the
report submitted to the Department of Information Science and Engineering. The Internship report
has been approved as it satisfies the academic requirement in respect of internship report prescribed for
the said degree.
External Viva
1 ………………....... ……………………
2 …………………… …………………....
DECLARATION
I, Student Name [usn] student of VIII Semester, B.E in Information Science and Engineering, AMC
Engineering College, hereby declare that the Internship entitled FRONT-END WEB
DEVELOPMENT has been carried out by us and submitted in partial fulfilment of the requirements
for the award of the degree of Bachelor of Engineering in Information Science and Engineering of
Visvesvaraya Technological University, Belgaum during the academic year 2024 - 2025.
Place: Bengaluru
Date:
[Student Name]
[USN]
[Signature]
Any achievement, be it scholastic or otherwise does not depend solely on the individual efforts but on
the guidance, encouragement and cooperation of intellectuals and elders. I would like to take this
I heartily extend my words of gratitude to my external guide [External Internship guide], for her
I heartily extend my words of gratitude to my internal guide [Internal Internship guide], for her
I heartily extend my words of gratitude to my internship coordinator Mrs. Vinutha M, for her valuable
I would like to express my immense gratitude to Head of Department Dr. R Amutha, for her unfailing
I would like to take this opportunity to express my gratitude to the Principal, Dr. Yuvaraju B N, for
Finally, a note of thanks to the Department of Information Science and Engineering, both teaching and
Last but not least, we acknowledge the support and the feedback of our parents and friends, for their
STUDENT NAME
[USN]
i
ABSTRACT
This report contains the work done during the internship period which was held in TATA ELXSI. This
report shows an overview of the tasks done during the period of internship in details. The purpose of
this report is to explain what I did and learned in one month of internship in TATA ELXSI from 29
august 2022 to 30 September 2022.
In internship as an android developer, my main focus or objective was to learn android, software
development lifecycle, improve my coding style, and know about new technology. Now a day, there
are lots of software engineers working on new technology and made lot of android apps. Android apps
can make our daily life become easier. In future software engineers as a career will have some good
opportunities. This report takes us through all the details of an actual project and experience gathered
during this internship.
The consent of all chapters is broadly explained precise, brief and clearly. In the opening, chapter 1
gives the objectives and importance of internship. The second chapter give details about the project in
which I have worked. The third, fourth, fifth chapters give details about the company background
including its mission, vision and objectives those runs through the company consultation. The sixth and
seventh chapters gives the details about the task performed and work schedule weekly
ii
LIST OF CONTENTS
3. COMPANY PROFILE 4
4. COMPANY DIVISION 7
5. ORGANISATION STRUCTURE 8
6. TASK PERFORMED 10
6.1 Introduction 10
7. WORK SCHEDULE 25
iii
7.2 Week no. 2 25
8. CONCLUSION 28
REFERENCES 29
APPENDIX 30
iv
LIST OF FIGURES
v
LIST OF TABLES
vi
IP MOBILE ANDROID 2022-2023
Chapter 1
INTERNSHIP OBJECTIVES
In today’s labour market, employers rely heavily on resumes that demonstrate relevant work history,
whether it is from actual job experience, volunteer work, or interning at a company. An internship is
an official program offered by organizations to help train and provide work experience to students
and recent graduates. The concept of working as an intern began a long time ago but has drastically
evolved over the years. Internships first started as a labourer who would take on young individuals
and teach them their art or trade. In exchange for being taught a skill, the trainee would agree to
work for the labourer for a specific time. Even then, the purpose of an internship or rather an
apprenticeship was to gain new skills to be able to obtain future work.
Getting work experience is an essential aspect of starting your career as a young graduate. Job
experience is not just restricted to an office job with a large organization. You can get an internship
at a small company or get experience by freelancing. Any experience where you use skills that you
can transfer to your future career is an excellent addition to your CV. By partaking in an internship,
you will be able to gain real-life exposure, grow your knowledge and determine if you are in the
right career field.
An internship will help you learn about your capabilities and ultimately encourage you to have a
greater understanding of your strengths and weaknesses. It can be a challenging experience at times.
Still, the benefits you gain from being pushed out of your comfort zone will help you tremendously
in the future when you are presented with a difficult task or situation.
Everyone knows that the job market is competitive, especially in the current climate. There may be
hundreds of other candidates applying for the same role as you. As a result, you need a way to help
give you a competitive edge and make yourself stand out. Internships can provide you with
experience and the skills to help make employers notice you and as well as showing them that you
would be a good fit for their company. It also shows that you are someone who has the drive and
passion and has been motivated to acquire experience outside of just University.
Internships play a crucial role in shaping one’s career. It not only helps undergraduates and
graduates gain real exposure to working environments but also helps them develop the necessary
skills required to stand out in a saturated job market.
Chapter 2
IP MOBILE ANDROID:
Working in this project gave me clear idea of how an OTT streaming service works using android
studio in different devices like mobile and android TV.
OTT generally refers to the commercialized practice of streaming content on the world wide web.
OTT stands for “over-the-top” platforms, which provide a simple and exclusive way to enjoy
entertainment over the internet. Over-the-top (OTT) video viewers: Individuals who watch video via
any app or website that provides streaming video content and bypasses traditional distribution.
Examples include HBO Now, Hulu, Netflix, Amazon Video, YouTube/YouTube Red and Sling TV.
Android Studio provides a unified environment where you can build apps for Android phones,
tablets, Android Wear, Android TV, and Android Auto. Structured code modules allow you to
divide your project into units of functionality that you can independently build, test, and debug. Use
the Android Studio Layout Editor to create and preview your app's UI by dragging elements into a
visual designer, so you don't have to write XML by hand.
We created an OTT service named TEFLIX which works in android TV and mobile. It has modules
like movies, sports, games, apps, settings etc. We have subscription plans through which the users
pay to use this OTT service. It allows members to rent movies and also watch movies and TV shows
online with a computer, game console, smartphones, tablet or android TV.
This is an IP project that is Internal Project which is not submitted to the client. I was asked to write
JUnit test codes as a part of developer testing as the project was halfway done when I was into the
project. I was asked to write unit test code in JUnit version 4 and then convert that test code to JUnit
version 5.
JUnit is a unit testing open-source framework for the Java programming language. Java Developers
use this framework to write and execute automated tests. In Java, there are test cases that have to be
re-executed every time a new code is added.
Chapter 3
COMPANY PROFILE
Tata Elxsi is among the world’s leading design and technology service providers across
industries, including Automotive, Broadcast, Communications, Healthcare, and Transportation.
They help customers reimagine their products and services through design thinking and the
application of digital technologies such as IoT (Internet of Things), Cloud, Mobility, Virtual
Reality, and Artificial Intelligence.
Tata Elxsi commenced its business on 5th May 1989 in Bangalore, the Silicon Valley of India, to
develop and promote applications of electronics, embedded systems, and software.
Tata Elxsi brings together the best technology and user-centric design expertise to help customers
deliver innovative solutions and great consumer experiences. Our integrated Design and Technology
teams help enterprises reimagine their products and services -- from strategy, consumer research and
insights, to service and experience design, technology implementation, integration, launch, and
beyond. It’s an eco-friendly organization.
CEO
Manoj Raghavan (2 Oct 2019).
Parent organization
Tata Group.
Company Size
5,000 to 10,000 employees.
Website
www.tataelxsi.com
Chapter 4
COMPANY DIVISION
There and two blocks in this company maple block and cedar block. I was assigned with a cabin in
cedar block. In maple block IT department is present which gives materials to all employee. We
get materials like laptop, mouse, mobile for official use, head phones, welcome kit for new joiner
and more.
4.1 GROUND FLOOR:
In ground floor there is Organizing team is placed. This is a team of 50 employees working in it.
This team organizes competitions and employee engagement programs for the employees working
in the company.
4.2 FIRST FLOOR:
In first floor HR operation is placed. We can contact HR in this floor. There are subordinates for all
HR where HR staffs brings up conflict resolution, training and development, employee relations,
information resource, performance management, building culture and values
4.3 SECOND FLOOR:
Web developer are given place in second floor. Here the employee create and maintain websites.
They are also responsible for the site’s technical aspects, such as its performance and capacity.
4.4 THIRD FLOOR:
In third floor Android developers are working. Android developer discover the latest app
development tools, platform updates, training, and documentation for developers across every
android device.
Chapter 5
ORGANIZATION STRUCTURE
HEALTHCARE:
Enabling healthcare for today and tomorrow. As the healthcare industry evolves, medical
devices, pharmaceutical, and digital health companies shift their focus to care affordability,
accessibility, quality, and efficiency. Businesses are utilizing the latest technologies to lower the
cost of operations and improve process efficiencies. Secure connectivity, automation, and data
analytics will potentially increase patient value and decrease disease burden on society. Products
and services are Medical Device Design and Engineering, Digital Health Engineering, Medical
Device Regulatory Compliance, Pharmaceutical and Biotechnology Compliance.
TRANSPORTATION:
The transportation sector has, over the years, undergone a significant shift due to technological
advancements. A wave of new-age technologies is expanding the scope of the industry from just
a commuting market to a digitally ‘connected’ marketplace. Tata Elxsi, one such leading
engineering firm, uses cutting-edge technologies like IoT, AI, and design thinking to help
enterprises in the transportation industry become efficient and cut costs. The company has
recently developed KOIOS, a highly scalable and integrated platform that provides an end-to-end
solution for intelligent mobility services.
Chapter 6
TASK PERFORMED
6.1 INTRODUCTION
In this report I have focused on experiences with the organization during the internship period. I was
put into a project in broadband and media. Working in this project gave me clear idea of how an
OTT streaming service works using android studio in different devices like mobile and android TV.
We created an OTT service named TEFLIX which works in android TV and mobile. It has modules
like movies, sports, games, apps, settings etc. We have subscription plans through which the users
pay to use this OTT service. It allows members to rent movies and also watch movies and TV shows
online with a computer, game console, smartphones, tablet or android TV.
This is an IP project that is Internal Project which is not submitted to the client. I was asked to write
JUnit test codes as a part of developer testing as the project was halfway done when I was into the
project. I was asked to write unit test code in JUnit version 4 and then convert that test code to JUnit
version 5.
OTT generally refers to the commercialized practice of streaming content on the world wide web.
OTT stands for “over-the-top” platforms, which provide a simple and exclusive way to enjoy
entertainment over the internet. Over-the-top (OTT) video viewers: Individuals who watch video via
any app or website that provides streaming video content and bypasses traditional distribution.
Examples include HBO Now, Hulu, Netflix, Amazon Video, YouTube/YouTube Red and Sling TV.
Android Studio provides a unified environment where you can build apps for Android phones,
tablets, Android Wear, Android TV, and Android Auto. Structured code modules allow you to
divide your project into units of functionality that you can independently build, test, and debug. Use
the Android Studio Layout Editor to create and preview your app's UI by dragging elements into a
visual designer, so you don't have to write XML by hand.
JUnit is a unit testing open-source framework for the Java programming language. Java Developers
use this framework to write and execute automated tests. In Java, there are test cases that have to be
re-executed every time a new code is added. I also started learning Mockito which was not
completed.
5. Follow the Setup Wizard in Android Studio and install any recommended
SDK packages.
First day we were welcomed with the company’s welcome kit and a small gathering of the team
colleagues. I was given an official laptop to work for the project assigned.
Initially I was along with IP TV ANDROID project team. This was a chance to learn about the
setup- box physical connection and the modules in IP TV ANDROID. They taught how to add,
remove, and update the movies and subscription plans from the backend. I got to learn about how a
set-up box works from backend and also adb commands.
ADB (Android Debug Bridge) is a versatile command-line tool that lets you communicate with the
device. The command facilitates a variety of device actions, such as installing and debugging apps.
ADB provides access to a Unix shell that you can use to run a variety of commands on a device. It is
a client-server program that includes three components: A client, which sends commands. A
daemon (adbd), which runs commands on a device. The daemon runs as a background process on
each device. A server, which manages communication between the client and the daemon. ADB is
an important tool for developers because it allows you to interact with Android emulators, and also
with connected devices.
IP TV ANDROID and IP MOBILE ANDROID is the same broadband and media OTT streaming
service name TEFLIX which works in two different devices like android TV and android mobile
respectively.
Days going by I was asked to do a course named Kotlin essential as in this project we used Kotlin
language to develop the OTT service.
Kotlin is a cross-platform, statistically typed, general-purpose high-level programming language
with type interface. This language is easy if we have knowledge on java. It is designed to
interoperate fully with java, and JVM version of kotlin’s standard library depends upon the java
class library, but inference allows its syntax to be more concise.
A recent study by Google represents that developers who adopt Kotlin are, on average, 50% more
likely to be satisfied with their programming language. Besides, currently, more than 70% of the top
1000 apps in the Google Play store include Kotlin code.
The Kotlin language allow you to focus on expressing your ideas and write less boilerplate
code. Kotlin’s strong type system helps prevent runtime issues, such as null pointer exceptions and
string format issues. In fact, Google has indicated that among the top 1000 apps on Google Play,
those
that use Kotlin have 20% fewer crashes per user than those that do not. Kotlin is 100% interoperable
with the Java programming language.
In continuation learnt about the variables and it types in kotlin. Variables are containers for storing
data values. To create a variable, use var or val, and assign a value to it with the equal sign (=).
Syntax: var
variablename=value val
variablename=value
Example: var Name=’Abhi’
val age=38
when you give a command println(Name) and println(age) the values of name and age are given as
output.The value of the var can be declared when ever we want and can change according to our
convinience. But, the value of val can be declared only once and can’t change to our convinience
after declaring it. Unlike many other programming languages, variables in Kotlin do not need to be
declared with a specified type (like "String" for text or "Int" for numbers, if you are familiar with
those).
To create a variable in Kotlin that should store text and another that should store a number, look
at the following example: var Name=’Abhi’
val age=38
Kotlin is smart enough to understand that “Abhi” is a string (text), and that 38 is an int
(number) variable. A variable can have a short name (like x and y) or more descriptive names
(age, sum, totalVolume).
The general rules for Kotlin variables are:
->Names can contain letters, digits, underscores, and dollar signs
->Names should start with a letter
->Names can also begin with $ and _ (but we will not use it in this tutorial)
->Names are case sensitive ("myVar" and "myvar" are different variables)
->Names should start with a lowercase letter and it cannot contain whitespace
->Reserved words (like Kotlin keywords, such as var or string) cannot be used as names
In Kotlin, the type of a variable is decided by its value. Sometimes you have to specify the type,
and often you don't. Anyhow, it is good to know what the different types represent.
Data types are divided into different groups:
->Numbers
->Characters
->Booleans
->Strings
->Arrays
Number types are divided into two groups:
Integer types store whole numbers, positive or negative (such as 123 or -456), without decimals.
Valid types are Bytes, Shorts, Int and Long.
Floating point types represent numbers with a fractional part, containing one or more decimals.
There are two types: Float and Double.
The Boolean data type and can only take the values true or false. Boolean values are mostly used
for conditional testing.
The char data type is used to store a single character. A char value must be
surrounded by single quotes, like 'A' or 'c
The string data type is used to store a sequence of characters (text). String values must be
surrounded by double quotes.
Arrays are used to store multiple values in a single variable, instead of declaring separate variables
for each value.
Type conversion is when you convert the value of one data type to another type. In Kotlin, numeric
type conversion is different from java.
To convert a numeric data type to another type, you must use one of the following functions: toInt
(), toByte (), toShort (), toFloat (), toBinary (), toDouble (), toChar ().
Further continued with collections. A collection usually contains a number of objects of the same
type and these objects in the collection are called elements or items. Kotlin Standard Library
provides a rich set of tools for managing collections.
In Kotlin collections are categories into two forms. They are:
->Immutable Collection
->Mutable Collection
Immutable collection means that it supports only read-only functionalities and cannot modify its
elements. Immutable Collections and their corresponding methods are List, Set and Map.
List – It is an ordered collection in which we can access elements or items by using indices – integer
numbers that define a position for each element. Elements can be repeated in a list any number of
times. We cannot perform add or remove operations in the immutable list.
Set – It is a collection of unordered elements also it does not support duplicate elements. It is a
collection of unique elements. Generally, the order of set elements does not have a significant
effect. We cannot perform add or remove operations because it is an immutable Set.
Map – Map keys are unique and hold only one value for each key, it is a set of key-value pairs.
Each key maps to exactly one value. The values can be duplicates but keys should be unique. Maps
are used to store logical connections between two objects, for example, a student ID and their name.
As it is immutable its size is fixed and its methods support read-only access.
Mutable collections support both read and write functionalities. Mutable collections and their
corresponding methods are List, Set and Map.
List -Since mutable list supports read and write operation, declared elements in the list can either
be removed or added.
Set -The mutable Set supports both read and write functionality. We can access add or remove
elements from the collections easily and it will preserve the order of the elements.
A coroutine is a concurrency design pattern that you can use on Android to simplify code that
executes asynchronously. Coroutines were added to Kotlin in version 1.3 and are based on
established concepts from other languages. On Android, coroutines help to manage long-running
tasks that might otherwise block the main thread and cause your app to become unresponsive. Over
50% of professional developers who use coroutines have reported seeing increased productivity.
In continuation Android basics were taught to me. We use the Android Studio Layout Editor to
create and preview your app's UI by dragging elements into a visual designer, so you don't have to
write XML by hand. Android Studio provides a unified environment where you can build apps for
Android phones, tablets, Android Wear, Android TV, and Android Auto. Structured code modules
allow you to divide your project into units of functionality that you can independently build, test,
and debug.
There are Java, resource and manifest folder in android studio. Java folder contains all the java
source code. Resource folder (res) contains all the non-code resources, such as XML layouts,
UI strings, and bitmap images. In manifest folder we have to define the essential information about
the app to the android build tools, os and google play.
To build and create android applications we need activity, layout and launcher activity in android
manifest. Activity refers to the Screen. Launcher activity refers to the first screen which we see
when we press an app icon.
The Android lifecycle helps developers understand which states activities go through when a user
navigates through an app. As a result, we can do proper operations at the right time and avoid
crashes and other bugs. An Android application has a lifecycle. It crosses through various stages
from when a user opens and exits an application. An android activity goes through six major
lifecycles stages. These are onCreate (), onStart (), onResume (), onPause (), onStop (), and
onDestroy ().
The onCreate () callback is compulsory in all Android applications. It is the first method called
when we launch an activity from the home screen or intent. In other words, it is a default callback
that is automatically created when you create a new activity.
When an application is started, the system will invoke an onStart () method. This callback is
invoked to make the activity visible to the user.
Once onStart () is called, onResume () is immediately invoked. Every component associated with
this activity is brought to the foreground state. The activity is now considered interactive.
The onPause () is called when the user switches to another activity or a multi-window mode
application. At this point, the activity has lost focus and is running in the background.
At this point, most of the activity processes have been stopped. However, the activity is still running
in the background. This life-cycle usually occurs after the onPause () method is executed due to the
user switching to other activities or pressing the home button. In such situations, it is used to release
heavy resources and stop intensive operations that are not required while the activity is invisible.
Since onPause () is brief, onStop () can be used to save data to other channels such as databases.
Since the activity’s states still exist, the onRestart () method can be called when the user restarts the
activity. This means the activity will go back to the main screen and the user can resume interacting
with its components.
This is the final callback that the activity will receive when it is stopped. The method is called when
there is a change in the configuration states such as screen rotation or language settings. The
Android system will destroy the activity, then recreate it with the set configurations.
A layout defines the structure for a user interface in your app, such as in an activity. All elements in
the layout are built using a hierarchy of view and viewgroup objects. A view usually draws
something the user can see and interact with. Whereas a viewgroup is an invisible container that
defines the layout structure for view and other viewgroup objects
A Fragment represents a reusable portion of your app's UI. A fragment defines and manages its own
layout, has its own lifecycle, and can handle its own input events. Fragments cannot live on their
own-
-they must be hosted by an activity or another fragment. The fragment’s view hierarchy becomes
part of, or attaches to, the host’s view hierarchy. Fragments introduce modularity and reusability
into your activity’s UI by allowing you to divide the UI into discrete chunks. Activities are an ideal
place to put global elements around your app's user interface, such as a navigation drawer.
Conversely, fragments are better suited to define and manage the UI of a single screen or portion of
a screen.
Android Architecture Components (AAC) is a new collection of libraries that contains the lifecycle-
aware components. It can solve problems with configuration changes, supports data persistence,
reduces boilerplate code, helps to prevent memory leaks and simplifies async data loading into your
UI. I can’t say that it brings absolutely new approaches for solving these issues, but, finally, we have
a formal, single and official directions.
Architecture components provides some abstractions to deal with Android lifecycle:
->lifecycle owner
->live data
->view model
It's possible to write code that wins every performance test in the world, but still feels sluggish, hang
or freeze for significant periods, or take too long to process input. The worst thing that can happen
to your app's responsiveness is an "Application Not Responding" (ANR) dialog. In Android, the
system guards against applications that are insufficiently responsive for a period of time by
displaying a dialog that says your app has stopped responding. At this point, your app has been
unresponsive for a considerable period of time so the system offers the user an option to quit the
app. It's critical to design responsiveness into your application so the system never displays an ANR
dialog to the user.
Generally, the system displays an ANR if an application cannot respond to user input. For example,
if an application blocks on some I/O operation (frequently a network access) on the UI thread so the
system can't process incoming user input events. Or perhaps the app spends too much time building
an elaborate in-memory structure or computing the next move in a game on the UI thread. It's
always important to make sure these computations are efficient, but even the most efficient code
still takes time to run. Android applications normally run entirely on a single thread by default the
"UI thread" (or "main thread"). This means anything your application is doing in the UI thread that
takes a long time to complete can trigger the ANR dialog because your application is not giving
itself a chance to handle the input event or intent broadcasts.
The Espresso API encourages test authors to think in terms of what a user might do while
interacting with the application - locating UI elements and interacting with them. At the same time,
the framework prevents direct access to activities and views of the application because holding on to
these objects and operating on them off the UI thread is a major source of test flakiness. Thus, you
will not see methods like getView () and getCurrentActivity () in the Espresso API. You can still
safely operate on views by implementing your own subclasses of ViewAction and ViewAssertion.
Department of ISE, AMCEC, Bengaluru-083 2
0
IP MOBILE ANDROID 2022-2023
The MVVM architecture has Model, View and View-Model. MVVM architecture is a Model-View-
View-Model architecture that removes the tight coupling between each component. Most
importantly, in this architecture, the children don't have the direct reference to the parent, they only
have the reference by observables.
Model is responsible for featuring data from the database. It has repository, room and web service.
It stores the UI data. Create the app model. Also referred to as the data class. To avoid confusion,
create a package named model inside the java folder. Then, create a data class named Blog in the
model package. It represents the data and the business logic of the Android Application. It consists
of the business logic - local and remote data source, model classes, repository
View is whatever the user sees on the screen. It is the text or the activity that is visible and can
directly interact. The UI, therefore, needs to be well structured to minimize any confusion and
dissatisfaction. It consists of the UI Code (Activity, Fragment), XML. It sends the user action to the
ViewModel but does not get the response back directly. To get the response, it has to subscribe to
the observables which View-Model exposes to it.
View-Model is the intermediate between the View and Model. It is a bridge between the View and
Model (business logic). It does not have any clue which View has to use it as it does not have a
direct reference to the View. So basically, the ViewModel should not be aware of the view who is
interacting with. It interacts with the Model and exposes the observable that can be observed by the
View.
API Source
Model
View ViewModel
(Domain) Shared Preference
Data Binding
For platform-specific source sets, the corresponding platform-specific variant of the library is used,
while a common standard library is added to the rest. The Kotlin Gradle plugin will select the
appropriate JVM standard library depending on the compiler Options.
Dependency injection (DI) is a technique widely used in programming and well suited to Android
development. By following the principles of DI, you lay the groundwork for good app architecture.
It is a design pattern in which an object or function receives other object or function that it depends
on. Implementing dependency injection provides you with the following advantages:
->Reusability of code
->Ease of refactoring
->Ease of testing
There are two major ways to do dependency injection in Android:
->Constructor Injection. This is the way described above. You pass the dependencies of a class to its
constructor.
->Field Injection (or Setter Injection). Certain Android framework classes such as activities and
fragments are instantiated by the system, so constructor injection is not possible. With field
injection, dependencies are instantiated after the class is created.
Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual
dependency injection in your project. Doing manual dependency injection requires you to construct
every class and its dependencies by hand, and to use containers to reuse and manage dependencies.
Hilt provides a standard way to use DI in your application by providing containers for every
Android class in your project and managing their lifecycles automatically. Hilt is built on top of the
popular DI library Dagger to benefit from the compile-time correctness, runtime performance,
scalability, and Android studio support that Dagger provides.
Apps that handle non-trivial amounts of structured data can benefit greatly from persisting that data
locally. The most common use case is to cache relevant pieces of data so that when the device
cannot access the network, the user can still browse that content while they are offline.
Room database is a persistence library that provides an abstraction layer over the SQLite database
to allow a more robust database. With the help of room, we can easily create the database and
perform CRUD operations very easily.
The three main components of the room are Entity, Database, and DAO.
Entity is a modal class that is annotated with @Entity. This class is having variables that will be our
columns and the class is our table.
Database is an abstract class where we will be storing all our database entries which we can call
Entities.
The full form of DAO is a Database access object which is an interface class with the help of it we
can perform different operations in our database.
Benefits of room database:
->Compile-time verification of SQL queries.
->Convenience annotations that minimize repetitive and error-prone boilerplate code.
->Streamlined database migration paths.
I was asked to take a KT (Knowledge Transfer) session on MVVM. I also attended other KT
session on coroutines, android basics and room database conducted by others.
Also, there was competitions conducted between the internal projects. Demo of how our project
works was presented to the higher official.
In the last week I was asked to learn about JUnit4 and write developer testing code which was
converted to JUnit5 version later. Unit testing is trying and testing a specific unit (Specific
boundary). Unit can be a single method, or a group of methods or a set of groups of classes. Once I
write unit test cases I will be able to run unit test automatically within milliseconds and check
whether all conditions for that particular method passing or not / Or we can say To Ensure a
function does what it is supposed to do
JUnit is a unit testing open-source framework for the Java programming language. Java Developers
use this framework to write and execute automated tests. In Java, there are test cases that have to be
re-executed every time a new code is added. Unit has been important in the development of test-
driven development, and is one of a family of unit testing frameworks which is collectively
known as XUnit that originated with SUnit.
Chapter 7
WORK SCHEDULED
14/09/2022 Espresso.
30/09/2022 Converting JUnit4 test cases to JUnit5 test cases and merge with the
project code.
Table 7.5 Overview of fifth week activity
Chapter 8
CONCLUSION
In an internship period of a month I have gained a lot of experience and knowledge technically and
personally. I have explained precisely, briefly and clearly about the internship experience and
knowledge gained for a month.
We created an OTT service named TEFLIX which works in android TV and mobile. It has modules
like movies, sports, games, apps, settings etc. We have subscription plans through which the users
pay to use this OTT service. It allows members to rent movies and also watch movies and TV shows
online with a computer, game console, smartphones, tablet or android TV.
TEflix was the app created by my team which works in android mobile. Working in this project
gave me clear idea of how an OTT streaming service works using android studio in different devices
like mobile and android TV.
REFERNCES
APPENDIX-PHOTO GALLERY