Академический Документы
Профессиональный Документы
Культура Документы
ANDROID
submitted by
SARTHAK SHAH
(14BCE0618)
BACHELOR OF TECHNOLOGY
in
JANUARY, 2017
DECLARATION BY THE CANDIDATE
BONAFIDE CERTIFICATE
Prof. SANTHI H
SUPERVISOR
Assistant Professor (Senior)
Date:
period, in spite of her busy and hectic schedule. Her guidance has helped
technology.
Place: Vellore
LIST OF FIGURES iv
1 SYNOPSIS 1
2 COMPANY DETAILS
2.1 About the Company 2
2.2 Company Portfolio 3
2.3 Company Work Culture 5
6 SAMPLE APPLICATION 25
7 SELF EVALUATION 29
8 REFERENCES 30
List of Tables
Table 1: Android Version
iii
List of Figures
iv
1. SYNOPSIS
This report is an account of my industrial internship in Manal Softech Pvt. Ltd. for a
period of 32 days from 2nd Dec 2016 to 2nd Jan 2017. In this report I have highlighted
the skills that I had acquired during my college that had helped me for the period of
internship. I have also highlighted the skills that I have obtained as an intern at Manal
During my time at Manal Softech I had closely worked with the development team
specifically dealing with Android Development. I have learnt various new concepts
and techniques required for a good professional app developer such as online web
services (AWS) and worked with new Google APIs such as Google Maps, Google
development at professional level. I was taught about the various tools and methods
to do the same.
In the following Chapter a description of Company, Manal and the activities are given.
After this, a reflection on my functioning and skills learned during the internship are
described. Finally I give a conclusion on the internship experience I had with the
company.
1
2.COMPANY DETAILS
Manal Softech empower a business with their innovative, effective and affordable
web development and mobile application solutions that not only amplify a businesss
revenues but also expand the businesss web presence with the power of internet and
new age internet enabled devices. Its ecommerce web development services offers
businesses an opportunity to strengthen their web presence at a price they can afford
and the mobile application services offers businesses customer friendly, easy to use
applications that make the business remotely accessible and gives the customers a
faster access to business services. Their outsourced services are white-labelled and
transparent .
Looking at the ever growing IT expansion, carrying out an on-site IT makeover can
result into an expensive deal. Outsourcing has evolved as big boon for large to many
small and medium sized enterprises as well due to its cost effective solutions. Manal
Softech perfectly understands a business's needs hence have managed to develop a
pool of trained IT staff with a facility to outsource their specialized services so that
companies can meet their requirements at affordable costs. Their outsourced mobile
application and web development solutions at a price tag comfortable by you without
compromising on the quality and level of perfection.
Manal Softech helps individuals, small business, or corporate companies in developing
and launching their product. It is a company that helps its customer in getting their
services off the ground from the ideation stage, to developing their MVP, designing
their brand and helping them to scale their products from a hundred user to a million.
Manal Softech can be approached by anyone having an idea or design of a product.
The team at Manal Softech helps in doing the market research for the idea. Develop
solutions, models and design for the idea.
2
Once the customer approves of the design and solution put forth by the team at Manal
Softech, it goes for the development and launching of the product under the budget of
the customer.
Manal Softech as a service company has developed many products for individual clients,
small business as well as corporates. I have listed a few of them.
We build products in highly collaborative and agile manner to deliver the maximum
value to our customers.
3
specialists in the field of packing and moving services, Real Safe Packers & Movers
ensure that your goods reach the needs with the most care and safety.
Shifting to a new house or office but worried about transporting your valuable goods
safely? Real Safe Packers & Movers are one of the most reliable names in moving
and packaging services! In the business for many years, our experience and expertise
in the field has earned us immense respect and confidence from our clients all over
India. Real Safe Packers & Movers ensure the safe delivery of your goods, to any
location in India.
Real Safe Packers & Movers trained packing moving staff have expertise in
specialized handling, packing, and crating techniques and special packing material to
ensure safe movement of your goods. Your business is our priority so we guarantee
exceptional customer service from start to finish 24/7. If you need to Relocate
yourself or want to move some of your assets or all household goods from one
destination to the other in Indian was never so easy task. We are here to provide best
solutions for every problem related to Packing Moving, Household Shifting,
Relocation and Car Transportation. We at Real Safe packers Movers are one of the
best Relocating Companies and Moving Companies in Indian since we have
professional staff and have branches in all major Indian cities.
4
Sealing Machine, Continuous Band Sealer, form Fill Seal (FFS) Machines ,Shrink
Tunnel, Paddle Sealer, Solid ink batch coding Machine Semi and Fully automatic
induction Sealer, Automatic label applicator along with packaging materials such as
Bopp tap, Heat sealable strapping role, shrink role and pouch, L.D./H.M bags and
roll, Air Bubble films, Corrugated box and Sheet Rolls, Stretch Wrapping Films,
laminated pouches and rolls and all kind of Packaging Material. Being a quality
conscious company, we pay our special efforts to deliver world-class range of Plastic
Packaging Material to our esteemed clients. To maintain the same, we have setup an
advance in-house quality control department that is outfitted with latest machines
and tools. The quality control unit is effectively managed by highly qualified and
experienced team of quality inspectors, which stringently monitors that complete
production process right from procurement of raw material till the final dispatch of
the finish products at the clients end. Under the able enlightening guidance of Mr.
Deepesh Patni (MD) who have attained cohesive knowledge of the Bags, Pouches
and Rolls manufacturing industry? Their smart decision making and vast industry
experience helped us to carve a strong foothold in this competitive market.
To list a few more of the services provided by Manal Softech it manages the digital
platform of Market Space, Chatorez, ACL grocery and many more.
Manal Softech provides a pool of benefits to work with. The team consists of
professionals who come with a great level of international exposure owing to their
experience. Manal Softech always works with latest technologies available around
the world to deliver the highest quality of digital products available in the market.
Manal Softech is customer oriented company. End user satisfaction is the main
criteria when they develop any product. Working at Manal Softech, we get to interact
with the client directly to have a collaborative experience in building and designing
of the product.
Manal Softech follows rapid prototyping and agile method of development for any
service they provide.
5
This ensures that the products are developed as soon as possible and delivery is made
at the earliest while also keeping the customer informed at each step of the process.
The team at Manal Softech is highly committed and skilled. Working at Manal
Softech, we get to use and learn about new technologies, trends every day. It has a
flat and open organisational structure, so we have access to all the employees, at all
the time. Though there is no fixed working hour, every module or process has a fixed
deadline that has to be adhered to while working at Manal Softech.
6
3. SKILLSET PRIOR TO TRAINING
Skills learnt at VIT University prior to my industrial internship program had helped
me a lot during the internship. VIT University has a very diverse, dynamic and
complex syllabus that covers the fundamentals of most of the technologies in
Computer Science. The curriculum at VIT University ranges from developing
programming skills, knowing computer architecture, networks, database management
to internet and web programming, pattern classification etc.
Software Industries use object oriented programming for any implementation of code.
During my time at College, I learnt about object oriented programming in C++ (CSE
219). The course had all the major design constructs and important object oriented
concepts covered. I had a proper understanding of the concepts of inheritance,
abstraction, encapsulation, data hiding etc. Prior knowledge of object oriented
programming, helped me a lot during internship. The lab exercises of this course were
designed so that we have a proper understanding of objects, classes and inheritance.
Data Structures and algorithm (CSE 220) is another course learned as part of college
curriculum that had helped me during the industrial internship. During this course I
had learnt about the best ways to store the data while considering efficiency and
memory usage. While developing any software application the first and foremost thing
is to analyze how to manage the data within the program.
7
What data structures could be used to manage the data? Through this course I had a
strong foundation of data structures. This course had covered all the data structures
like stacks, queues, de-queue, heap, trees, segment tree and advanced data structures
like Red Black trees, AVL trees etc. which enabled to learn further data structures.
One of the important skills for software developers is to write efficient code. Finding
a solution to a problem could be easy but writing an efficient solution requires skillset.
Processing time of the programs can distinguish between a good software/product and
a bad one. The course, Algorithm and Design Analysis (CSE202) mainly dealt with
different kinds of algorithm and how to approach a problem. Concepts like dynamic
programming, greedy algorithm etc. were taught in this course. Another important skill
that I learnt in this course was to analyze the running time of any algorithm. Efficient
algorithm defined the scalability of the system. If the algorithm runs in polynomial or
exponential time, it will be quite slower on larger data. Understanding and building
algorithmic knowledge is an important skill I developed, that helps me in writing
efficient codes.
The course, Operating System (CSE 222), is one of my favorite course learnt during
college. This course mainly deals with how the operating system manages resources
such as memory, CPU, ROM etc. These skills helped me to write programs more
efficiently. Jumping statement, too many memory switch, might seem to be fine, but
it greatly affects the efficiency of the program. During this course I was also introduced
to Linux tools and commands.
Most applications require data to be stored for processing and future use. As part of
college curriculum, I did Database Systems (CSE 324). Through this course I learnt
about the various uses of Database System like Oracle, MySQL etc. Database is an
important concept for any software developer to have.
Traditional file management system allows data to be stored, however they are
concurrency is a very hard task. In this course I had learnt how to create databases,
8
My understanding of databases proved to be of immense help during internship.
I have developed various skills while staying in VIT. Over the years I have learnt SQL,
Core Java, Java Swing, XML, Android basic etc.
All these skills helped me during the internship. Through these skills I was able to
grasp the concepts taught in the internship more easily.
9
4. SKILLS DEVELOPED DURING TRAINING
5.1.2 Android
Android is an operating system based on Linux with a Java programming interface.
Android is a mobile operating system (OS) developed by Open HeadSet Alliance.
Android is the first completely open source mobile OS. Building on the contributions
of the open-source Linux community and more than 300 hardware, software, and
carrier partners, Android has rapidly become the fastest-growing mobile OS.
Table 1: Android Version
11
5.1.3 Mobile Application
A mobile application (or mobile app) is a software application designed to run on smart
phones, tablet computers and other mobile devices. Mobile apps were originally
offered for general productivity and information retrieval, including email, calendar,
contacts, and stock market and weather information.
12
5.2 Android Building Blocks
Each building block is a different point through which the system can enter your
application. Not all components are actual entry points for the user and some depend
on each other, but each one exists as its own entity and plays a specific roleeach one
is a unique building block that helps define your application's overall behaviour.
5.2.1 Activities
An activity is an application component that provides a screen with which users can
interact in order to do something, such as dial the phone, take a photo, send an email,
or view a map. Each activity is given a window in which to draw its user interface.
The window typically fills the screen, but may be smaller than the screen and float on
top of other windows. An application usually consists of multiple activities that are
loosely bound to each other. Typically, one activity in an application is specified as
the "main" activity, which is presented to the user when launching the application for
the first time. Each activity can then start another activity in order to perform different
actions. Each time a new activity starts, the previous activity is stopped, but the system
preserves the activity in a stack (the "back stack"). When a new activity starts, it is
pushed onto the back stack and takes user focus. The back stack abides to the basic
"last in, first out" stack mechanism, so, when the user is done with the current activity
and presses the Back button, it is popped from the stack (and destroyed) and the
previous activity resumes. When an activity is stopped because a new activity starts,
it is notified of this change in state through the activity's lifecycle call-back methods.
There are several call-back methods that an activity might receive, due to a change in
its state whether the system is creating it, stopping it, resuming it, or destroying it
and each call-back provides you the opportunity to perform specific work that's
appropriate to that state change. For instance, when stopped, your activity should
release any large objects, such as network or database connections. When the activity
resumes, you can reacquire the necessary resources and resume actions that were
interrupted. These state transitions are all part of the activity lifecycle.
13
Fig. 1: Activity Transition
14
5.2.2 Services
15
For example, applications can also initiate broadcasts to let other applications know
that some data has been downloaded to the device and is available for them to use, so
this is broadcast receiver who will intercept this communication and will initiate
appropriate action.
5.2.5 Intent
Intents are asynchronous messages which allow the application to request functionality
from other Android components, e.g. from services or activities. An application can
call a component directly (explicit Intent) or ask the Android system to evaluate
registered components based on the intent data (implicit intents). For example the
application could implement sharing of data via an intent and all components which
allow sharing of data would be available for the user to select. Applications register
themselves to an intent via an intent. Filter Intents allow an
Android application to start and to interact with components from other Android
applications.
16
5.3 Introduction to the Development tool Android Studio
Android Studio is the official integrated development environment (IDE) for Android
platform development. Android Studio is freely available under the apache license.
Android Studio is designed specifically for Android development.
Android application development can be started on either of the following operating
systems
Microsoft Windows 8/7/Vista/2003 (32 or 64-bit).
Mac OS X 10.8.5 or higher, up to 10.9 (Mavericks).
GNOME or KDE desktop.
All the required tools to develop Android applications are open source and can be
downloaded from the Web.
Following is the list of softwares that is needed before starting Android application
programming.
Java JDK5 or later version
Java Runtime Environment (JRE) 6
Android Studio
17
5.4 Android UI Design
Frame Layout
Frame layouts are one of the simplest layout types used to organize controls within the
user interface of an Android application. They are used less often than some other
layouts, simply because they are generally used to display only one view, or views
which overlap. The efficiency of a frame layout makes it a good choice for screens
containing few view controls (home screens, game screens with a single canvas, and
the like). Sometimes other inefficient layout designs can be reduced to a frame layout
design that is more efficient, while other times a more specialized layout type is
appropriate. Frame layouts are the normal layout of choice when you want to overlap
views.
Linear Layout
Linear layouts are one of the simplest and most common types of layouts used by
Android developers to organize controls within their user interfaces. The linear layout
works much as its name implies: it organizes controls linearly in either a vertical or
horizontal fashion. When the layouts orientation is set to vertical, all child controls
within it are organized in a single column; when the layouts orientation is set to
horizontal, all child controls within it are organized in a single row. Some of the most
important attributes youll use with linear layouts include:
The orientation attribute (required), which can be set to vertical or horizontal.
The gravity attribute (optional), which controls how all child controls are
aligned and displayed within the linear layout (class: LinearLayout).
The layout_weight attribute (optional, applied to each child control) specifies
each child controls relative importance within the parent linear layout (class:
LinearLayout.LayoutParams).
18
Relative Layout
The relative layout works much as its name implies: it organizes controls relative to
one another, or to the parent control itself. It means that child controls, such as
ImageView, TextView, and Button controls, can be placed above, below, to the left or
right, of one another. Child controls can also be placed in relation to the parent (the
relative layout container); including placement of controls aligned to the top, bottom,
left or right edges of the layout.
Some specific attributes apply to relative layouts-namely the child rules, including:
Rules for child control centering within the parent layout, including: center
horizontally, center vertically, or both.
Rules for child control alignment within the parent layout, including: align with
top, bottom, left or right edge of another control.
Rules for child control alignment in relation to other child controls, including:
align with top, bottom, left or right edge.
Rules for child control placement in relation to other child controls, including:
placement to the left or right of a specific control, or above or below another
control.
Table Layout
A table layout is exactly what you might expect: a grid of made up of rows and
columns, where a cell can display a view control. From a user interface design
perspective, a Table Layout is comprised of Table Row controlsone for each row in
your table. The contents of a Table Row are simply the view controls that will go in
each cell of the table grid. Although table layouts can be used to design entire user
interfaces, they usually arent the best tool for doing so, as they are derived from Linear
Layout and not the most efficient of layout controls. However, for data that is already
in a format suitable for a table, such as spreadsheet data, table layout may be a
reasonable choice.
19
5.4.2 Different UI widgets available in Android
Text View
Edit Text
List View
Button
CheckBox
Radio Button
5.4.4 Toast
A toast provides simple feedback about an operation in a small popup. It only fills the
amount of space required for the message and the current activity remains visible and
interactive.
5.4.5 Adapters
An Adapter acts as a bridge between a ListView and the underlying data for that view.
The Adapter provides access to the data items. The Adapter is also responsible for
making a View for each item in the data set.
Array Adapter
Array Adapter is a concrete BaseAdapter that is backed by an array of arbitrary objects.
By default this class expects that the provided resource id references a single
TextView. If you want to use a more complex layout, use the constructor that also
takes a field id. That field id should reference a TextView in the larger layout resource.
A notification is a message you can display to the user outside of your application's
normal UI.
20
When you tell the system to issue a notification, it first appears as an icon in the
notification area. To see the details of the notification, the user opens the notification
drawer. Notification Manager Class is used to notify the user of events that happen.
This is how you tell the user that something has happened in the background.
Notifications can take different forms:
A persistent icon that goes in the status bar and is accessible through the
launcher, (when the user selects it, a designated Intent can be launched).
Turning on or flashing LEDs on the device.
Alerting the user by flashing the backlight, playing a sound, or vibrating.
21
5.5 Database SQLite
SQLite is an Open Source database. SQLite supports standard relational database
features like SQL syntax, transactions and prepared statements. The database requires
limited memory at runtime (approx. 250 Kbytes) which makes it a good candidate
from being embedded into other runtimes.
SQLite is embedded into every Android device. Using a SQLite database in Android
does not require a setup procedure or administration of the database. We only have to
define the SQL statements for creating and updating the database. Afterwards the
database is automatically managed for us by the Android platform.
If our application creates a database, this database is by default saved at directory -
DATA/data /APP_NAME/ databases /FILENAME.
SQLiteDatabase is the base class for working with a SQLite database in Android and
provides methods to open, query, update and close the database.
SQLiteDatabase provides the insert(), update() and delete() methods.
The object ContentValues allows to define key/values. The key represents the
table column identifier and the value represents the content for the table record
in this column. ContentValues can be used for inserts and updates of database
entries.
Queries can be created via the rawQuery() and query() methods or via the
SQLiteQueryBuilder class.
rawQuery() directly accepts an SQL select statement as input.
query() provides a structured interface for specifying the SQL query.
SQLiteQueryBuilder is a convenience class that helps to build SQL queries.
5.5.1 SQLiteOpenHelper
SQLiteOpenHelper, specifying the database name and the current database version.
22
In this class we need to override the following methods to create and update our
database-
onCreate() is called by the framework, if the database is accessed but not yet
created.
onUpgrade() called, if the database version is increased in your application
code. This method allows you to update an existing database schema or to
drop the existing database and recreate it via the onCreate() method.
5.5.2 Query()
The following gives an example of a query() call-
return database.query(DATABASE_TABLE, new String[] { KEY_ROWID,
KEY_CATEGORY, KEY_SUMMARY, KEY_DESCRIPTION }, null, null, null,
null, null);
5.5.4 Cursor
Cursor provides typed get*() methods, e.g. getLong(columnIndex),
getString(columnIndex) to access the column data for the current position of the result.
The "columnIndex" is the number of the column you are accessing. A Cursor needs to
be closed with the close() method call.
Insert
values.put(MySQLiteHelper.COLUMN_COMMENT, comment);
23
long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null,
values);
cursor.close();
return newComment;
Delete
database.delete(MySQLiteHelper.TABLE_COMMENTS,MySQLiteHelper.COLUM
N_ID + " = " + id, null);
A SQLite database is private to the application which creates it. If you want to share
data with other applications you can use a content provider. A content provider
allows applications to access data. In most cases this data is stored in a SQlite
database. While a content provider can be used within an application to access data,
it is typically used to share data with other application. As application data is by
default private, a content provider is a convenient to share your data with other
application based on a structured interface. A content provider must be declared in
the AndroidManifest.xml file.
24
6. Sample Application
Towards the end of internship I have designed an app in which I tried to cover most
of the concepts that I have learnt through the course of the internship. The basic idea
was to capture an Image and Display it on ImageView. The user can make Negative
of the image, Add simple overlays to the image and Save the image.
Below are the screenshots of the app, development process to have a clear
understanding of the working flow of the app: -
25
Fig. 4: Taking Picture
26
Fig. 6: Negate Image
27
Fig. 8: Android Application Development Process
28
7. SELF EVALUATION
Android Smartphone are in hype in the 21st century. The scope of android
applications is increasing day by day. Its development has become an essential part
of todays programming curriculum. The society has a dearth of ideas. These ideas
can be most effectively implemented by developing user-friendly android
applications. Through this internship, I got to learn a lot, including, database
connectivity using SQLite. Being new to app development, I came to know a lot
about developing an android application from scratch.
Generally I had never used git or github while developing web applications or
softwares, which resulted in greater development time, bug fixing time etc. Learning
git was I think one of the most important skill I developed at Solution Avenues. Now
I always use version control for writing any text or code.
Overall I think its the team at Manal Softech who have made my internship
experience rewarding.
29
References
1) https://developer.android.com
3) stackoverflow.com
4) www.quora.com
30