Mad Microproject Ready
Mad Microproject Ready
Wagholi
Submitted by:
34 Mayur Kamble
Academic Year: 2023-24 Name of the Faculty: Miss Swati Wale mam
A: ……………………………………………………………………………………………………………
B:……………………………………………………………………………………………………….……
C:…………………………………………………………………………………………………………….
D:…………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………..
Roll no. Student Name Marks out off 6 for Marks out off 4 for Total out
performance in group performance in off 10
activity oral/presentation
34 Mayur Kamble
Sr.no Tittle
1 Abstract
2 Introduction
3 Code Implementation
4 Applications
5 Advantages
6 Disadvantages
7 Conclusion
8 Refferences
Abstract
The mobility of mobile devices has made it possible to develop and use maps and map
based applications for navigation purposes. Since most mobile map applications nowadays
are developed for motor vehicles, there is a demand for portable pedestrian navigation
applications. In this thesis the Android mobile map application with standard navigation
tools for pedestrian navigation was developed, as a platform for facilitating the Lund
Challenge location based demonstrator of the HaptiMap project. The aim of the
demonstrator is to make the sights of Lund city more accessible. The mobile phone
application is being designed as a touristic, historical location based game which will also
assist tourists to navigate themselves in the city. To enable exploration of historical and
current sites of Lund the demonstrator should contain basic components of exploring and
way finding. Prior to the development the OpenStreetMap (OSM) road network data and
Swedish National Road Database (NVDB) were introduced. The main advantage of using
the OSM data over the NVDB dataset is the completeness of the OSM data in terms of
pedestrian paths. The datasets were imported to PostgreSQL spatially extended PostGIS
database, where different routing algorithms provided by pgRouting were used for routing
calculations. As the Lund Challenge demonstrator is intended not only for general users but
also for visually impaired users, the problem of user navigation in the parks and open areas
were also discussed and the feasibility study was performed. The limitation of the developed
application was the problem of the user navigation in the parks and open areas. It is
therefore necessary to upgrade the road database with possible path in the open areas and
parks in order to implement this application.
INTRODUCTION
Maps and route services are vital for navigation. For instance, the personal and interactive
use of maps in mobile environment has several advantages. The mobility of mobile devices
makes it possible to use maps for navigational purposes. On the other hand in desktop
applications maps are used mainly for route planning. The rapid development of new
technologies enables high speed internet in mobile devices which further makes it possible to
use advanced online services for navigation. Most mobile map applications nowadays are
developed for cars; there is a lack of services for pedestrian and cycle navigation.
Prior to Android application development the study of two datasets used in the HaptiMap
project was performed. Additionally the OpenStreetMap (OSM) and Swedish National Road
Database (NVDB) road network data were imported to PostGIS database and the routing
calculation were performed using the pgRouting functionality.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_marginTop="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_centerHorizontal="true"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_centerInParent="true"
android:textSize="16sp"
android:textStyle="bold"/>
</RelativeLayout>
Java code:
package com.example.map;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currentAddTv = findViewById(R.id.textView);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
@Override
currentLocation = locationResult.getLocations().get(0);
getAddress();
};
startLocationUpdates();
@SuppressWarnings("MissingPermission")
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.ACCESS_FINE_LOCATION},
LOCATION_PERMISSION_REQUEST_CODE);
}
else {
locationRequest.setInterval(2000);
locationRequest.setFastestInterval(1000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
@SuppressWarnings("MissingPermission")
if (!Geocoder.isPresent()) {
Toast.LENGTH_SHORT).show();
return;
intent.putExtra("add_receiver", addressResultReceiver);
intent.putExtra("add_location", currentLocation);
startService(intent);
@Override
int[] grantResults) {
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
} else {
Toast.makeText(this, "Location permission not granted, " + "restart the app if you want the feature",
Toast.LENGTH_SHORT).show();
LocationAddressResultReceiver(Handler handler) {
super(handler);
@Override
if (resultCode == 0) {
getAddress();
if (resultCode == 1) {
showResults(currentAdd);
currentAddTv.setText(currentAdd);
}
@Override
super.onResume();
startLocationUpdates();
@Override
super.onPause();
fusedLocationClient.removeLocationUpdates(locationCallback);
package com.example.map;
import android.app.IntentService;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.os.ResultReceiver;
import android.util.Log;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import androidx.annotation.Nullable;
GetAddressIntentService class:
public GetAddressIntentService() {
super(IDENTIFIER);
@Override
String msg;
addressResultReceiver = Objects.requireNonNull(intent).getParcelableExtra("add_receiver");
if (addressResultReceiver == null) {
return;
if (location == null) {
sendResultsToReceiver(0, msg);
return;
try {
addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
sendResultsToReceiver(1, msg);
else {
String addressDetails = address.getFeatureName() + " " + address.getThoroughfare() + " " + "Locality: " +
address.getLocality() + " " + "County: " + address.getSubAdminArea() + " " + "State: " + address.getAdminArea() + " " +
"Country: " + address.getCountryName() + " " + "Postal Code: " + address.getPostalCode() + " ";
sendResultsToReceiver(2, addressDetails);
bundle.putString("address_result", message);
addressResultReceiver.send(resultCode, bundle);
gradle.build:
plugins {
id 'com.android.application'
}
android {
namespace 'com.example.map'
compileSdk 33
defaultConfig {
applicationId "com.example.map"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildTypes {
release {
minifyEnabled false
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.google.android.gms:play-services-location:17.0.0'
manifest file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.map">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
</intent-filter>
</activity>
<service android:name=".GetAddressIntentService"
tools:ignore="Instantiatable" />
</application>
</manifest>
OUTPUT:
Applications
2. Location-Based Services:
3. Emergency Services:
Geofencing for tracking and notifying users about specific workout zones.
6. Social Networking:
Efficient Search: Quickly find nearby points of interest, businesses, and services.
Emergency Services:
Quick Response: Emergency services can utilize accurate location data for faster
response times.
Critical Information: Locating nearby hospitals, police stations, and fire departments
during emergencies is crucial.
Activity Tracking: Users can track outdoor activities, monitor routes, and analyze
performance.
Motivation: Integration with fitness apps provides motivation and goal tracking.
Exploration: Tourists can explore new places with virtual guides and discover local
attractions.
Offline Accessibility: Offline maps are useful for travelers without consistent internet
access.
Social Networking:
Education:
Campus Navigation: Students and visitors can navigate campuses more efficiently.
2. Data Usage:
3. Privacy Concerns:
Continuous location tracking can raise privacy concerns, and users may be
hesitant to share their real-time location data due to potential misuse or
unauthorized access.
Many map features, such as real-time traffic updates and online search, rely
on an internet connection. In areas with poor connectivity, the effectiveness
of the map application may be compromised.
5. Accuracy Issues:
6. Security Risks:
The purpose of this study was to understand the technology and structure of the Android OS and
application development process which was succeeded in some depth. The standard Android
SDK libraries provides the possibility to integrate the Google Maps in own application with
additional functionalities such as Point overlays while the OSM map integration is only possible
by using supplementary open source libraries such as the Nutiteq Maps Lib SDK for Android
which was used in this study. The Nutiteq API makes possible to integrate many map sources
such as: OSM, CloudMade, Navteq/MapTP, etc. (Nutiteq, 2011a). Despite the map integration
the Nutiteq library supports the offline maps, line and polygon overlays on top of the map, online
and offline KML overlays, route service, etc. Some of these functionalities are part of public
API, nevertheless to use the Nutiteq full library it is necessary to purchase a license. The
CloudMade TMS tiles of the OSM were used in MasterOSM application, and moreover the
routing service was used which includes the direction assistance functionality.
Refferences
AndNav, 2011: www.andnav.org/, (accessed 28 May 2011).