Uploaded by difejeb914

toaz.info-sarthak-shah-internship-report-pr 237bcb012e25fd9913a8701a67f0ddb8

An Industrial Internship Report
submitted by
in partial fulfillment for the award of the degree of
I hereby declare that the Industrial Internship report entitled “MOBILE
to Vellore Institute of Technology, Vellore in partial fulfillment of the
requirement for the award of the degree of B.Tech in Computer Science
and Engineering is a record of bonafide industrial training undertaken by
me under the supervision of Ms. Varshaa Chaurasia and Prof. Santhi
I further declare that the work reported in this report has not been
submitted and will not be submitted, either in part or in full, for the award
of any other degree or diploma in this institute or any other institute or
School of Computing Science & Engineering
This is to certify that the Industrial Internship report entitled “MOBILE
SARTHAK SHAH (14BCE0618) to Vellore Institute of Technology,
Vellore in partial fulfillment of the requirement for the award of the degree
of B.Tech in Computer Science and Engineering is a record of bonafide
Industrial Internship undertaken by him/her under my supervision. The
training fulfills the requirements as per the regulations of this Institute and
in my opinion meets the necessary standards for submission. The contents
of this report have not been submitted and will not be submitted either in
part or in full, for the award of any other degree or diploma in this institute
or any other institute or university.
Assistant Professor (Senior)
Internal Examiner (s)
External Examiner (s)
The internship opportunity provided to me by Manal Softech Pvt. Ltd.
has given me a chance to explore industrial standards in technology and
has helped me in professional android development. I am thankful to the
wonderful professionals with whom I have worked, during the time of
internship. I consider myself to be very lucky and grateful to be
presented with the opportunity.
I acknowledge and thank Ms. Varshaa Chaurasia, the Managing
Director of the company, who supervised me throughout the internship
period, in spite of her busy and hectic schedule. Her guidance has helped
me in my personal growth as well as having a new outlook in approaching
I also want to acknowledge and thank Prof. Santhi H., Assistant
Professor (Senior), SCOPE, VIT University. She is an excellent
mentor. Her knowledge of the industry and technology helped me
through the internship period.
This internship opportunity is a big milestone in my career. I will
continue to use the knowledge and experience gained during the time of
the internship for my career advancement.
Place: Vellore
Date: 30/ 01/17
Sarthak Shah
2.1 About the Company
2.2 Company Portfolio
2.3 Company Work Culture
3.1 Skills Developed Through College Courses
3.2 Skills Developed Along Side Academic
5.1 Introduction About Mobile Technologies
5.1.1 Background About Mobile Technologies
5.1.2 Android
5.1.3 Mobile Application
5.2 Android Building Blocks
5.2.1 Activities
5.2.2 Services
5.2.3 Content Providers
5.2.4 Broadcast Receivers
5.2.5 Intent
5.2.6 Using Intent To Launch The Activities
5.3 Introduction To Development Tool Android
5.4 Android UI Design
5.4.1 Introduction Layouts
5.4.2 Different UI Widgets Available in Android
5.4.3 Dialog Box
5.4.4 Toast
5.4.5 Adapters
5.4.6 Notification Managers
5.5 Database SQLite
5.5.1 SQLite Open Helper
5.5.2 Query
5.5.3 Opening And Closing a Database
5.5.4 Cursor
5.5.5 Content Provider And Sharing Data
List of Tables
Table 1: Android Version
List of Figures
Fig. 1: Activity Transition
Fig. 2: Activity Life Cycle
Fig. 3: Main Screen
Fig. 4: Taking picture
Fig. 5: Negate Image
Fig. 6: Image Overlay
Fig. 7: Image Overlay
Fig. 8: Android Application Development Process
Fig. 9: Android Studio
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
Softech Pvt. Ltd.
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 API’s such as Google Maps, Google
Push Notifications etc.
My work at Manal Softech was to learn concepts related to Android application
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
Manal Softech empower a business with their innovative, effective and affordable
web development and mobile application solutions that not only amplify a business’s
revenues but also expand the business’s 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 customer’s a
faster access to business services. Their outsourced services are white-labelled and
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.
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.
www.leedsdevelopers.com Leeds Enclave is a real estate development firm with
strong working knowledge in the areas of real-estate development & construction. The
key to group success is regional focus which facilitates our hands on intensive
management & an in depth knowledge of property & its local market. The
concentrated focus will give valuable insight to the customer needs & also take care
of communities needs surrounding each property.
Drive, imagination, decisiveness – ours is a well-earned reputation. Leeds
Developers is one of the leading land developers based at Indore, the “Silicon Valley
of India”. Ever since our establishment, we have worked hard to create a place of
respect for ourselves. Our sincere commitment to understanding customer needs and
interpreting them in inspiring ways has enabled us to continuously offer living spaces
that are truly special. And our unblemished record of delivering on promises and our
strict adherence to business ethics has earned us a special place in the field. We
believe that every Indian be given an opportunity to own a property or home and we
will do our best to help them accomplish the goal.
Our Layout is located in developing area which features rapid growth, good
surrounding, and frequent transport facilities and at reasonable cost.
www.realsafepackersmovers.com Real Safe Packers & Movers value the sentiments
of our customers and hence take that extra care while moving and packaging the
goods of our customers. Backed by a core team of thorough professionals, who are
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.
www.ss-academy.org Our Mission is providing high quality and up-to-date
educational services to students, enabling them to become a generation of ethical,
knowledgeable, responsible, responsive and productive young people. The school
allows students with different learning styles, needs and talents to reach their highest
potential. We welcomes students and teachers regardless of their cultural
backgrounds is certainly a key element to the school’s distinctive character and
empowers students with knowledge, skills and attitudes, allowing them to be both
national and global citizens.
www.maitreyamarketing.com Maitreya Marketing is one stop destination for all
your packaging needs related to materials, machines and Automation. Our wide
range of machines includes Semi-Automatic Box Strapping Machines, Carton
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.
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.
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.
During my 1st semester at VIT University, I learnt, Computer Programming and
Problem Solving using C (CSE 101). This course has helped me throughout my 4 years
at college and at the internship. From this course I had learnt about the general
structures of any programming language, implementation of programs in C etc. This
course was the starting point when I learnt to code and developed an interest towards
coding a computer. The fundamental concepts learned in this course has helped me to
understand other programming languages faster and adapt to the coding standards of
other languages.
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.
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
program dependent and lead to a lot of redundancy. In file management, performing
concurrency is a very hard task. In this course I had learnt how to create databases,
designing of database, and performing operations on database.
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.
This internship added a lot to my existing knowledge in the field of android
development. Many new features and functionalities were implemented throughout
the internship which required a thorough study and helped me develop my technical
Another skill developed at Solution Avenues was learning to use Git. Git is an open
source distributed version control management software. Git helps in tracking the
changes made to files and folders, so that we can easily revert to some older version
of the file. Learning Git was the most important skill I developed. Version control is
important since if the current version or the changed program of the code doesn't work
or has errors, using tools like Git we can easily revert back to the older versions of the
files or check the lines where we have made the changes, making it easier to track
errors. For sharing of code and working with different modules within the team we
made use of Github. Github is another web based platform that helps in cloud storage
of the offline Git repository. The main advantage of using Git and Github is that, each
member of the team had their own local Git repository where they had complete access
to change anything they want. But there is only one central repository at Github where
all the changes that are required to be made by each member is pushed. We could all
update our local repository with the latest updates from all the user, with just a simple
pull command.
During my internship I started off with eclipse IDE to develop android apps which is
truly meant for beginners of Android and in a few days got shifted to Android Studio
IDE on which 97% of the apps are developed. It is a highly advanced IDE with
numerous features embedded and sometimes it becomes tricky to be able to choose
best one for the intended purpose.So, I got a very handy experience on Android Studio
and one major advice that I got from my mentor was that you can’t stop exploring
Android Studio, the more you explore more expertise you’ll get, and it’s like an
endless IDE. As the official developers website of Android Studio has quoted
“Android Studio provides the fastest tools for building apps on every type of Android
device. World-class code editing, debugging, performance tooling, a flexible build
system, and an instant build/deploy system all allow you to focus on building unique
and high quality apps.”
5.1 Introduction to Mobile Technologies
5.1.1 Background about Mobile Technologies
Mobile technology is the technology used for cellular communication. Since the start
of this millennium, a standard mobile device has gone from being no more than a
simple two-way pager to being a mobile phone, GPS navigation device, an embedded
web browser and instant messaging client, and a handheld game console. Many types
of mobile operating systems are available for smart phones, including Android,
BlackBerry OS, iOS, Symbian, Windows Phone etc.
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
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.
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 role—each 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.
Fig. 1: Activity Transition
Fig. 2: Activity Life Cycle
5.2.2 Services
A service is an application component that can perform long-running operations in the
background, and it does not provide a user interface. Another application component
can start a service, and it continues to run in the background even if the user switches
to another application. Additionally, a component can bind to a service to interact with
it and even perform inter process communication (IPC).
For example, a service can handle network transactions, play music, perform file I/O,
or interact with a content provider, all from the background.
A service is started when an application component (such as an activity) calls
startService(). After it's started, a service can run in the background indefinitely, even
if the component that started it is destroyed. Usually, a started service performs a single
operation and does not return a result to the caller. For example, it can download or
upload a file over the network. When the operation is complete, the service should stop
itself. A service is bound when an application component binds to it by calling
bindService(). A bound service offers a client-server interface that allows components
to interact with the service, send requests, receive results, and even do so across
processes with inter process communication (IPC). A bound service runs only as long
as another application component is bound to it. Multiple components can bind to the
service at once, but when all of them unbind, the service is destroyed.
5.2.3 Content Providers
A content provider manages a shared set of application data. You can store the data in
the file system, a SQLite database, on the web, or any other persistent storage location
your application can access. A content provider provides a structured interface to
application data. Via a content provider your application can share data with other
applications. Android contains a SQLite database which is frequently used in
conjunction with a content provider.
5.2.4 Broadcast Receivers
Broadcast Receivers simply respond to broadcast messages from other applications or
from the system itself. These messages are sometime called events or intents.
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
5.2.6 Using intent to launch the activities
There are separate methods for activating each type of component:
You can start an activity (or give it something new to do) by passing Intent to
startActivity() or startActivityForResult() .
You can start a service (or give new instructions to an ongoing service) by
passing an Intent tostartService(). Or you can bind to the service by passing an
Intent to bindService().
You can initiate a broadcast by passing an Intent to methods like
sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast().
You can perform a query to a content provider by calling query on a
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 software’s that is needed before starting Android application
Java JDK5 or later version
Java Runtime Environment (JRE) 6
Android Studio
5.4 Android UI Design
5.4.1 Introducing Layouts
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
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 layout’s orientation is set to vertical, all child controls
within it are organized in a single column; when the layout’s orientation is set to
horizontal, all child controls within it are organized in a single row. Some of the most
important attributes you’ll 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 control’s relative importance within the parent linear layout (class:
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
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 controls—one 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 aren’t 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.
5.4.2 Different UI widgets available in Android
Text View
Edit Text
List View
Radio Button
5.4.3 Dialog Box
A dialog is a small window that prompts the user to make a decision or enter additional
information. A dialog does not fill the screen and is normally used for modal events
that require users to take an action before they can proceed.
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
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.
5.4.6 Notification Manager
A notification is a message you can display to the user outside of your application's
normal UI.
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.
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
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
To create and upgrade a database in our Android application we create a subclass of
the SQLiteOpenHelper class. In the constructor we call the super() method of
SQLiteOpenHelper, specifying the database name and the current database version.
In this class we need to override the following methods to create and update our
onCreate() is called by the framework, if the database is accessed but not yet
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() callreturn database.query(DATABASE_TABLE, new String[] { KEY_ROWID,
null, null);
5.5.3 Opening and Closing a Database
SQLiteDatabase db = this.getWritableDatabase(); //Opening DatabaseConnection
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); //Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); //Contact Phone Number
db.insert(TABLE_CONTACTS, null, values); //Inserting Row
db.close(); //Closing database connection
5.5.4 Cursor
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.
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_COMMENT, comment);
long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null,
return newComment;
N_ID + " = " + id, null);
5.5.5 Content provider and Sharing data
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.
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: -
Fig. 3: Main Screen
Fig. 4: Taking Picture
Fig. 5: Viewing Image
Fig. 6: Negate Image
Fig 7. Image Overlay
Fig. 8: Android Application Development Process
Fig. 9: Android Studio
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 today’s 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 it’s the team at Manal Softech who have made my internship
experience rewarding.
1) https://developer.android.com
2) Android Architecture Retrieved from https://tutorialspoint.com
3) stackoverflow.com
4) www.quora.com