Download File - JULIUS CEASER .A

Document related concepts

Microsoft Jet Database Engine wikipedia , lookup

Database wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Relational model wikipedia , lookup

Clusterpoint wikipedia , lookup

Database model wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Transcript
POI SEARCH APPLICATION USING GOOGLE ANDROID
Project Dissertation Submitted to
SRIMAD ANDAVAN ARTS AND SCIENCE COLLEGE
(Affiliated to BHARATHIDASAN UNIVERSITY)
Nationally accredited with ‘A’ Grade by NAAC
MASTER OF SCIENCE IN INFORMATION TECHNOLOGY
SUBMITTED BY
A.JULIUS CEASER
REG.NO. p 08491707
Under the Guidance of
Mr N.KARTHIKEYAN M.Sc.,Mphil.,ADCSE.,MCP2003.,(Ph.D)
Lecturer, Department of Computer Science
DEPARTMENT OF COMPUTER SCIENCE
SRIMAD ANDAVAN ARTS AND SCIENCE COLLEGE
THRUCHIRAPPALLI – 620005
APRIL– 2010
SRIMAD ANDAVAN ARTS & SCIENCE COLLEGE
(Affiliated to Bharathidhasan University)
Department of Computer Science
MASTER OF SCIENCE IN INFORMATION TECHNOLOGY
CERTIFICATE
This is to certify that the project report entitled “POI SEARCH APPLICATION
USING GOOGLE ANDROID” is a bonafide work done by A.JULIUS CEASER of Register Number:
P 08491707 submitted to Department of Computer Science,Srimad Andavan Arts & Science College
affiliated
Bharathidasan University, Tiruchirappalli during the Fourth
semester Academic year
(DECEMBER 2009 – APRIL-2010)
I certify that the project work carried out by him is an independent work done under
my supervision and guidance.
Ms. R.VIJAYALAHSHMI M.C.A.,M.Com.,M.Ed.,M.Phil. Mr. N.KARTHIKEYAN M.Sc.,Mphil.,ADCSE.,MCP2003.,(Ph.D)
Head of the Department
Place:
Date:
The VIVA – VOCE Exam held on ________________
Signature of the Examiners:
1.
2.
Project Guide
ACKNOWLEDGEMENT
My foremost and sincere thanks to Lord Almighty who helped me and guided me all
throughout my project. I would like to thank Dr.D.Sivasubramanian , M.Com., Ph.D.,Principal, Srimad
Andavan Arts & Science College, Trichy forgiving me an opportunity to study in this prestigious
institution.
I consider myself very fortunate in having Mr.K.SRIDHARAN MCA.,M.S(soft).,
Director of Computer science Department ,Srimad Andavan Arts and Science College, Trichy, Ms. R.
VIJAYALAKSHMI M.C.A.,M.Phil.,M.Com., M.Ed., Head, Department of MCA &
M.SC(I.T),Srimad Andavan Arts and Science College, Trichy for their support and guidance.
With deep sense of gratitude, I express my thanks to my Guide Mr N.KARTHIKEYAN
M.Sc.,Mphil.,ADSCE.,PGDCN.,MCP2003.,(Ph.D).Department of Computer Science, Srimad Andavan
Arts and Science College, Trichy for her endless support, and lab programmers encouragements and
suggestion in the various stages of development of this project.
I extended my thanks to all the faculty members of Computer Science Department who
helped me either directly or indirectly to complete this project.
I also extend my heart felt thanks to all my friends who helped me throughout this project.
CONTENTS
S.NO
1
TITLE
Introduction
1.1 Project Introduction
1.2 Technical knowledge
2
Requirement Specification
2.1 Existing System
2.2 Proposed System
2.3 Functional requirements
2.4 Non functional requirements
3
High Level Design
3.1 Context Diagram
3.2 Use Case Diagram
3.3 Logical View
3.4 Process View
4
Detailed Level Diagram
4.1 Activity Diagram
4.2 Class Diagram
4.3 Data Dictionary
5
Implementation
5.1 Source Code
5.2 Output(Screen Shot)
6
Testing
7
Conclusion
8
Bibliography
PAGE.NO
1.INTRODUCTION
1.1 PROJECT INTRODUCTION
Point of Interest also known as POI Search App is an application for Android phones,
which allows the user to find the information about any locations before getting there. Search results are
displayed on a map as well as in the list. User can add or delete any kind of Point of interests. User also
can find the distance between two locations and draw feasible route between the locations.
Goals and purpose:
o To display all cities in tamilnadu.
o To display various important places in a city.
o To display the location of the place in the mapview.
o To display the route directions in map between two locations.
Scope of Project
The main scope and deliverables of the project would be:
-
Understand and prepare detailed user specifications
Prepare high level and detailed design specifications of the system
Prepare Test Plan & Test cases
Develop a prototype system
Perform unit testing, integration testing, system testing & regression testing
Advantage of Android:

Application framework enabling reuse and replacement of components

Dalvik virtual machine optimized for mobile devices

Integrated browser based on the open source WebKit engine

Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL
ES 1.0 specification (hardware acceleration optional)

SQLite for structured data storage

Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF)

