Sie sind auf Seite 1von 58

CONTENTS

1. Introduction 2
1.1 synopsis 3
1.2 modules 5

2. System analysis 7
2.1 Existing system 8
2.2 Proposed system 8
2.3 Feasibility analysis 9

3. System specification 11
3.1 Hardware requirement 12
3.2 software requirement 12

4.System design 13
4.1 Data flow diagram 14

5.Software development 15
5.1 Platform overview 16

6. Source code 19
7. System testing and implementation 38
7.1 System testing 39
7.2 System implimentation 41
7.3 System maintanance 41

8.Conclusion 43
9.Future enhancement 45
10.Appendix 47
11.Bibliography 56

1
INTRODUCTION

..

2
SYNOPSIS
Auto Spotty is a location based reminder scheduling android application .This application
also manages calls and profiles according to location and time. Your phone will never again
ring at the theater or at in office. No spam calls during office hours or at night. Block calls,
remind yourself to buy something when you are near the store. Change ringtone and vibration
based on your current spot.

Imagine you have to remember to buy something when youre near the market, or you want
to set silent mode when you are at office or even send a message to your family when you are
at work automatically. Its easy, automatic and reliable thanks to a very powerful geo-
localization technology, developed to improve your time and resources. You can set specific
time range, or simply decide it doesnt matter where but only when. Emergency Panic
Button is another feature that Improve your own safety by installing this app on your device
and letting everybody know you are in trouble by sending a short alert notification containing
your current location that is fetched using GPS to your friends/family via email or SMS. IF
GPS or Internet connectivity is not available then the CellID and LAC (Location Area Code)
of the SIM currently in use will be sent friends/family along with a custom message. When
you are in driving you cant attend the call then sent a message to the caller that you are
driving /travelling.
Description:
Reminders, whether from calendars or to-do lists, are typically time based, so they will remind
you to perform an action at a desired time. However, in this project location based reminders
or 'geo-reminders' has been proposed and this could possibly be used to avoid drawbacks of
existing system.
Location based reminders are reminders which, instead of alerting you at a set time, alert you
when you enter a set location. So, you may set a reminder to 'buy more bread' for when you
are next at the supermarket, or 'call John' for when you get in the office. This means you will
be alerted when you are at the place where you can action the reminder. This isn't designed to
replace time based reminders, but instead work alongside. You could also (in theory) combine
the two by setting a reminder to 'buy birthday card for Sam' when you are in town around the
5th of June. AutoSpotty has also one security feature i.e. to send sms or email alert to friends

3
and family on being in danger or need help by pressing of a panic button or number on dial
pad. Geo location details and message will be sent to them.

Add Spots by double taping on the map and moving the pushpin,search for an address, or

using your current position and add reminders, change profiles or block calls and messages
for this position.

GPS based positioning system will be used.

Send SMS to someone when you are at the current spot or when you leave it.

Enable details regarding events to fire when you enter or leave a current location.

Identification for each spot is its category and color flag.

Notifications include normal Android notifications and a custom alert dialog.

Block all calls at your office for instance, or choose to allow from your address book, block

restricted numbers, white and blacklists.

Sleeping in the bus or train and missing the station?No problem, set an alarm and add a Spot

and a radius marker and you will be notified right on time before you have to take off!

New-custom locations. Add Spots on map interface and add details and events on it for

future use or refernce

You can also disable the GPS for a time range of the day . A good example is if you're at the

office and would like to disable GPS if you're not using Spoty for that proximity. You can
enter the time range and the app will stop using GPS and save your battery and will fire once
again when you leave the office. Another good example is while you sleep

You can add GPS timeout - Spoty will look for a GPS fix for a certain amount of time and

stop if no fix is found - saves battery.

AutoSpotty is the solution for you when you have experienced similar situations to the below:

You keep forgetting to get milk from the nearby supermarket on the way back home

4
You keep missing to pick up your husband/wifes dry cleaning
You never remember to bring that book your roommate wanted every time you visit
the library

In a nutshell, AutoSpotty is your friend when you need to remember something according to
your location and not time.

The strong points of AutoSpotty is that it works in the background, so you dont have to
worry about checking it. When you are within the radius you set, an alert will pop up. Its also
kind on your device and its battery.

MODULES
The modules included in the project Autospotty are

1. Safe lock pin setting


2. GPS Location listener
3. Reminder
4. Privacy manager
5. Emergency service
6. Preferences

1. Safe Lock Pin Settings

