Android Camper parking app written in kotlin for assignment 2 of Mobile App Development

Overview

Technical Report

Splash view

Application shows a splash screen when opened. The splash screen shows for 2 seconds and then launches the log in view. Log in Activity Log in view is used to authenticate users. It uses Google firebase authentication backend to authenticate users by basic email and password. In the login view the user can log in and create an account. Once the user has entered the right credentials, the application allows the user to proceed to the list view.

List Fragment

The list view shows a list of cards for the parkings uploaded to google firebase realtime database. The card shows the parking’s title, the email of the parking’s owner, an icon showing the category of the parking, green tree for a nature parking, blue P for a public parking, red P for a private parking, and a brown house for a camping. The card it will also show an image of the parking that was previously uploaded to google firebase storage. Images are loaded using Picasso library. A rating bar is also shown, the value of the rating bar is the average off all parking’s reviews. Parkings can be deleted by swiping left and can be edited by swiping right. Only the owner of the parking can edit or delete it. There is a toggle button on the toolbar that switches between user’s parkings and all parkings. Navigation to other fragments can be performed via nav drawer, floating button or menu. In order to add a new parking the user can press the floating button or select add in the menu or nav drawer. This action brings the user to the add view.

Add Fragment

The add fragment provide the user with the functionality of adding a new parking the the list. The elements to be filled in this view are the title, a further description, a radio button to select the category of the parking which can be nature, public, private or camping. The view also lets the user to pick an image for the parking and a location. Title and description are text inputs. Material Design library has been used to implement this feature. Image can be loaded from the gallery by selecting image in the menu. Image is displayed using picaso library. Once the parking is saved, the image is uploaded to google firebase storage for further retrieving. First time the user access the add view, the app will ask for permission to access current location. Map shows current location when first access the add view and updates the locations as the device moves using google libraries “play-services-map” and “play-services-location”. If the user decides to edit the location, it can access the edit location view by pressing the location selection on the toolbar menu. This brings the user to another view where the marker can be dragged as desired. By pressing the back button, the application returns to the add view but with the new location on the map. When all the details have been filled, the user can select save on the menu to upload the information to Firebase realtime database and return to the list view. The new parking will show on the list with all the details shown in the card and with zero stars on the rating bar as the parking does not have reviews yet.
From the list view, if the user swipe to the right on a parking, the application starts the add view but in this case the functionality is to edit the parking instead of creating a new parking. However, if the user clicks on a parking card, the application will open a screen to visualize parking.

View fragment

In this screen, the user can check the parking details such as title, description, image, map location, category icon but it can also make a review. The review consists of a comment, a user, a date and a rating. The rating can be done with a rating bar from zero to 5 stars. When a review is done, review is uploaded to firebase realtime database. There is a rating element attach to the parking which is calculated with the average of all the parking’s reviews.

Map fragment

The map view shows the parkings locations in a google map. Parkings will show on the map with a different icon depending on the category of the parking. User can zoom in and out and move the map as desired to locate all locations. Markers can be click to show further at the top of the screen. There is a toggle switch on the toolbar menu to switch between all parkings an user’s parking.

UX/DX approach adopted

Navigation via Nav drawer to navigate between main fragments (Map, Add, List) Swipe left to delete parking in a recycler view and swipe right to edit parking in a recycler view. Material design elements used to give the user a better experience. MVVM design pattern followed with two way data binding.

Git Repository

Git branching model approach adopted. Master branch where new versions are released. Develop branch with is the main branch where all de new features are merged. Develop is merge into master when a new released is ready. Feature branches to develop new features. The develop branch splits into a new feature branch when a new feature needs to be implemented and is merged back to develop when the feature works as expected.

UML diagram

References

Radio button

https://stackoverflow.com/questions/39427178/how-to-bind-method-on-radiogroup-on-checkchanged-event-with-data-binding

Location Service

https://developers.google.com/android/reference/com/google/android/gms/location/LocationServices#getFusedLocationProviderClient(android.content.Context)

Map on fragment

https://www.it-swarm-es.com/es/android/getmapasync-en-fragment/824270913/

Menu

https://developer.android.com/guide/fragments/appbar

Fragment arguments

https://stackoverflow.com/questions/55781830/check-if-arguments-exists-when-navigating-to-fragment-using-safeargs

Rating bar

https://www.develou.com/ratingbar-en-android/

Resource to bitmap

https://www.it-swarm-es.com/es/android/marcador-personalizado-en-los-mapas-de-google-en-android-con-el-icono-de-activo-vectorial/829632466/