GSM Telephony (hardware dependent)

Bluetooth, EDGE, 3G, and WiFi (hardware dependent)

Camera, GPS, compass, and accelerometer (hardware dependent)

Rich development environment including a device emulator, tools for debugging, memory and
performance profiling, and a plug-in for the Eclipse IDE

If you are in a country where no one understands your language, A translate for android

You cannot read anything ,you have your mobile phone always with you

No additional device needed

Uses XMPP for data transmission
1.2 TECHNICAL KNOWLEDGE
 Android
 Eclipse
 SQLite 3
Android:
Android is a software stack for mobile devices that includes an operating system, middleware
and key applications. The Android SDK provides the tools and APIs necessary to begin developing
applications on the Android platform using the Java programming language.
The Open Handset Alliance (1) released the Google Android SDK on November 12th, 2007,
having announced it about a week before. The impact was unbelievable, almost every IT/programmingrelated news-page dumped a news-post about the SDK release – the Google Groups (2) was overwhelmed
with over 2000 Messages within the first two Days. The idea of the Android Platform was and still is
amazing and is of course attracting more and more programmers every day. Especially the open
architecture based on Intents and the possibility to replace even the Home-application grant a really large
amount of flexibility to the whole platform.
“Android – Imagination is the limit”
LIFE CYCLE:
 Life cycle not directory controlled by application
 System can kill an application to free up memory
 Control through on Create(),on Pause(),on Stop()…methods
 Android has different types of processes, visible processes, service processes, background
processes …
 Services can be used for long –lived background processes.
TOOLS:
o The Android SDK comes with a ADT (Android Development Tools) plug-in for Eclipse
o Android has two debuggers ,adb ,dbms
o adb(Android Debug Bridge)
o install ,shell, log dump
o ddms(Dalvik Debug Monitor Server)
o Android has no device debugging, But currently no devices available
o Android has a packager,aapk.
o Android has an emulator with different skins, Hardware support is very limited, No messaging and
call support.
o Other IDEs can be used, javac 1.5 and 1.6 are supported
o Android uses proven technology like java,XML and LINUX
o It offers a rich API for application development.
o Android doesn’t have many of the limitation of current mobile platform
Applications
Android will ship with a set of core applications including an email client, SMS program, calendar,
maps, browser, contacts, and others. All applications are written using the Java programming language.
Application Framework
Developers have full access to the same framework APIs used by the core applications. The
application architecture is designed to simplify the reuse of components; any application can publish its
capabilities and any other application may then make use of those capabilities (subject to security
constraints enforced by the framework). This same mechanism allows components to be replaced by the
user.
Underlying all applications is a set of services and systems, including:

A rich and extensible set of Views that can be used to build an application, including lists, grids,
text boxes, buttons, and even an embeddable web browser

Content Providers that enable applications to access data from other applications (such as
Contacts), or to share their own data

A Resource Manager, providing access to non-code resources such as localized strings, graphics,
and layout files

A Notification Manager that enables all applications to display custom alerts in the status bar

An Activity Manager that manages the lifecycle of applications and provides a common navigation
back stack
Libraries
Android includes a set of C/C++ libraries used by various components of the Android system. These
capabilities are exposed to developers through the Android application framework. Some of the core
libraries are listed below:

System C library - a BSD-derived implementation of the standard C system library (libc), tuned
for embedded Linux-based devices

Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and
recording of many popular audio and video formats, as well as static image files, including
MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG

Surface Manager - manages access to the display subsystem and seamlessly composites 2D and
3D graphic layers from multiple applications

LibWebCore - a modern web browser engine which powers both the Android browser and an
embeddable web view

SGL - the underlying 2D graphics engine

3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware
3D acceleration (where available) or the included, highly optimized 3D software rasterizer

FreeType - bitmap and vector font rendering