In this module the user can set a secure pin lock code to unlock the app and enter into
the application. The user needs to enter the pin always to enter the application interface
screen. This will provide a security to the application Autospotty.

2. GPS Location Listener

The principle behind GPS is that receivers are able to use the technique of trilateration to
calculate their coordinates on Earth by measuring the time taken for signals from various
satellites to reach them.

Current location of user will be extracted using inbuilt GPS system in mobile.With the help of
GPS location listener the application get the location of the user and it will refresh in a small
interval and it will give the data to the other modules. Spot based reminder will be provided to
the user when he/she enters the Geo-Fence of a location added in reminder list.

5
3. Reminder

Location based reminders are mobile service that has the capability to provide real time
information based on the users location. Global Positioning System (GPS) has been the heart
of Location based reminders, in order to provide all the functionalities in Location based
reminders. The user can set the range of the location where the reminder wants to pop up.

4. Privacy Manager

Change profile to silent/general for particular location, this will work with the help of
GPS Location listener. Current location of user will be extracted using inbuilt GPS system in
mobile, with the help of GPS location listener the application get the location of the user and it
will refresh in a small interval.

5. Emergency Service

Emergency Panic Button will send a short alert notification containing the current location
with address of users to their friends/family. It will fetch the current location using GPS, If
GPS or Internet connectivity is not available then the CellID and LAC (Location Area Code)
of the SIM currently in use will be sent.

6. Preferences

There is an option to set the friends/family numbers and email address to send emergency
messages with set GPS location and address.

6
SYSTEM ANALYSIS

7
EXISTING SYSTEM

In the existing system the profiles need be set manually. Reminders are Time based system so
they do not remind the users accurately but reminders pop up when the time is set. And also
Location based call and SMS blocking are not available in the existing system. No emergency
alert services are available in the current system which can send location details.

Drawbacks Of Existing System


In the existing system the users need to set profiles manually, Reminders are Time based
system so it will ring based on when not where. Location based call and SMS blocking
are not available in the existing system, and also no emergency alert service are available in
current system by sending location details.

ProblemStatement
The existing system needs to set profiles manually; since the reminders are time based system
it will ring based on when not where. Location based call and SMS blocking are not
available in the existing system, and also no emergency alert service are available in current
system by sending the location details. The success of the proposed system is with the help of
the very powerful geo-localization technology. The proposed system will improve the time
and resources. The user can set specific time range, or simply decide it doesnt matter when
but only where.

Reminders, whether from calendars or to do lists, are typically time based, so they will
remind you to perform an action at a desired time. However, in this project, location based
reminders or 'geo-reminders' has been proposed and this could possibly be used to avoid
drawbacks of existing system.

PROPOSED SYSTEM

8
The main objective of the project is to develop software using the android application
where the user can set location based reminders. The user can set the range of the location
where the reminder should pop up. And another feature of this application is that it
automatically changes the profiles within the location basis. And also categorize the contact
numbers into black list or white list to help block spam calls for the user at busy times.
Emergency panic button helps to get help in some situations for the user .If the user cant
attend the call then it sends an automatically generated message to the caller with details of
the user.

FEASIBILITY ANALYSIS
The prime objective of feasibility study is to ensure that the problem is worth to be solved.
At this stage a cost benefit analysis is performed to assertion that the benefit from the system
will over rule the cost associated with the whole analysis, design and development of the new
system. An important outcome of the preliminary investigation determining whether the
system required is feasible.

Feasibility study is a test of proposed system regarding its efficiency, impact on the
organization, ability to meet the needs of users and effective use of resources. Thus, when a
new project is proposed, it normally goes through a feasibility study before it is approved for
development.All the projects are given unlimited resources and infinite time. Unfortunately,
the development process of a computer-based system is time bound and Feasibility and risk
analysis are related in many ways. If project risk is great, the feasibility of producing the
quality software is reduced. There are three aspects in the

Feasibility study portion of the preliminary investigation.


1. Economic Feasibility
2. Technical Feasibility
3. Behavioral Feasibility

Economical Feasibility
Here an evaluation of development cost weighted against the ultimate income or benefit
derived from the developed system. The cost for the development of the project has been
evaluated and we want to check that the cost does not exceed beneficial cost of the system.
Economic and Financial analysis is used for evaluating the effectiveness of the candidate
system. This project also under gone economical feasibility study and found that it is feasible.

9
Because java is a free developing tool and is platform independent. So the cost for
development does not exceed its beneficial cost.

