JULIUS CEASER .A



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

[pic]

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.Ed.,M.Phil. Mr. N.KARTHIKEYAN M.Sc.,Mphil.,ADCSE.,MCP2003.,(Ph.D)

Head of the Department Project Guide

Place:

Date:

The VIVA – VOCE Exam held on ________________

Signature of the Examiners:

1.

2.

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 , ., 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.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 |TITLE |PAGE.NO |

|1 |Introduction | |

| |Project Introduction | |

| |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 | |

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/programming-related 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 low-level 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. [pic]

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, zero-configuration, 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.

[pic]

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:

[pic]

Route Display:

[pic]

Imprint:

[pic]

|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 |

|Location: Varchar |

|Contact : Varchar |

|Search() |

| |

|Place() |

3.4 PROCESS VIEW

This section describes the system’s decomposition into main sequence of flows .

POI Search:

[pic]

Route Display:

[pic]

Imprint :

[pic]

4. DETAILED LEVEL DIAGRAM

1. ACTIVITY DESCRIPTION (operate mode)

[pic]

2. CLASS DIAGRAM

|POI Search |

|Cities : Varchar |

|Location: Varchar |

|Contact : Varchar |

|Search() |

|Place() |

3. DATA DICTIONARY

| MAP |

|CITIES : VARCHAR(20) |

|LOCATION : VARCHAR(20) |

|CONTACTS:VARCHAR(20) |

|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 android.app.Activity;

import android.app.TabActivity;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.Window;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.TabHost;

import 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("ROUTE DISPLAY")

.setContent(new Intent(this, one.class)));

mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("IMPRINT")

.setContent(new Intent(this,imprint.class)));

mTabHost.setCurrentTab(0);

}

}

Sz_dPush.java

package com.examples.HelloTabWidget;

import java.util.ArrayList;

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Color;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.RelativeLayout;

import 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 results = new ArrayList();

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

l1 = new LinearLayout(this);

lv1 = new ListView(this);

l1.addView(lv1);

lv1.setAdapter(new ArrayAdapter(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(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','Airport-main');");

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(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("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("mayas")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("femina")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("Sangam")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("Royals")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("Ramba")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

setContentView(l4);

}

if (s3.equalsIgnoreCase("Airport")) {

System.out.print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" + s3);

mWebView.loadUrl("");

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 android.view.View;

import android.webkit.WebView;

import android.widget.AbsoluteLayout;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import 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("");

setContentView(l2);

}

if (s1.equalsIgnoreCase("Trichy")

&& s2.equalsIgnoreCase("Coimbatore")) {

browse.loadUrl("");

setContentView(l2);

}

if (s1.equalsIgnoreCase("Trichy")

&& s2.equalsIgnoreCase("Erode")) {

browse.loadUrl("");

setContentView(l2);

} if (s1.equalsIgnoreCase("Trichy")

&& s2.equalsIgnoreCase("Salem")) {

browse.loadUrl("");

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("");

setContentView(w);

}

}

Main.xml

5.2 OUTPUT

SCREEN SHOTS:

[pic]

[pic]

[pic]

[pic]

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 -Community. written by Nicolas Gramlich

2. A first look at Google Android written byTomas Katysovas tkatysovas@unibz.it

Free University of Bolzano, Internet Technologies 2. 2007-2008

3. Professional Android™ Application Development Written by Reto Meier Wiley Publishing, Inc.

WEBSITES:











[pic]

-----------------------

Imprint page

Route Display

Imprint : varchar

From : Varchar

To : Varchar

View()

Display Map ()

Route Display

From : Varchar

To: Varchar

Display Map ()

Imprint page

Imprint : varchar

View()

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download