You might also like...
The goal of this assignment is to implement GameOfFifteen
The goal of this assignment is to implement GameOfFifteen

Game of Fifteen Demo The board for the game of Fifteen is filled randomly with numbers from 1 to 15 and one empty space. You can move the neighboring

Mobile client for official Nextcloud News App written as Kotlin Multiplatform Project
Mobile client for official Nextcloud News App written as Kotlin Multiplatform Project

Newsout Android and iOS mobile client for Nextcloud news App. The Android client is already available to download in the Play Store. F-Droid and Apple

KataContacts written in Kotlin. The main goal is to practice Clean Architecture Development

KataContacts written in Kotlin We are here to practice Clean Architecture Development. Clean Architecture is a way of structuring code. We are going t

An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)

Imagine App An simple image gallery app utilizing Unsplash API. Built with ❤︎ by Wajahat Karim and contributors Features Popular photos with paginatio

A full-stack application showing the power 💪 of KOTLIN. Entire android app + backend Apis written in Kotlin 🔥
A full-stack application showing the power 💪 of KOTLIN. Entire android app + backend Apis written in Kotlin 🔥

Gamebaaz 🎮 A full-stack application showing the power 💪 of KOTLIN. Entire android app + backend Apis written in Kotlin 🔥 Android Backend Jetpack Co

App for lesson 8 of the Android App Development in Kotlin course on Udacity
App for lesson 8 of the Android App Development in Kotlin course on Udacity

Connect to the Internet - Mars Real Estate This is the toy app for Lesson 8 of t

A sample app illustrating Android development using Kotlin with MVVM architecture, Android Jetpack, and other commonly used libraries.

Anime Facts A sample app illustrating Android development using Kotlin with MVVM architecture, Android Jetpack, and other commonly used libraries. Ani

Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction 📹 This is a small introduction video about Taskif

Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners
Healthify - An app to track your daily water intake and sleep and boost your work efficiency. Healthify is built using Kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Healthify Healthify is an app to track your daily water intake and sleep and boost your work efficiency. Video Introduction 📹 This is a small introdu

Releases(v4.0.4)
Owner
Alvaro Sanchez Domingo
Alvaro Sanchez Domingo
Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Book Parking is a demo application based on MVVM architecture. The app allows users to booking parking slots, the app uses firebase for the backend.

Dheeraj Gupta 5 Dec 24, 2022
Mobile Course Assignment 5

Assignment5 Mobile Course Assignment 5 Widgets that I Use TextView Button Circular Image View Libraries that I use Jetpack Navigation Circular ImageVi

null 1 Mar 31, 2022
Kurly-assignment - Search GitHub Repository App For Android

Search GitHub Repository App Outline Github 내의 수많은 리포지토리를 키워드를 통해 검색할 수 있습니다. Ho

Minjeong Kim 0 Jan 5, 2022
An assignment app for Caper AI

JungsooAppCaperAI This is an assignment app for Caper AI. This app shows a list of products locally saved in room database to a user. User can tap on

Shahrukh Malik 0 Oct 15, 2021
SimpleToDo - Simple "To-Do" App for CodePath Prework Assignment

Project 1 - Simple ToDo App Simple ToDo is an android app that allows building a todo list and basic todo items management functionality including add

null 0 Dec 31, 2021
This assignment has been given to me for Android developer position at SonyLiv.

asssignmentSonyLiv This assignment has been given to me for Android developer position at SonyLiv. This codeis not full functional but can give a cont

Rudra Chouhan 0 Nov 21, 2021
A Prework Assignment COdepath for Android

PreWork_SimpleTodo_Android This is a Prework Assignment Codepath Project 1 - Sim

Laxman Reddy Aileni 0 Dec 19, 2021
ABSA Android Take Home Assignment

ABSA Android Take Home Assignment Writing the Make Up App challenge using Android Architecture Components, in 100% Kotlin :kotlin: Requirements Create

David Ndekere 0 Mar 18, 2022
code for the Mobiquity QA challenge assignment

MOBIQUITY QA CODE CHALLENGE This repository contains the code for Mobiquity code assignment for the Senior QA engineer position. Tech Stack the tools

ricardo larrahondo 1 Jan 3, 2022
payhere online assignment

가계부 API 설명 실행 모든 컨테이너 실행 docker-compose up docker-compose up - d // 백그라운드 실행 데이터베이스만 실행 docker-compose up database docker-compose up -d database // 백그

Jerry 0 Jan 5, 2022