Technical Feasibility
It is a study of function, performance and constraints that may affect the ability to achieve an
acceptable system. The technical requirements for the MotoBhp.com are currently available
and are widely used. The technology used is found to be optimal for the system and are able to
withstand the complexities, which are inherent to the system. The main points that are
considered to prove that the project is technically feasible are:

1. The present technology is sufficient to develop the project.

2. The proposed system provides adequate response to the user

3. The system can be expanded and developed.

4. The project outputs given are reliable and it is easy to access.

Behavioral Feasibility
The determination of any violation of rules or liability that could result from the development
of the system is behavioral feasibility .There is no barrier for implementing the system. The
system also helps to access the information immediately as need arises. Thus the system is
found to be operational feasible. The software used for the above system can also work
efficiently for satisfying users and administrators needs.

10
SYSTEM SPECIFICATION

11
HARDWARE REQUIREMENTS

Processor : Pentium III or above


Memory : 1GB or above
Hard Disk : 80 GB or above
Others : Android Phone With Android v2.2 (Froyo) or higher.

SOFTWARE REQUIREMENTS

Operating System : Windows / Linux


Programming environment : Android
IDE : Eclipse
Database : SQLite
Java Version : JDK 1.6 or later

12
SYSTEM DESIGN

13
DATA FlOW DIAGRAM
Level 0

Level 1

14
SOFTWARE DEVEOLPMENT

15
PLATFORM OVERVIEW
Introduction to Android

Android is a Linux-based operating system designed primarily for touchscreen mobile


devices such as smartphones and tablet computers. Initially developed by Android, Inc.,
whom Google financially backed and later purchased in 2005, Android was unveiled in 2007
along with the founding of the Open Handset Alliance: a consortium of hardware, software,
and telecommunication companies devoted to advancing open standards for mobile devices.
The first Android-powered phone was sold in October 2008.

Android is open source and Google releases the code under the Apache License. This
open source code and permissive licensing allows the software to be freely modified and
distributed by device manufacturers, wireless carriers and enthusiast developers. Additionally,
Android has a large community of developers writing applications ("apps") that extend the
functionality of devices, written primarily in a customized version of the Java programming
language. In October 2012, there were approximately 700,000 apps available for Android, and
the estimated number of applications downloaded from Google Play, Android's primary app
store, was 25 billion.

These factors have allowed Android to become the world's most widely used
smartphone platform and the software of choice for technology companies who require a low-
cost, customizable, lightweight operating system for high tech devices without developing one
from scratch. As a result, despite being primarily designed for phones and tablets, it has seen
additional applications on televisions, games consoles and other electronics. Android's open
nature has further encouraged a large community of developers and enthusiasts to use the
open source code as a foundation for community-driven projects, which add new features for

16
advanced users or bring Android to devices which were officially released running other
operating systems.

Android had a worldwide smartphone market share of 75% during the third quarter of
2012,with 500 million devices activated in total and 1.3 million activations per day. The
operating system's success has made it a target for patent litigation as part of the so-called
"smartphone wars" between technology companies.

Open Handset Alliance Founded

On 5 November 2007, the Open Handset Alliance, a consortium of several companies which
include Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel and NVIDIA, was
unveiled with the goal to develop open standards for mobile devices. Along with the
formation of the Open Handset Alliance, the OHA also unveiled their first product, Android,
an open source mobile device platform based on the Linux operating system.

Hardware

Google has unveiled at least three prototypes for Android, at the Mobile World Congress on
February 12, 2008. One prototype at the ARM booth displayed several basic Google
applications. A'd-pad' control zooming of items in the dock with a relatively quick response.A
prototype at the Google IO conference on May 28, 2008

had a 528 MHz Qualcomm processor and a Synaptic capacitive touch screen, and used the
UMTS cellular standard. It had 128 MB of RAM and 256 MB of flash, showing that
Android's memory requirements are reasonable. The demo was carried out using a 3.6 Mbit/s
HSDPA connection.

2.2 Features

Application Framework

It is used to write applications for Android. Unlike other embedded mobile environments,
Android applications are all equal, for instance, an applications which come with the
phone are no different than those that any developer writes. The framework is supported
by numerous open source libraries such as openssl, SQLite and libc. It is also supported

17
by the Android core libraries. From the point of security, the framework is based on UNIX
file system permissions that assure applications have only those abilities that mobile phone
owner gave them at install time.

18
Dalvik Virtual Machine

