Android application for department navigation

Last update: Aug 14, 2022

DepNav – Department Navigator

Codacy Badge Known Vulnerabilities

App icon

DepNav is an Android application for viewing indoor maps of departments and searching for specific rooms on them.

The following maps are available:

  • Mathematics and Mechanics Faculty, St. Petersburg State University

Features

With DepNav you can do the following:

  • View the available maps by floors
  • Search for specific rooms and other objects on the selected map with built-in search
  • Enjoy the graphic interface in light and dark themes
  • Two languages available: English and Russian
Map Search Info

Download and install

Go to Releases section, download the latest available APK, and install it on your device. Android 5.0 or newer is supported.

Google Play release is planned in the future.

GitHub

https://github.com/TimPushkin/DepNav
Comments
  • 1. Fix OutOfMemoryError

    On my old android device (Redmi Note 5A, Android 7.1.2) I faced the problem that the application crashes immediately after entering it. I got this exception in Android Studio:

    E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
        Process: ru.spbu.depnav, PID: 3665
        java.lang.OutOfMemoryError: Failed to allocate a 4194316 byte allocation with 1130336 free bytes and 1103KB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:890)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:867)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:834)
            at ovh.plrapps.mapcompose.ui.state.TileCanvasState$special$$inlined$map$1$2.emit(Emitters.kt:224)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAll(Channels.kt:30)
            at kotlinx.coroutines.flow.FlowKt.emitAll(Unknown Source)
            at kotlinx.coroutines.flow.internal.ChannelFlow$collect$2.invokeSuspend(ChannelFlow.kt:123)
            at kotlinx.coroutines.flow.internal.ChannelFlow$collect$2.invoke(ChannelFlow.kt)
            at kotlinx.coroutines.flow.internal.ChannelFlow$collect$2.invoke(ChannelFlow.kt)
            at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
            at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
            at kotlinx.coroutines.flow.internal.ChannelFlow.collect$suspendImpl(ChannelFlow.kt:122)
            at kotlinx.coroutines.flow.internal.ChannelFlow.collect(ChannelFlow.kt)
            at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collect$suspendImpl(ChannelFlow.kt:173)
            at kotlinx.coroutines.flow.internal.ChannelFlowOperator.collect(ChannelFlow.kt)
            at ovh.plrapps.mapcompose.ui.state.TileCanvasState$special$$inlined$map$1.collect(SafeCollector.common.kt:113)
            at kotlinx.coroutines.flow.FlowKt__ReduceKt.single(Reduce.kt:179)
            at kotlinx.coroutines.flow.FlowKt.single(Unknown Source)
            at ovh.plrapps.mapcompose.core.TileCollector$worker$1$bitmapForLayers$1$1.invokeSuspend(TileCollector.kt:135)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
            at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
            at java.lang.Thread.run(Thread.java:760)
        	Suppressed: java.lang.OutOfMemoryError: Failed to allocate a 4194316 byte allocation with 1130952 free bytes and 1104KB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:890)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:867)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:834)
            at ovh.plrapps.mapcompose.ui.state.TileCanvasState$special$$inlined$map$1$2.emit(Emitters.kt:224)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt(Channels.kt:1)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Channels.kt)
            		... 5 more
    

    Troubleshooting was taken from here.

    Reviewed by IAmFunkyFrog at 2022-05-11 17:17
  • 2. Hide room markers on low scale

    When a user scales out and more map area becomes visible, room markers become very distracting covering most of the screen area.

    • [ ] Hide all unhighlighted markers when not zoomed in
    • [ ] Keep only highlighted marker when one is present
    Reviewed by TimPushkin at 2022-04-20 07:24
  • 3. Fix startup crash on Huawei devices

    FTS4 table built-in languageid column is replaced with a manually-written language_id column. This change fixes app crash on Huawei phones. Seems like a Room bug which I reported here.

    Reviewed by TimPushkin at 2022-08-01 13:48
  • 4. GUI changes

    Makes the following GUI changes:

    • Invisible markers are now unclickable
    • Marker highlighting is replaced with pinning
    • Double-tapping a map makes it loop in scale
    • "No description" strings are removed
    • Floor switcher numbers animation
    • Icons for legacy Android versions

    Fixes wrong highlighted markers bug.

    Reviewed by TimPushkin at 2022-07-14 18:35
  • 5. Reduce memory consumption

    Fixes the memory issues on older Android versions. It reduces the heap size that DepNav requires to operate by adding support for dividing maps into several levels of detail.

    Reviewed by TimPushkin at 2022-06-26 05:43
  • 6. Problems related to border area

    If padding of a map is too low, the following problems arise:

    1. Centering on some markers close to the border doesn't really place them in the center of the screen.
    2. Search button at the top of the screen may cover parts of the map close to the top border.

    The first problem may be solved by playing some animation attracting attention to the marker that was centered.

    The second one may be solved by adding functionality to hide the UI.

    Reviewed by TimPushkin at 2022-04-20 07:30
  • 7. Double tap + slide zoom gesture

    Google and other popular map apps have this double tap + slide zooming gesture: "One finger zooming by double tapping but not releasing on the second tap, and then sliding the finger up to zoom out, or down to zoom in" -- would be nice to also have this here.

    Reviewed by TimPushkin at 2022-08-13 06:42
  • 8. Mathematics and Mechanics Faculty, SPbU subdivisions

    Mathematics and Mechanics Faculty at SPbU is divided into several parts, which is reflected in room names. It could be also reflected on the map somehow to help students get used to the internal organization of the faculty.

    Reviewed by TimPushkin at 2022-05-20 07:44
  • 9. Let users pick markers to be displayed

    Add floating action button opening a menu of checkboxes using which a user would be able to pick only the markers they want to see. The categories to choose from are:

    • Entrances
    • Rooms
    • Stairs and elevators
    • Restrooms
    • Other
    • Closed
    Reviewed by TimPushkin at 2022-04-17 18:40