SQLite - a powerful and lightweight relational database engine available to all applications
Android Runtime
Android includes a set of core libraries that provides most of the functionality available in the
core libraries of the Java programming language.
Every Android application runs in its own process, with its own instance of the Dalvik virtual
machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM
executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint.
The VM is register-based, and runs classes compiled by a Java language compiler that have been
transformed into the .dex format by the included "dx" tool.
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and lowlevel memory management.
ECLIPSE:
Eclipse is a multi-language software development environment comprising an integrated
development environment (IDE) and an extensible plug-in system. It is written primarily in Java and can
be used to develop applications in Java and, by means of the various plug-ins, in other languages as well,
including C, C++, COBOL, Python, Perl, PHP, and others. The IDE is often called Eclipse ADT for Ada,
Eclipse CDT for C, Eclipse JDT for Java and Eclipse PDT for PHP.
The initial codebase originated from Visual Age. In its default form it is meant for Java
developers, consisting of the Java Development Tools (JDT). Users can extend its capabilities by
installing plug-ins written for the Eclipse software framework, such as development toolkits for other
programming languages, and can write and contribute their own plug-in modules.
The Eclipse platform itself is structured as subsystems which are implemented in one or
more plug-ins. The subsystems are built on top of a small runtime engine. The figure below depicts a
simplified view.
History
Eclipse began as an IBM Canada project. It was developed by Object Technology International
(OTI) as a Java-based replacement for the Smalltalk based Visual Age family of IDE products, which
itself had been developed by OTI.In November 2001, a consortium was formed to further the development
of Eclipse as open source. In January 2004, the Eclipse Foundation was created.
Eclipse 3.0 (released on June 21, 2004) selected the OSGi Service Platform specifications as the
runtime architecture.
Eclipse was originally released under the Common Public License, but was later relicensed
under the Eclipse Public License. The Free Software Foundation has said that both licenses are free
software licenses, but are incompatible with the GNU General Public License (GPL). Mike Milinkovich,
of the Eclipse Foundation commented that moving to the GPL would be considered when version 3 of the
GPL was released.
According to Lee Nackman, Chief Technology Officer of IBM's Rational division at that time
and later head of Rational software development and support, the name "Eclipse" was chosen to target
Microsoft's Visual Studio product, and not Sun Microsystems. Ironically, Nackman is now himself a
Microsoft employee.
Workbench
The term Workbench refers to the desktop development environment. The Workbench aims to
achieve seamless tool integration and controlled openness by providing a common paradigm for the
creation, management, and navigation of workspace resources.
Each Workbench window contains one or more perspectives. Perspectives contain views and
editors and control what appears in certain menus and tool bars. More than one Workbench window can
exist on the desktop at any given time.
Architecture
Eclipse employs plug-ins in order to provide all of its functionality on top of (and including) the
runtime system, in contrast to some other applications where functionality is typically hard coded. The
runtime system of Eclipse is based on Equinox, an OSGi standard compliant implementation.
This plug-in mechanism is a lightweight software compoentry framework. In addition to allowing
Eclipse to be extended using other programming languages such as C and Python, the plug-in framework
allows Eclipse to work with typesetting languages like LaTeX,[2] networking applications such as telnet,
and database management systems. The plug-in architecture supports writing any desired extension to the
environment, such as for configuration management. Java and CVS support is provided in the Eclipse
SDK, with Subversion support provided by third-party plug-ins.
With the exception of a small run-time kernel, everything in Eclipse is a plug-in. This means
that every plug-in developed integrates with Eclipse in exactly the same way as other plug-ins; in this
respect, all features are created equal. Eclipse provides plug-ins for a wide variety of features, some of
which are through third parties using both free and commercial models. Examples of plug-ins include a
UML plug-in for Sequence and other UML diagrams, a plug-in for Database explorer, and many others.
The Eclipse SDK includes the Eclipse Java Development Tools (JDT), offering an IDE with a
built-in incremental Java compiler and a full model of the Java source files. This allows for advanced
refactoring techniques and code analysis. The IDE also makes use of a workspace, in this case a set of
metadata over a flat file space allowing external file modifications as long as the corresponding workspace
"resource" is refreshed afterwards. The Visual Editor project allows interfaces to be created interactively,
thus allowing Eclipse to be used as an RAD tool.
Eclipse's widgets are implemented by a widget toolkit for Java called SWT, unlike most Java
applications, which use the Java standard Abstract Window Toolkit (AWT) or Swing. Eclipse's user
interface also uses an intermediate GUI layer called JFace, which simplifies the construction of
applications based on SWT.Language packs provide translations into over a dozen natural languages.
Rich Client Platform
Eclipse provides the Eclipse Rich Client Platform (RCP) for developing general purpose
applications. The following components constitute the rich client platform:
* Equinox OSGi – a standard bundling framework
* Core platform – boot Eclipse, run plug-ins
* Standard Widget Toolkit (SWT) – a portable widget toolkit
* JFace – viewer classes to bring model view controller programming to SWT, file buffers, text
handling, text editors
* Eclipse Workbench – views, editors, perspectives, wizards
SQLite :
SQLite is a in-process library that implements a self-contained, serverless, zeroconfiguration, transactional SQL database engine. The code for SQLite is in the public domain and is thus
free for use for any purpose, commercial or private. SQLite is currently found in more applications than
we can count, including several high-profile projects.
SQLite is an embedded SQL database engine. Unlike most other SQL databases, SQLite does
not have a separate server process. SQLite reads and writes directly to ordinary disk files. A complete
SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. The
database file format is cross-platform - you can freely copy a database between 32-bit and 64-bit systems
or between big-endian and little-endian architectures. These features make SQLite a popular choice as an
Application File Format. Think of SQLite not as a replacement for Oracle but as a replacement for fopen()
SQLite is a compact library. With all features enabled, the library size can be less than
300KiB, depending on compiler optimization settings. (Some compiler optimizations such as aggressive
function inclining and loop unrolling can cause the object code to be much larger.) If optional features are
omitted, the size of the SQLite library can be reduced below 180KiB. SQLite can also be made to run in
minimal stack space (4KiB) and very little heap (100KiB), making SQLite a popular database engine
choice on memory constrained gadgets such as cell phones, PDAs, and MP3 players. There is a tradeoff
between memory usage and speed. SQLite generally runs faster the more memory you give it.
Nevertheless, performance is usually quite good even in low-memory environments.
SQLite is very carefully tested prior to every release and has a reputation for being very
reliable. Most of the SQLite source code is devoted purely to testing and verification. An automated test
suite runs millions and millions of test cases involving hundreds of millions of individual SQL statements
and achieves 100% branch test coverage. SQLite responds gracefully to memory allocation failures and
disk I/O errors.
Transactions are ACID even if interrupted by system crashes or power failures. All of this is
verified by the automated tests using special test harnesses which simulate system failures. Of course,
even with all this testing, there are still bugs. But unlike some similar projects (especially commercial
competitors) SQLite is open and honest about all bugs and provides bugs lists including lists of critical
bugs and minute-by-minute chronologies of bug reports and code changes.
The SQLite code base is supported by an international team of developers who work on
SQLite full-time. The developers continue to expand the capabilities of SQLite and enhance its reliability
and performance while maintaining backwards compatibility with the published interface spec, SQL
syntax, and database file format. The source code is absolutely free to anybody who wants it, but
professional support is also available.
We the developers hope that you find SQLite useful and we charge you to use it well: to
make good and beautiful products that are fast, reliable, and simple to use. Seek forgiveness for yourself
as you forgive others. And just as you have received SQLite for free, so also freely give, paying the debt
forward.
Features Of SQLite
* Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and
power failures.
* Zero-configuration - no setup or administration needed.
* Implements most of SQL92. (Features not supported)
* A complete database is stored in a single cross-platform disk file.
* Supports terabyte-sized databases and gigabyte-sized strings and blobs. (See limits.html.)
* Small code footprint: less than 300KiB fully configured or less than 180KiB with optional features
omitted.
* Faster than popular client/server database engines for most common operations.
* Simple, easy to use API.
* Written in ANSI-C. TCL bindings included. Bindings for dozens of other languages available
separately.
* Well-commented source code with 100% branch test coverage.
* Available as a single ANSI-C source-code file that you can easily drop into another project.
* Self-contained: no external dependencies.
* Cross-platform: Unix (Linux and Mac OS X), OS/2, and Windows (Win32 and WinCE) are supported
out of the box. Easy to port to other systems.
* Sources are in the public domain. Use for any purpose.
* Comes with a standalone command-line interface (CLI) client that can be used to administer SQLite
databases.
Appropriate Uses For SQLite
SQLite is different from most other SQL database engines in that its primary design goal is to be simple:
* Simple to administer
* Simple to operate
* Simple to embed in a larger program
* Simple to maintain and customize
Many people like SQLite because it is small and fast. But those qualities are just happy accidents.
Users also find that SQLite is very reliable. Reliability is a consequence of simplicity. With less
complication, there is less to go wrong. So, yes, SQLite is small, fast, and reliable, but first and foremost,
SQLite strives to be simple.
Simplicity in a database engine can be either a strength or a weakness, depending on what you are
trying to do. In order to achieve simplicity, SQLite has had to sacrifice other characteristics that some
people find useful, such as high concurrency, fine-grained access control, a rich set of built-in functions,
stored procedures, esoteric SQL language features, XML and/or Java extensions, tera- or peta-byte
scalability, and so forth. If you need some of these features and do not mind the added complexity that
they bring, then SQLite is probably not the database for you. SQLite is not intended to be an enterprise
database engine. It is not designed to compete with Oracle or PostgreSQL.
The basic rule of thumb for when it is appropriate to use SQLite is this: Use SQLite in situations
where simplicity of administration, implementation, and maintenance are more important than the
countless complex features that enterprise database engines provide. As it turns out, situations where
simplicity is the better choice are more common than many people realize.
Another way to look at SQLite is this: SQLite is not designed to replace Oracle. It is designed to
replace fopen().Situations Where SQLite Works Well
*Application File Format
SQLite has been used with great success as the on-disk file format for desktop applications such as
financial analysis tools, CAD packages, record keeping programs, and so forth. The traditional File/Open
operation does an sqlite3_open() and executes a BEGIN TRANSACTION to get exclusive access to the
content. File/Save does a COMMIT followed by another BEGIN TRANSACTION. The use of
transactions guarantees that updates to the application file are atomic, durable, isolated, and consistent.
Temporary triggers can be added to the database to record all changes into a (temporary) undo/redo
log table. These changes can then be played back when the user presses the Undo and Redo buttons. Using
this technique, an unlimited depth undo/redo implementation can be written in surprisingly little code.
*Embedded devices and applications
Because an SQLite database requires little or no administration, SQLite is a good choice for devices or
services that must work unattended and without human support. SQLite is a good fit for use in cellphones,
PDAs, set-top boxes, and/or appliances. It also works well as an embedded database in downloadable
consumer applications.
* Websites
SQLite usually will work great as the database engine for low to medium traffic websites (which is to
say, 99.9% of all websites). The amount of web traffic that SQLite can handle depends, of course, on how
heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day
should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper
bound. SQLite has been demonstrated to work with 10 times that amount of traffic.
*Replacement for ad hoc disk files
Many programs use fopen(), fread(), and fwrite() to create and manage files of data in home-grown
formats. SQLite works particularly well as a replacement for these ad hoc data files.
*Internal or temporary databases
For programs that have a lot of data that must be sifted and sorted in diverse ways, it is often easier
and quicker to load the data into an in-memory SQLite database and use queries with joins and ORDER
BY clauses to extract the data in the form and order needed rather than to try to code the same operations
manually. Using an SQL database internally in this way also gives the program greater flexibility since
new columns and indices can be added without having to recode every query.
*Command-line dataset analysis tool
Experienced SQL users can employ the command-line sqlite program to analyze miscellaneous
datasets. Raw data can be imported from CSV files, then that data can be sliced and diced to generate a
myriad of summary reports. Possible uses include website log analysis, sports statistics analysis,
compilation of programming metrics, and analysis of experimental results.
You can also do the same thing with an enterprise client/server database, of course. The advantages to
using SQLite in this situation are that SQLite is much easier to set up and the resulting database is a single
file that you can store on a floppy disk or flash-memory stick or email to a colleague.
*Stand-in for an enterprise database during demos or testing
If you are writing a client application for an enterprise database engine, it makes sense to use a generic
database backend that allows you to connect to many different kinds of SQL database engines. It makes
even better sense to go ahead and include SQLite in the mix of supported databases and to statically link
the SQLite engine in with the client. That way the client program can be used standalone with an SQLite
data file for testing or for demonstrations.
*Database Pedagogy
Because it is simple to setup and use (installation is trivial: just copy the sqlite or sqlite.exe executable
to the target machine and run it) SQLite makes a good database engine for use in teaching SQL. Students
can easily create as many databases as they like and can email databases to the instructor for comments or
grading. For more advanced students who are interested in studying how an RDBMS is implemented, the
modular and well-commented and documented SQLite code can serve as a good basis. This is not to say
that SQLite is an accurate model of how other database engines are implemented, but rather a student who
understands how SQLite works can more quickly comprehend the operational principles of other systems.
*Experimental SQL language extensions
The simple, modular design of SQLite makes it a good platform for prototyping new, experimental
database language features or ideas.
2. REQUIREMENT SPECIFICATION
2.1 EXISTING SYSTEM
The Existing System is POI search running on iPhone. The Mobile phones are basically now operating in
5 different major environment