It is extremely low-memory based virtual machine, which was designed especially for
Android to run on embedded systems and work well in low power situations. It is also
tuned to the CPU attributes. The Dalvik VM creates a special file format (.DEX) that
is created through build time post processing. Conversion between Java classes and
.DEX format is done by included dx tool.

Integrated Browser

Google made a right choice on choosing WebKit as open source web browser. They
added a two pass layout and frame flattening. Two pass layout loads a page without
waiting for blocking elements, such as external CSS or external JavaScript and after
a while renders again with all resources downloaded to the device. Frame flattening
converts founded frames into single one and loads into the browser. These features
increase speed and usability browsing the internet via mobile phone.

Optimized Graphics

As Android has 2D graphics library and 3D graphics based on OpenGL ES 1.0,


possibly we will see great applications like Google Earth and spectacular games
like Second Life, which come on Linux version. At this moment, the shooting legendary
3D game Doom was presented using Android on the mobile phone.

Android shared preferences


Android provides many ways of storing data of an application. One of this way is called
Shared Preferences. Shared Preferences allow you to save and retrieve data in the form of
key,value pair.In order to use shared preferences, you have to call a method
getSharedPreferences() that returns a SharedPreferences instance pointing to the file that
contains the values of preferences. Shared Preferences is an API from Android SDK to
store and retrieve application preferences. SharedPreferences are simply sets of data
values that stored persistently. Persistently which mean data you stored in the
SharedPreferences are still exist even if you stop the application or turn off the device.

19
SOURCE CODE

20
Sample Source code
MainActivity(Android Eclipse)
packagecom.code.aspotty;

importcom.code.aspotty.R;

importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.Dialog;
importandroid.content.DialogInterface;
importandroid.content.Intent;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.Toast;

publicclass MainActivity2 extends Activity {

EditTexte, e1;
SharedPreferencespref;

@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.passcode_home);

pref = getSharedPreferences("expense", MODE_PRIVATE);


e = (EditText) findViewById(R.id.passcode_edittext);
e1 = (EditText) findViewById(R.id.hint_edittext);

REMINDER ACTIVITY
packagecom.code.aspotty;

importjava.io.IOException;
importjava.util.Calendar;
importjava.util.List;
importjava.util.Locale;
importjava.util.Vector;

importandroid.app.DatePickerDialog;
importandroid.app.Dialog;
importandroid.app.PendingIntent;
importandroid.content.Intent;
importandroid.content.SharedPreferences;
importandroid.location.Address;
importandroid.location.Criteria;
importandroid.location.Geocoder;

21
importandroid.location.Location;
importandroid.location.LocationListener;
importandroid.location.LocationManager;
importandroid.os.AsyncTask;
importandroid.os.Bundle;
importandroid.os.StrictMode;
import android.support.v4.app.FragmentActivity;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.DatePicker;
importandroid.widget.EditText;
importandroid.widget.RadioButton;
importandroid.widget.Toast;

importcom.db.DbUtils;
importcom.google.android.gms.common.ConnectionResult;
importcom.google.android.gms.common.GooglePlayServicesUtil;
importcom.google.android.gms.maps.CameraUpdateFactory;
importcom.google.android.gms.maps.GoogleMap;
importcom.google.android.gms.maps.GoogleMap.OnMapClickListener;
importcom.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
importcom.google.android.gms.maps.SupportMapFragment;
importcom.google.android.gms.maps.model.BitmapDescriptorFactory;
importcom.google.android.gms.maps.model.LatLng;
importcom.google.android.gms.maps.model.Marker;
importcom.google.android.gms.maps.model.MarkerOptions;

public class ReminderActivity extends FragmentActivity implements


LocationListener {
DbUtilsdb = new DbUtils(this);
GoogleMapgoogleMap;
LatLnglatLng;
SharedPreferencessharedPreferences;
intlocationCount = 0;
EditTextlat, lon, title, desc, profile, date,SearchAdd;
RadioButton c1, c2;
MarkerOptionsmarkerOptions;
String titledata, descdata;

privateintdobDay, dobMonth, dobYear;


private final int DOB_DATE_DIALOG = 1;

22
Button add,findAdd;
StringBuilderstrAddress;
privatePendingIntentpendingInt;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);

strAddress = new StringBuilder();


if (android.os.Build.VERSION.SDK_INT> 9) {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}

lat = (EditText) findViewById(R.id.editTextLat);


lon = (EditText) findViewById(R.id.editTextLon);