Maps application in Android Studio using the Maps SDK for android

Google-Maps-Application Maps application in Android Studio using the Maps SDK for android. This app was initially developed in Java, but then was conv

Nov 30, 2021
Traccar Client is an Android GPS tracking application.

Traccar Client is an Android GPS tracking application. It can work with Traccar open source server software.

May 24, 2022
Android Maps Extensions is a library extending capabilities of Google Maps Android API v2.

Android Maps Extensions Library extending capabilities of Google Maps Android API v2. While Google Maps Android API v2 is a huge leap forward comapare

Apr 12, 2022
Scale bar for Android Maps (Google Maps, OSM, MapBox, Yandex)
Scale bar for Android Maps (Google Maps, OSM, MapBox, Yandex)

Map Scale View Scale view for any Android Maps SDK (not only Google Maps) Contributing I encourage you to participate in this project. Feel free to op

Jul 12, 2022
Android library project that lets you manage the location updates to be as painless as possible

Smart Location Library Android library project that intends to simplify the usage of location providers and activity recognition with a nice fluid API

Jul 28, 2022
Aug 6, 2022
Curve-Fit is an Android library for drawing curves on Google Maps
Curve-Fit is an Android library for drawing curves on Google Maps

Curve-Fit Android library for drawing curves on Google Maps. This library uses Bezier cubic equation in order to compute all intermediate points of a

Mar 7, 2021
Maps SDK for Android Utility Library
Maps SDK for Android Utility Library

Maps SDK for Android Utility Library Description This open-source library contains utilities that are useful for a wide range of applications using th

Aug 13, 2022
Interactive, thoroughly customizable maps in native Android powered by vector tiles and OpenGL.
Interactive, thoroughly customizable maps in native Android powered by vector tiles and OpenGL.

Interactive, thoroughly customizable maps in native Android powered by vector tiles and OpenGL.

Aug 16, 2022
Positional is a location information app for Android with Compass, Clock, Level, Sun and Moon and many other features.
Positional is a location information app for Android with Compass, Clock, Level, Sun and Moon and many other features.

Positional is a location based app that utilizes the device's GPS and fetches various details of the current latitude and longitude data like Altitude, Speed, Address and similar other information and show it in easily understandable format to the user. Alongside this main functionality of being a location app, Positional also provides a separate panel for Compass and Clock, and they serve their own purpose as their name suggests.

Aug 14, 2022
This is a repo for implementing Map pan or drag (up, down, right ,left) to load more places on the Google Map for Android

Challenge Display restaurants around the user’s current location on a map ○ Use the FourSquare Search API to query for restaurants: https://developer.

Jul 30, 2022
Membuat Aplikasi Pencarian Bengkel dan Tambal Ban dengan Android Studio
Membuat Aplikasi Pencarian Bengkel dan Tambal Ban dengan Android Studio

Tambal-Ban Membuat Aplikasi Pencarian Bengkel dan Tambal Ban dengan Android Studio Tutorial Build with Android Studio https://youtu.be/82L7az6hdVI Tut

Jun 30, 2022
🍃 Organic Maps is an Android & iOS offline maps app for travelers, tourists, hikers, and cyclists based on top of crowd-sourced OpenStreetMap data and curated with love by MapsWithMe founders.
🍃 Organic Maps is an Android & iOS offline maps app for travelers, tourists, hikers, and cyclists based on top of crowd-sourced OpenStreetMap data and curated with love by MapsWithMe founders.

?? Organic Maps is an Android & iOS offline maps app for travelers, tourists, hikers, and cyclists based on top of crowd-sourced OpenStreetMap data and curated with love by MapsWithMe founders. No ads, no tracking, no data collection, no crapware.

Aug 16, 2022
Dual Camera, IMU, and GPS data recorder for Android

Dual Camera, IMU, and GPS data recorder for Android

Jul 27, 2022
Demo de uso de google maps en Android, charla para el GDG Chimbote

mapasbasico Demo de uso de google maps en Android, charla para el GDG Chimbote Puedes usar este proyecto como base para trabajar con mapas en Android.

Sep 17, 2021
An android app that uses Google Maps API and SDK to track a user's location and calculate the total distance travelled
An android app that uses Google Maps API and SDK to track a user's location and calculate the total distance travelled

Bike Rush is an android app that uses Google Maps API and SDK to track a user's location and calculate the total distance travelled by him or her along with time and average speed.

Jul 22, 2022
Android library that allows you to determine your location in a few of lines
Android library that allows you to determine your location in a few of lines

locsimple Android library that allows you to determine your location in some lines! Benefits: automatic processing of permissions processing of enabli

May 5, 2022
A library for reverse geocoding coordinates in Android

?? AndroidReverseGeocoder A library for reverse geocoding coordinates in Android. The library is built on top of android's Geocoder library. AndroidRe

Jun 24, 2022
Android application with the announcements board of the Information and Electronic Engineering department of International Hellenic University.

Android application with the announcements board of the Information and Electronic Engineering department of International Hellenic University.

Jul 29, 2022
Simple bottom navigation with side navigation drawer using Jetpack navigation UI made in Kotlin
Simple bottom navigation with side navigation drawer using Jetpack navigation UI made in Kotlin

BottomNavWithSideNavApp simple bottom navigation with side navigation drawer usi

Jul 18, 2022