Symbion OS (Proprietary)

Microsoft Windows CE (.NET and C#)

Apple iPhone (Proprietary Objective C)

Google Android (Java)

J2ME
POI search application in available in all above mention the O.S expect Google android
Drawback
All other O.S are not open source
2.2 PROPOSED SYSTEM
The POI Search application which running on iPhone can be migrate to Google Android Phone(Gphone).
Advantages of Proposed System
Google's Android operating system is an open-source platform.
It is highly customizable.
It is a mobile phone platform based on Linux, with clear and simple user interface and applications,
created in Java. This strategy, which is about to declare not a single Gphone, but to put Android into
existing and new mobiles devices and to make thousands of Gphones, gives mobile operators and device
manufacturers significant freedom and flexibility to design products.
Android mobile phone platform is going to be more secure than Apple’s iPhone or any other device
in the long run.
Android is made up of several necessary and dependent parts including the following:
A hardware reference design that describes the capabilities required of a mobile device in order to support
the software stack. .
A Linux operating system kernel that provides the low-level interface with the hardware, memory
management, and process control, all optimized for mobile devices.
Open source libraries for application development including SQLite, WebKit, OpenGL, and a media
manager.
A run time used to execute and host Android applications, including the Dalvik virtual machine and the
core libraries that provide Android specific functionality.
The run time is designed to be small and efficient for use on mobile devices.
An application framework that agnostically exposes system services to the application layer,
including the window manager, content providers, location manager, telephony, and peer-to-peer services.
A user interface framework used to host and launch applications .
Preinstalled applications shipped as part of the stack.
A software development kit used to create applications, including the tools, plug-ins, and documentation.
So we have planned to develop our Jobsearch application in Android Phones.
2.3 FUNCTIONAL REQUIREMENTS
POI Search:
Having started the application which contains the home screen as a Location Search
view.Location Search can be done by providing a particular location and then a list of POI. Based on the
values provided, the related POI's location will be displayed in the Google Map and in the List View for
the user convenience . From the populated List we can view the complete details of the POI by tapping the
respective POI in the POI list. From the details screen of the selected POI user could make calls if the
contact number it is available.place.
Route Display
user could view the route between two locations and also could view the itinerary either by list or
in the map.
Imprint:
The imprint screen is a site inside the application which provides several useful information’s. To
view this information’s the application has to show a web page from the particular Point of Interest's
website by using web view component.
Assumptions and Dependencies
Developing for Mobile Devices
There are several factors to account for when writing software for mobile and embedded devices,
Hardware-Imposed Design Considerations
Small and portable, mobile devices offer exciting opportunities for software development. Their limited
screen size and reduced memory, storage, and processor power are far less exciting, and instead present
some unique challenges.
Compared to desktop or notebook computers, mobile devices have relatively:
Low processing power
Limited RAM
Limited permanent storage capacity
Small screens with low resolution
Higher costs associated with data transfer
Slower data transfer rates with higher latency
Less reliable data connections
Limited battery life
It’s important to keep these restrictions in mind when creating new applications.
2.4 NON FUNCTIONAL REQUIREMENTS
HARDWARE REQUIREMENTS
PROCESSOR
: Intel Centrino core Duo Processor
SPEED
: 3.5 GHZ
RAM
: 2 GB
HARD DISK
: 250 GB
KEYBOARD
: 104 Keys Keyboard
MOUSE
: Logitech
DISPLAY
: 16 bit VDU with 800X600 resolutions
SOFTWARE REQUIREMENTS
OPERATING SYSTEM
: Windows 7 Simlepack
FRONT-END
: Java 6.0
BACK-END
: SQLite 3 ( Mobile inbuilt Database)
DIAGRAM TOOLS
: Concept Draw 2
3. HIGH LEVEL DESIGN
3.1 CONTEXT DIAGRAM:
Context Diagram summarizes all processing activity and also helps users to view highest
level of system with system boundaries. The system overview can be shown in the form of context
diagram.
3.2 USECASE DIAGRAM
UNIFIED MODELING LANGUAGE DIAGRAMS

The unified modeling language allows the software engineer to express an analysis model using
the modeling notation that is governed by a set of syntactic semantic and pragmatic rules.

A UML system is represented using five different views that describe the system from distinctly
different perspective. Each view is defined by a set of diagram, which is as follows.

User Model View
I. This view represents the system from the users perspective.
II. The analysis representation describes a usage scenario from the end-users perspective.
Structural Model View
 In this model the data functionality are arrived from inside the system.
 This model view models the static structures.
Behavioral Model View
 It represents the dynamic of behavioral as parts of the system, depicting the interactions of
collection between various structural elements described in the user model and structural model
view.
Implementation Model View

In this the structural and behavioral as parts of the system are represented as they are to
built
Environmental Model View
In this the structural and behavioral aspects of the environment in which the system is to be
implemented are represented.
UML is specifically constructed through two different domains they are

UML Analysis modeling , which focuses in the user model and structural model views of
the system.

UML design modeling, which focuses on the behavioral modeling, implementation
modeling and environmental model views.
Use case Diagrams represent the functionally of the system from a user’s point of view. Use case are
used during requirements elicitation and analysis to represents the functionality of the system. Use
cases focus on the behavior of the system from external point of view
Use case Mode:
POI Search:
Route Display:
Imprint:
Use case name
POI Search
Participating actors
User
Flow of events
The User will show the Gphone (OR)
Iphone open the application
Entry Condition
View the Place
Exit Condition
Successful or Unsuccessful completion
application
Quality Requirements
View correct position
Use case name
Route Display
Participating actors
User
Flow of events
The User will show route from and to
distance
Entry Condition
View the map in route direction
Exit Condition
Successful or Unsuccessful route display
Quality Requirements
View correct route display
Use case name
Imprint
Participating actors
User
Flow of events
The User will show the imprint
Entry Condition
View the rules and regulation
Exit Condition
Successful or Unsuccessful condition
Quality Requirements
View quality rules
3.3 LOGICAL VIEW
This section describes the architecturally significant parts of the design model, such as
decomposition into subsystems. Its decomposition into classes and class utilities.
POI Search
Cities : Varchar
Route Display
Imprint page
From : Varchar
Imprint : varchar
Location: Varchar
Contact : Varchar
To : Varchar
Search()
Display Map ()
Place()
3.4 PROCESS VIEW
View()
This section describes the system’s decomposition into main sequence of flows .
POI Search:
Route Display:
Imprint :
4. DETAILED LEVEL DIAGRAM
4.1 ACTIVITY DESCRIPTION (operate mode)
4.2 CLASS DIAGRAM
POI Search
Cities : Varchar
Location: Varchar
Contact : Varchar
Search()
Place()
Route Display
From : Varchar
To: Varchar
Display Map ()
Imprint page
Imprint : varchar
View()
4.3 DATA DICTIONARY
MAP
CITIES : VARCHAR(20)
LOCATION : VARCHAR(20)
CONTACTS:VARCHAR(20)
<<PK>>PK_CITIES()
5.IMPLEMENTATION
Implementation is the stage of converting a new or revised system design into an
operational one. Conversion means from one system to another. The objective of the system
implementation is to put the tested system into operation while maintaining cost, risk and the
personal irritation at their minimum level.
Implementation is the crucial stage in the life cycle of new system design
implementation means converting a new or revised system design into an operational one.
The system implementation involves:
1. Creating computer files.
2. Installing terminals-hardware and necessary software.
Implementation Planning:
In order to implementation a system developed, planning is very essential .Proper
planning has been done to take care of the issue listed below.
1. Implementation of system environments.
2. Stand by facilities.
3. Channels of communication.
4. Method of change over.
5. Resources available.
5.1 SOURCE CODE:
HelloTabWidget.java
package com.examples.HelloTabWidget;
import
import
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.app.TabActivity;
android.content.Context;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.view.Window;
android.webkit.WebChromeClient;
android.webkit.WebView;
android.widget.Button;
android.widget.TabHost;
android.widget.TextView;
public class HelloTabWidget extends TabActivity {
/** Called when the activity is first created. */
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost mTabHost = getTabHost();
mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("POI
-SEARCH")
.setContent(new Intent(this, Sz_dPush.class)));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("ROU
TE DISPLAY")
.setContent(new Intent(this, one.class)));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("IMP
RINT")
.setContent(new Intent(this,imprint.class)));
mTabHost.setCurrentTab(0);
}
}
Sz_dPush.java
package com.examples.HelloTabWidget;
import java.util.ArrayList;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.graphics.Color;
android.os.Bundle;
android.util.Log;
android.view.View;
android.webkit.WebSettings;
android.webkit.WebView;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.LinearLayout;
android.widget.ListView;
android.widget.RelativeLayout;
android.widget.AdapterView.OnItemClickListener;
public class Sz_dPush extends Activity implements OnItemClickListener {
LinearLayout l1, l2, l3, l4;
RelativeLayout r;
private ListView lv1, lv2, lv3;
String s1 = "", s2 = "", s3 = "";
SQLiteDatabase myDB = null;
String TableName = "sqd";
Button b;
WebView mWebView;
String Data = "";
private String lv_arr1[] = { "Trichy", "Chennai", "Coimbatore",
"Salem",
"Erode", "Thanjavur" };
private String lv_arr2[] = { "Hotels", "Theatres", "Temples",
"CoffeeShops", "SuperMarket" ,"Busstop","Railway
station","Airport","police station" ,"Travels","Hospital"};
ArrayList<String> results = new ArrayList<String>();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
l1 = new LinearLayout(this);
lv1 = new ListView(this);
l1.addView(lv1);
lv1.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lv_arr1));
lv1.setTextFilterEnabled(true);
l2 = new LinearLayout(this);
lv2 = new ListView(this);
l2.addView(lv2);
lv2.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lv_arr2));
lv2.setTextFilterEnabled(true);
l3 = new LinearLayout(this);
lv3 = new ListView(this);
l3.addView(lv3);
lv3.setTextFilterEnabled(true);
l4 = new LinearLayout(this);
r=new RelativeLayout(this);
b = new Button(this);
b.setText("Back");
mWebView = new WebView(this);
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
l4.addView(mWebView);
r.addView(b);
l4.addView(r);
l4.setBackgroundColor(Color.BLACK);
l4.setOrientation(LinearLayout.VERTICAL);
try {
myDB = this.openOrCreateDatabase("sqd", MODE_PRIVATE,
null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS " + TableName
+ " (Field1 VARCHAR, Field2 VARCHAR,Field3
VARCHAR);");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hotels','Sathyam');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hotels','Royals');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hotels','Mayas');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hotels','Sangam');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hotels','Femina');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Theatres','Airportmain');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Busstop','junction');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Busstop','chataram');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Railway','Railway
junction');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES
('Trichy','Hospital','Goverment');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Hospital','KMC');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','Tourist','Travels');");
myDB.execSQL("INSERT INTO " + TableName +
" (Field1, Field2,Field3)" +
" VALUES ('Trichy','police station','Head
Office');");
} catch (Exception e) {
Log.e("Error", "Error", e);
} finally {
if (myDB != null)
myDB.close();
}
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int
position,
long id) {
s1 = (String) lv1.getItemAtPosition(position);
System.out.println("+++++++++++++++++++++++++++" +
s1);
setContentView(l2);
}
});
lv2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int
position,
long id) {
s2 = (String) lv2.getItemAtPosition(position);
System.out.println("+++++++++++++++++++++++++++" +
s2);
myDB = openOrCreateDatabase("sqd", MODE_PRIVATE,
null);
Cursor c = myDB.rawQuery("SELECT Field3 FROM " +
TableName
+ " WHERE Field1='" + s1 + "'and
Field2='" + s2 + "' ",
null);
c.moveToFirst();
int Column1 = c.getColumnIndex("Field3");
if (c != null) {
do {
String Name = c.getString(Column1);
results.add(Name);
} while (c.moveToNext());
}
lv3.setAdapter(new
ArrayAdapter<String>(Sz_dPush.this,
android.R.layout.simple_list_item_1,
results));
setContentView(l3);
}
});
lv3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int
position,
long id) {
s3 = (String) lv3.getItemAtPosition(position);
System.out.println("+++++++++++++++++++++++++++" +
s3);
if (s3.equalsIgnoreCase("Sathyam")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/demo1.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("mayas")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/mayas.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("femina")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/femina.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("Sangam")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/sangam.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("Royals")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/demo.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("Ramba")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/Ramba.html");
setContentView(l4);
}
if (s3.equalsIgnoreCase("Airport")) {
System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);
mWebView.loadUrl("file:///android_asset/Airport.html");
setContentView(l4);
}
}
});
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setContentView(l1);
}
});
setContentView(l1);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
}
One.java:
package com.examples.HelloTabWidget;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import
import
import
import
import
import
import
import
android.view.View;
android.webkit.WebView;
android.widget.AbsoluteLayout;
android.widget.Button;
android.widget.EditText;
android.widget.LinearLayout;
android.widget.RelativeLayout;
android.widget.TextView;
public class one extends Activity {
LinearLayout l, l2;
WebView browse;
TextView tv1, tv2;
EditText et1, et2;
Button b, b1;
String s1 = "", s2 = "";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
l = new LinearLayout(this);
l2 = new LinearLayout(this);
browse = new WebView(this);
tv1 = new TextView(this);
tv2 = new TextView(this);
et1 = new EditText(this);
et2 = new EditText(this);
b = new Button(this);
b1 = new Button(this);
b.setText("Go");
b1.setText("Back");
tv1.setText("From");
tv2.setText("To");
l.addView(tv1);
l.addView(et1);
l.addView(tv2);
l.addView(et2);
l.addView(b);
l.setOrientation(LinearLayout.VERTICAL);
l2.setOrientation(LinearLayout.VERTICAL);
l2.setBackgroundColor(Color.BLACK);
b1.setBackgroundColor(Color.CYAN);
l2.addView(browse);
l2.addView(b1);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s1 = et1.getText().toString();
s2 = et2.getText().toString();
if (s1.equalsIgnoreCase("Trichy")
&& s2.equalsIgnoreCase("Chennai")) {
browse.loadUrl("file:///android_asset/demo2.html");
setContentView(l2);
}
if (s1.equalsIgnoreCase("Trichy")
&&
s2.equalsIgnoreCase("Coimbatore")) {
browse.loadUrl("file:///android_asset/trycoim.html");
setContentView(l2);
}
if (s1.equalsIgnoreCase("Trichy")
&&
s2.equalsIgnoreCase("Erode")) {
browse.loadUrl("file:///android_asset/tryero.html");
setContentView(l2);
}
if
(s1.equalsIgnoreCase("Trichy")
&&
s2.equalsIgnoreCase("Salem")) {
browse.loadUrl("file:///android_asset/trysal.html");
setContentView(l2);
} else
et1.setText("Error");
}
});
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setContentView(l);
}
});
setContentView(l);
}
}
Imprint.java
package com.examples.HelloTabWidget;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class imprint extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView w=new WebView(this);
w.loadUrl("file:///android_asset/imprint.html");
setContentView(w);
}
}
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:background="@drawable/icon">
<TabWidget
android:id="@android:id/tabs"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:background="#ff006666"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</FrameLayout>
</LinearLayout>
</TabHost>
5.2 OUTPUT
SCREEN
SHOTS:
6.TESTING
SYSTEM TESTING:
System testing is the stage of implementation, which is aimed at ensuring that the
system works accurately and efficiently before the live operation commences. Testing is valid to the
success of the system. An elaborate testing of the data is prepared and the system is tested using this test
data. While testing errors are noted and corrections are made. The user is trained to operate the developed
system. Both hardware and software securities are made to run the developed system. Both hardware and
software securities are made to run the developed system successfully in the future.
Testing steps are:
Unit Testing
Integration Testing
Validation Testing
User Acceptance Testing
Unit Testing:
Unit testing focuses on verification efforts on the smallest unit of the software design, the module.
This is also known as “module testing”. The modules are tested separately. This is carried out during the
programming stage. In this stage each module is found to be working satisfactorily as regarded to the
expected output from the module.
Integration Testing:
Integration testing is a systematic method for conducting test to uncover errors, associated within
the interface. In this phase all the modules are combined and then the project is run as a whole. Thus in
integration testing step, all the errors uncovered are corrected for the next testing steps.
The following are the types of integration testing:
1. Top down Integration.
2. Bottom-up Integration.
Validation Testing:
Validation testing is where requirements established as part of software requirement analysis is
validated against the software that has been developed. This test provides the final assurance that the
software meets all the functional, behavioral and performance requirements. Thus in validation testing
step, all the errors uncovered during Integration testing are corrected.
The following are the types of validation testing:
1. Text field
2. Numeric field
User Acceptance Testing:
User Acceptance of as system is the key factor for the success for the success of any system. The
system under consideration is tested for user acceptance by constantly in touch with the prospective
system users at time of developing and making changes wherever required is done in regard to the
following point:
1. Input Screen Design
2. Output Screen Design
3. Menu Driven System
Output Testing:
After performing the validation testing, the next step is output testing of the proposed system, since
no system could be useful if it does not produce the required output in the specified format. Asking the
users about the format required by them tests the outputs generated or displayed by the system under
consideration. Hence the output format is considered in 2 ways. One is on screen and another in printed
format.
7.CONCLUSION
This software is very useful for travelers and tourism guide.We have covered only
tamilnadu.We can upgrade our software to cover entire india in future .
Driving direction can displayed and user can view the route between two locations.
We can use this software with GPS(Global Positioning System) in future.
As android is open source there is no need to buy license .
8.BIBLIOGRAPHY
BOOKS:
1. Android Programming with Tutorials from the anddev.org-Community. written by Nicolas
Gramlich
2. A first look at Google Android written byTomas Katysovas [email protected]
Free University of Bolzano, Internet Technologies 2. 2007-2008
3. Professional Android™ Application Development Written by Reto Meier Wiley Publishing, Inc.
WEBSITES:
http://andbook.anddev.org
http://code.google.com/android
www.wiley.com
http://code.google.com/android/adc_gallery/
http://www.android.com/market/