SearchAdd = (EditText)
findViewById(R.id.editText1_addressSearch);
findAdd = (Button) findViewById(R.id.button1_Find);

findAdd.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
String location = SearchAdd.getText().toString();

if (location != null && !location.equals("")) {


newGeocoderTask().execute(location);
}
}
});

title = (EditText) findViewById(R.id.editTextTitle);


desc = (EditText) findViewById(R.id.editTextDesc);

date = (EditText) findViewById(R.id.editTextDate);


// time = (EditText) findViewById(R.id.editText1_time);
c1 = (RadioButton) findViewById(R.id.radioButtonSilent);

23
c2 = (RadioButton) findViewById(R.id.radioButtonGeneral);

add = (Button) findViewById(R.id.buttonAddSpot);

final Calendar c = Calendar.getInstance();


dobYear = c.get(Calendar.YEAR);
dobMonth = c.get(Calendar.MONTH);
dobDay = c.get(Calendar.DAY_OF_MONTH);
updateFromDateDisplay();

// Getting Google Play availability status


int status = GooglePlayServicesUtil
.isGooglePlayServicesAvailable(getBaseContext());

// Showing status
if (status != ConnectionResult.SUCCESS) { // Google Play Services
are

// not available

intrequestCode = 10;
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status,
this,
requestCode);
dialog.show();

} else { // Google Play Services are available

// Getting reference to the SupportMapFragment of


activity_main.xml
SupportMapFragmentfm = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById(R.id.map);

// GettingGoogleMap object from the fragment


googleMap = fm.getMap();

// Enabling MyLocation Layer of Google Map


googleMap.setMyLocationEnabled(true);

// GettingLocationManager object from System Service


// LOCATION_SERVICE

24
LocationManagerlocationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);

// Creating a criteria object to retrieve provider


Criteria criteria = new Criteria();

// Getting the name of the best provider


String provider = locationManager.getBestProvider(criteria,
true);

// Getting Current Location


Location location =
locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVID
ER);

if (location != null) {
onLocationChanged(location);
}

// locationManager.requestLocationUpdates(provider, 50000, 0,
this);

googleMap.setOnMapClickListener(new OnMapClickListener() {

@Override
public void onMapClick(LatLng point) {

// Drawing marker on the map

googleMap.clear();

drawMarker(point);

lat.setText(point.latitude + "");
lon.setText(point.longitude + "");
getMyLocationAddress(point.latitude, point.longitude);
Toast.makeText(
getBaseContext(),
"Latitude Selected :" + point.latitude
+ "Longitude Selected :" +
point.longitude,

25
Toast.LENGTH_LONG).show();

}
});

googleMap.setOnMapLongClickListener(new
OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {

// Removing the marker and circle from the Google


Map
googleMap.clear();

}
});

private class GeocoderTask extends AsyncTask<String, Void,


