(FULL) Friendly Map Android Application For Disabled People
(FULL) Friendly Map Android Application For Disabled People
(FULL) Friendly Map Android Application For Disabled People
PEOPLE
SYNOPSIS
0
1. INTRODUCTION
1
1.1 SYSTEM SPECIFICATION
● Processor : i3
● Hard Disk : 20 GB
● Memory : 4GB RAM
XML:
● Markup Language: XML uses tags to define the structure and meaning of
data within a document. Tags are enclosed in angle brackets (< >) and can
be nested to represent hierarchical relationships.
2
● Extensibility: The "eXtensible" in XML refers to its extensibility,
meaning that users can define their own customized tags and document
structures to suit specific needs or applications. This flexibility allows
XML to adapt to various data formats and requirements.
3
KOTLIN :
4
● Functional Programming Support: Kotlin supports functional
programming paradigms, including higher-order functions, lambda
expressions, and immutable data structures. These features enable concise
and expressive code, promote code reuse, and facilitate writing code in a
more declarative style.
● Smart Casts and Type Inference: Kotlin's type system includes smart
casts, which automatically cast types within a certain scope when certain
conditions are met, reducing the need for explicit type checks and casts.
Additionally, Kotlin's type inference capabilities allow developers to omit
type declarations in many cases, resulting in cleaner and more readable
code.
● Data Classes: Kotlin provides a concise syntax for defining classes whose
primary purpose is to hold data. Data classes automatically generate
boilerplate code for equals(), hashCode(), toString(), and copy() methods,
making them ideal for modeling immutable data.
ANDROID:
5
● Application Ecosystem: Android has a vast ecosystem of applications
available through the Google Play Store and other third-party app stores.
These applications cover a wide range of categories, including
productivity, entertainment, communication, gaming, and more, providing
users with a rich and diverse selection of software.
6
● Developer Tools: Google provides a comprehensive set of developer tools
and resources for building Android applications, including the Android
Studio IDE, Android SDK, Kotlin programming language support, and
robust documentation. These tools streamline the app development
process and enable developers to create high-quality applications for the
platform.
API:
● Data Formats: APIs define the data formats used for representing and
exchanging information between systems. Common data formats include
JSON (JavaScript Object Notation), XML (eXtensible Markup
Language), and Protocol Buffers, among others.
7
● Endpoints and Methods: APIs expose endpoints, which are URLs that
clients can send requests to, along with methods or operations that clients
can perform on those endpoints. Endpoints represent specific resources or
functionalities provided by the API.
● Rate Limiting and Quotas: APIs may implement rate limiting and usage
quotas to prevent abuse and ensure fair usage of resources. Rate limiting
restricts the number of requests a client can make within a certain time
period, while quotas limit the total amount of usage allowed for a given
period.
● Versioning: APIs may evolve over time, with new features being added or
existing features being modified or deprecated. Versioning allows
developers to specify which version of the API they are targeting and
ensures backward compatibility with existing client applications.
8
ANDROID STUDIO:
● Code Editor: Android Studio features a powerful code editor with syntax
highlighting, code completion, code refactoring, and other
productivity-enhancing features. It supports multiple programming
languages, including Java, Kotlin, and XML (for layout files).
● Layout Editor: Android Studio includes a visual layout editor that allows
developers to design user interfaces (UIs) for their apps using a
drag-and-drop interface. Developers can preview the UI in real-time
across different device screen sizes and orientations.
● Gradle Build System: Android Studio uses the Gradle build system to
automate the build process for Android apps. Gradle allows developers to
define dependencies, configure build variants, and customize the build
process through build scripts written in Groovy or Kotlin.
9
● Debugging Tools: Android Studio provides robust debugging tools for
identifying and fixing issues in Android apps. Developers can set
breakpoints, inspect variables, view call stacks, and analyze performance
metrics to diagnose and troubleshoot problems.
SQLite:
10
● Zero Configuration: SQLite requires minimal configuration and setup.
Developers can simply include the SQLite library in their application and
start using it immediately without any additional configuration steps.
● Small Footprint: SQLite has a small memory and disk footprint, making it
well-suited for embedded and mobile environments with limited
resources. The SQLite library is typically only a few hundred kilobytes in
size, making it ideal for use in mobile apps.
● Open Source: SQLite is open source and released into the public domain,
allowing developers to use, modify, and distribute it freely without any
licensing restrictions.
11
JETPACK COMPOSE:
12
● Material Design Integration: Jetpack Compose provides built-in support
for Material Design, Google's design language for creating intuitive and
visually appealing user interfaces. It includes a rich set of Material
Design components and styles that developers can use to quickly build
modern and consistent UIs.
13
2. SYSTEM STUDY
2.1.1 DRAWBACKS
Limited Accessibility Information: Existing navigation systems often lack
detailed information about accessibility features in public spaces, such as
wheelchair ramps, elevators, and Braille signage, making it challenging for
disabled individuals to plan their routes effectively.
14
2.2.1 FEATURES
● Intuitive User Interface: The user interface of the proposed system will be
designed with accessibility in mind, featuring simple navigation menus,
high contrast visuals, and customizable font sizes. These design elements
will ensure that individuals with disabilities can easily navigate the
application and access essential features.
15
3. SYSTEM DESIGN AND DEVELOPMENT
File design involves organizing and structuring the files used in the
application. For an Android application like the Friendly Map Android
Application for Disabled People, the file design includes layout XML files, Java
source code files, resource files (such as images and audio files), and
configuration files (such as AndroidManifest.xml).
16
3.5 SYSTEM DEVELOPMENT
17
User Preferences and Customization Module:
The customization module allows users to personalize their
experience within the application by setting preferences for
navigation modes, favorite locations, and accessibility settings. It
provides options for users to customize the application interface
according to their needs and preferences.
Accessibility Features Module:
This module focuses on enhancing accessibility within the
application for users with disabilities. It includes features such as
high contrast interfaces, text-to-speech functionality, and support
for alternative input methods to ensure usability for all users,
regardless of their abilities.
18
4. TESTING AND IMPLEMENTATION
4.1 TESTING
19
4.1.2 TESTING TOOLS:
4.2 IMPLEMENTATION
20
5. CONCLUSION
KEY ACHIEVEMENTS:
FUTURE DIRECTIONS:
21
BIBLIOGRAPHY
22
APPENDICES
Level 0
23
Level 1
24
B. TABLE STRUCTURE
Location Table
Navigationrout Table
25
User Table
Userfavorites Table
26
C. SAMPLE CODING
package com.example.wander
import android.Manifest
import android.content.pm.PackageManager
import android.content.res.Resources
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.example.wander.R
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.*
import java.util.*
//This class allows you to interact with the map by adding markers, styling its appearance
and
// displaying the user's location.
class MapsActivity : AppCompatActivity(), OnMapReadyCallback {
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
27
* This is where we can add markers or lines, add listeners or move the camera. In this
case,
* we just add a marker near the Googleplex.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
override fun onMapReady(googleMap: GoogleMap) {
map = googleMap
setMapLongClick(map)
setPoiClick(map)
setMapStyle(map)
enableMyLocation()
}
// Initializes contents of Activity's standard options menu. Only called the first time options
// menu is displayed.
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.map_options, menu)
return true
}
28
true
}
R.id.satellite_map -> {
map.mapType = GoogleMap.MAP_TYPE_SATELLITE
true
}
R.id.terrain_map -> {
map.mapType = GoogleMap.MAP_TYPE_TERRAIN
true
}
else -> super.onOptionsItemSelected(item)
}
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
)
}
}
// Places a marker on the map and displays an info window that contains POI name.
private fun setPoiClick(map: GoogleMap) {
map.setOnPoiClickListener { poi ->
val poiMarker = map.addMarker(
MarkerOptions()
.position(poi.latLng)
.title(poi.name)
)
poiMarker.showInfoWindow()
}
}
29
try {
// Customize the styling of the base map using a JSON object defined
// in a raw resource file.
val success = map.setMapStyle(
MapStyleOptions.loadRawResourceStyle(
this,
R.raw.map_style
)
)
if (!success) {
Log.e(TAG, "Style parsing failed.")
}
} catch (e: Resources.NotFoundException) {
Log.e(TAG, "Can't find style. Error: ", e)
}
}
// Checks if users have given their location and sets location enabled if so.
private fun enableMyLocation() {
if (isPermissionGranted()) {
map.isMyLocationEnabled = true
}
else {
ActivityCompat.requestPermissions(
this,
arrayOf<String>(Manifest.permission.ACCESS_FINE_LOCATION),
REQUEST_LOCATION_PERMISSION
)
}
}
30
D. SAMPLE SCREEN
31
Click the play option, and then the Voice assistant assists the blind person
in navigating the correct destination
32