List<Address>> {

@Override
protected List<Address>doInBackground(String... locationName) {
// Creating an instance of Geocoder class
Geocodergeocoder = new Geocoder(getBaseContext());
List<Address> addresses = null;

try {
// Getting a maximum of 3 Address that matches the
input text
addresses =
geocoder.getFromLocationName(locationName[0], 3);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
}

@Override
protected void onPostExecute(List<Address> addresses) {

if (addresses == null || addresses.size() == 0) {

26
Toast.makeText(getBaseContext(), "No Location
found",
Toast.LENGTH_SHORT).show();
}

// Clears all the existing markers on the map


googleMap.clear();

// Adding Markers on Google Map for each matching address


for (int i = 0; i <addresses.size(); i++) {

Address address = addresses.get(i);

// Creating an instance of GeoPoint, to display in Google


Map
latLng = new LatLng(address.getLatitude(),
address.getLongitude());

String addressText = String.format(


"%s, %s",
address.getMaxAddressLineIndex() > 0 ?
address
.getAddressLine(0) : "",
address
.getCountryName());

markerOptions = new MarkerOptions();


markerOptions.position(latLng);
markerOptions.title(addressText);
lat.setText(latLng.latitude + "");
lon.setText(latLng.longitude + "");
googleMap.addMarker(markerOptions);

// Locate the first location


if (i == 0)

googleMap.animateCamera(CameraUpdateFactory
.newLatLng(latLng));
}
}
}

27
public void onClick(View v)

{
if (!title.getText().toString().equals("")
&& !desc.getText().toString().equals("")
&& !lat.getText().toString().equals("")
&& !lon.getText().toString().equals("")
&& !date.getText().toString().equals("")) {

final String gen;


if (c1.isChecked()) {
gen = "silent";

} else {
gen = "general";

}
getReverseGeoCoding g = new getReverseGeoCoding();
try {

//
g.getAddress(Double.parseDouble(lat.getText().toString()),
//
Double.parseDouble(lon.getText().toString()));

finally {

// String l=strAddress.toString();
Vector<String>vectObj = new Vector<String>();
vectObj.add(title.getText().toString());
vectObj.add(desc.getText().toString());
vectObj.add(gen);
vectObj.add(lat.getText().toString());
vectObj.add(lon.getText().toString());

vectObj.add(strAddress.toString());
vectObj.add(date.getText().toString());
// vectObj.add(time.getText().toString());
db.insertReminder(vectObj);

title.setText("");

28
desc.setText("");
lat.setText("");
lon.setText("");

// Intent myIntent = new Intent(ReminderActivity.this,


// ServiceLoc.class);

// pendingInt =
PendingIntent.getService(ReminderActivity.this, 0,
// myIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
// final AlarmManageralarmMan = (AlarmManager)
getSystemService(ALARM_SERVICE);
// final Calendar cal = Calendar.getInstance();
// cal.setTimeInMillis(System.currentTimeMillis());

Toast.makeText(getApplicationContext(),
"Reminder Added Successfully",
5000).show();
Thread t = new Thread(new Runnable() {

@Override
public void run() {
//
alarmMan.setRepeating(AlarmManager.RTC_WAKEUP,
// cal.getTimeInMillis(), 3000,
pendingInt);
Intent myIntent = new
Intent(ReminderActivity.this,
ServiceLoc.class);
startService(myIntent);
}
});
t.start();
}
}

else {
Toast.makeText(getApplicationContext(), "Please Enter All
Values",
5000).show();
}

29
}

public void getMyLocationAddress(double lat, double lng) {

Geocodergeocoder = new Geocoder(this, Locale.ENGLISH);

// Place your latitude and longitude


List<Address> addresses;
try {
addresses = geocoder.getFromLocation(lat, lng, 1);

if (addresses != null) {

Address fetchedAddress = addresses.get(0);

for (int i = 0; i
<fetchedAddress.getMaxAddressLineIndex(); i++) {

strAddress.append(fetchedAddress.getAddressLine(i));
}
Log.d("loc", strAddress.toString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void drawMarker(LatLng point) {


// Creating an instance of MarkerOptions
markerOptions = new MarkerOptions();

// Setting latitude and longitude for the marker


markerOptions.position(point);

googleMap.addMarker(markerOptions);

private void updateFromDateDisplay() {


// Month is 0 based so add 1

30
Log.d("DobDay", dobDay+"");
if (dobDay<10) {

String day = "0" + dobDay + "";


Log.d("day", day);
date.setText(String.format("%d-%d-%s", dobYear,
dobMonth + 1, day));
} else {
date.setText(String.format("%d-%d-%d", dobYear,
dobMonth + 1,
dobDay));
}

public void showDobDateDialog(View v) {


showDialog(DOB_DATE_DIALOG);
}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DOB_DATE_DIALOG:
return new DatePickerDialog(this, dobDateSetListener,
dobYear,
dobMonth, dobDay);

}
return null;
}

privateDatePickerDialog.OnDateSetListenerdobDateSetListener = new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, intpYear, intpMonth,
intpDay) {
dobYear = pYear;
dobMonth = pMonth;
dobDay = pDay;
updateFromDateDisplay();
}
};

31
@Override
public void onLocationChanged(Location location) {

googleMap.clear();

// Getting latitude of the current location


double latitude = location.getLatitude();

// Getting longitude of the current location


double longitude = location.getLongitude();

// getMyLocationAddress(latitude,
// longitude);
lat.setText(latitude + "");
lon.setText(longitude + "");

String latitude1 = Double.toString(latitude);


String longitude1 = Double.toString(longitude);

LatLnglatLng = new LatLng(latitude, longitude);

// Adding marker to location


Marker mylocation = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("You")
.snippet("Your Current Location")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.mark_icon)));

// Showing the current location in Google Map

googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

// Zoom in the Google Map


googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));

// Setting latitude and longitude in the TextViewtv_location

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

32
}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}

DATABASE
package database;

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.logging.Level;
importjava.util.logging.Logger;

/**
*
* @author Nazif
*/
public class DbConnect {

public static Connection con;


public static Statement st;

public static void Connect() {

try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/spotty", "root",
"mysql");
} catch (ClassNotFoundException ex) {
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);

33
} catch (SQLException ex) {
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}

public static boolean login(String pin) {


try {
String query = "select * from location where pin='" + pin + "'";
ResultSetrs = con.createStatement().executeQuery(query);
if (rs.next()) {
return true;
}
} catch (SQLException ex) {
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}

public static intsendLocation(String lat, String lng,String pin) {


try {
String query="insert into location(pin,lat,lng)
values('"+pin+"','"+lat+"','"+lng+"')";
int i=con.createStatement().executeUpdate(query);
return i;
} catch (SQLException ex) {
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return 0;
}

public static ResultSetgetLocation(String pin) {


ResultSetrs=null;
try {
String query="select * from location where pin ='"+pin+"'";
rs=con.createStatement().executeQuery(query);
returnrs;
} catch (SQLException ex) {
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
returnrs;
}

34
}

DASH BOARD DESIGN (.xml File)

<?xmlversion="1.0"encoding="utf-8"?>
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sv1"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title :"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"/>

<EditText
android:id="@+id/editTextTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10">

<requestFocus/>
</EditText>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Description :"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"/>

<EditText
android:id="@+id/editTextDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"/>

<RadioGroup
android:id="@+id/ProfileGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

35
android:textColor="#000">

<RadioButton
android:id="@+id/radioButtonSilent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Silent Mode"
android:textColor="#000"
android:textStyle="bold"/>

<RadioButton
android:id="@+id/radioButtonGeneral"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="General Mode"
android:textColor="#000"
android:textStyle="bold"/>
</RadioGroup>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:id="@+id/editText1_addressSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"/>

<Button
android:id="@+id/button1_Find"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Find"/>

</LinearLayout>

<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="319dp"
class="com.google.android.gms.maps.SupportMapFragment"/>

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Latitude :"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"/>

<EditText
android:id="@+id/editTextLat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"/>

36
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Longitude :"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"/>

<EditText
android:id="@+id/editTextLon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"/>

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date :"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold"/>

<LinearLayout
android:id="@+id/lin1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<EditText
android:id="@+id/editTextDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.26"
android:ems="10"
android:inputType="date"/>

<ImageButton
android:id="@+id/dateBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="showDobDateDialog"
android:src="@drawable/datepicker"/>
</LinearLayout>

<!--<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000"
android:textStyle="bold" />

<EditText

37
android:id="@+id/editText1_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
-->
<Button
android:id="@+id/buttonAddSpot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="TAP TO SAVE SPOTTY REMINDER"
android:textColor="#000"
android:textStyle="bold"/>
</LinearLayout>

</ScrollView>

38
SYSTEM TESTING
&
IMPLEMENTATION

39
SYSTEM TESTING
Testing is the process of executing a program with the indent of finding
any errors. A good test of course has the high probability of finding a yet
undiscovered error. A successful testing is the one that uncovers a yet undiscovered
error.

A test is vital to the success of the system. System test makes a logical assumption
that if all parts of the system are correct, then goal will be successfully achieved .
The candidate system is subjected to a variety of tests online like its value
responsiveness , its value, stress and security. A series of tests are performed before the
system is already for user acceptance testing.

TYPE OF TESTING

Unit Testing
Integration Testing
Validation Testing
Output Testing
User Acceptance Testing
UNIT TESTING

Here we test each module individually and integrate the overall system. Unit
testing focuses verification efforts even in the smallest unit of software design in each
module. This is also known as Module Testing. The modules of the system are tested
separately. This testing is carried out in the programming style itself. In this testing each
module is focused to work satisfactorily as regard to expected output from the module.
There are some validation checks for the fields.

INTEGRATTION TESTING

Data can be lost across an interface, one module can have an adverse
effect on the other sub-functions, when combined may not produce the desired

40
functions. Integrated testing is the systematic testing to uncover the errors within the
interface. This testing is done with simple data and the developed system has run
successfully with this simple data. The need for integrated system is to find the overall
system performance.

VALIDATION TESTING

At the culmination of the black box testing, software is completely assembled as a


package. Interfacing errors have been uncovered and correct and final series of test, i.e.,
validation test begins. Validation test van is defined with a simple definition that
validation succeeds when the software functions in a manner that can be reasonably
accepted by the customer.

OUTPUT TESTING

After performing validation testing, the next step is output testing of the proposed system.
Since the system cannot be useful if it does not produce the required output. Asking the
user about the format in which the system is required tests the output displayed or
generated by the system under consideration. Here the output format is considered in two
ways. One is on screen format and another one is printed format. The output format on
the screen is found to be corrected as the format was designed in the system phase
according to the user needs. As for the hard copy the output comes according to the
specification requested by the user. Here the output testing does not result in any
correction in the system.

TEST DATA AND OUTPUT

Taking various kinds of data plays a vital role in system testing. After
preparing the test data, system under study is tested using the test data. While testing,
errors are again uncovered and corrected by using the above steps and corrections are
also noted for future use. The system has been verified and validated by running test data
and live data.First the system is tested with some sample test data that are generated with
the knowledge of the possible range of values that are required to hold by the fields. The
system runs successfully for the given test data and for the live data and for live data

41
USER ACCEPTNESS TESTING

User acceptance testing of the system is the key factor for the success of
any system. The system under consideration is tested for user acceptance by constantly
keeping in touch with prospective system at the time of development and making change
whenever required. This is done with regard to the input screen design and output screen
design.

SYSTEM IMPLIMENTATION
Implementation is the stage in the project where the theoretical design is turned into a
working system. The most critical stage is achieving a successful system and in giving
confidence on the new system for the users, that it will work efficient and effectively.

It involves careful planning, investing of the current system, and its constraints
on implementation, design of methods to achieve the change over, an evaluation
of change over methods.

The implementation process begins with preparing a plan for the implementation
of the system. According to this plan, the activities are to be carried out in these plan,
discussion has been made regarding the equipment, resources and how to test activities.
Thus a clear plan was prepared for the activities.

Apart from planning, the two major tasks of preparing for implementations are
education and training of user and testing of the system. Education of users should have
taken place much earlier in the project. When they were being involved in the
investigation and design work. Training has to been given to the staff regarding the new
system. Once staff has been trained the system can be used.

SYSTEM MAINTANANCE
Software maintenance is a set of software engineering activities that occur after software
has been delivered for the customer and put into operation. The success of the software
and the project relies on the maintenance procedure performed.

42
As with the venture of human, not a single one is perfect. The further modifications are
left to the followers. It is because; the opinion or vision of a thing differs from individual
to individual. The maintenance is performed at regular intervals to keep the project
safe and reliable.

43
CONCLUSION

44
From the past couple of years, Android application development market has
turned up to be a booming sector as most of the people are opting for android based
smart-phones because of its flexibility .Our project, Autospotty , could be developed in
an attractive dialog fashion. So the user with minimum knowledge about computers can
also operate the system easily. The system could be designed in such a way that it can be
modified with very little effort when such a need arises in the future. To survive from the
competition there is a need to produce some modifications to it in the future. New
features will provide the system a new fresh look, by which it can attract a lot of users.
Changes are inevitable when android mobile phone based system are built. We are living
in a rapidly changing world. To keep track with the changing environment, the system
that we developed should be easily enhanced. Due to this reason its necessary that the
system need to be modified according to the users requirements.

The intent of this is to create versions of existing programs that create higher
quality. AUTOSPOTTY is flexible and allows for modifications and future
enhancements. And further enhancements to system by adding functions and procedures
to increase the processing of system. Since the system is more flexible, further
enhancements can easily be done if time and cost schedules are suitable for the
modifications.

45
FUTURE ENHANCEMENT

46
Enhancing means adding, modifying or developing the code to support the
changes in the specification. It is the process of adding new capabilities such as reports,
new interfaces with other systems and new features such as better screen or report layout.
The proposed system is developed and tested with some amount of sample data which
satisfy all the requirements. It has high degree of accuracy, user friendliness and
efficiency. The system is flexible and changes can be made in the system to make overall
work easier. There are many more exciting features will be included in the future and We
still working on it

As the future enhancement, we plan to implement some additional modules. The


developed system is a partially automated one and by automating all the modules it
becomes a fully automated one. I believe that this software can be extended easily
without affecting the functioning.

47
APPENDIX

48
Screen lock setting

49
Reminder Home Page

50
Add reminder page

51
View reminder page

52
Preference setting page

53
Emergency Setting Page

54
Emergency Preferences

55
Alert/Notification

56
BIBLIOGRAPHY

57
http://www.wikipedia.org

http://www.w3schools.com

http://www.msdn.microsoft.com

http://www.toutorialspoints.com

http://www.stackoverflow.com

58

Das könnte Ihnen auch gefallen