🦄 Android Pokedex-AR using ARCore, Sceneform, Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData) based on MVVM architecture.

Overview

Pokedex-AR

License API Build Status Profile

Pokedex-AR is a small demo application based on AR, modern Android application tech-stacks,
and MVVM architecture. This project focuses on ARCore and SceneForm.
Also fetching data from the network and integrating persisted data from the database via repository pattern.


Download

Go to the Releases to download the latest APK.

Tech stack & Open-source libraries

  • Minimum SDK level 24.
  • Kotlin based, Coroutines + Flow for asynchronous.
  • ARCore - ARCore SDK for Android.
  • SceneForm - Sceneform SDK for Android.
  • Hilt for dependency injection.
  • JetPack
    • Lifecycle - dispose of observing data when lifecycle state changes.
    • ViewModel - UI related data holder, lifecycle aware.
    • Room Persistence - construct a database using the abstract layer.
  • Architecture
    • MVVM Architecture (View - DataBinding - ViewModel - Model)
    • Repository pattern.
  • Retrofit2 & OkHttp3 - construct the REST APIs and paging network data.
  • Sandwich - construct lightweight http API response and handling error responses.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Glide, GlidePalette - loading images.
  • WhatIf - checking nullable object and empty collections more fluently.
  • Bundler - Android Intent & Bundle extensions that insert and retrieve values elegantly.
  • Balloon - A lightweight popup like tooltips, fully customizable with an arrow and animations.
  • Timber - logging.
  • Material-Components - Material design components like ripple animation, cardView.
  • Custom Views
    • Rainbow - An easy way to apply gradations and tinting for Android.
    • AndroidRibbon - A simple way to implement a beautiful ribbon with the shimmering on Android.
    • ProgressView - A polished and flexible ProgressView, fully customizable with animations.

MAD Score

summary kotlin

Architecture

Pokedex-AR is based on MVVM architecture and a repository pattern.

architecture

3D Model Licenses

Creative Commons licenses provide a standard way for content creators to grant someone else permission to use their work. If you allow remixing, your content will be published under a CC-BY 3.0 license. These creations are then accessible to other Poly users for use, even commercially, in their own creations, provided they give attribution to the original author.

Open API

Pokedex-AR using the PokeAPI for constructing RESTful API.
PokeAPI provides a RESTful API interface to highly detailed objects built from thousands of lines of data related to Pokémon.

Find this repository useful? ❤️

Support it by joining stargazers for this repository.
And follow me for my next creations! 🤩

License

Designed and developed by 2020 skydoves (Jaewoong Eum)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • It seems that all the image urls  unable to link the server。Is it my network problem?

    It seems that all the image urls unable to link the server。Is it my network problem?

    Please complete the following information:

    • Library Version [e.g. v1.0.0]
    • Affected Device(s) [e.g. Samsung Galaxy s10 with Android 9.0]

    Describe the Bug:

    Add a clear description about the problem.

    Expected Behavior:

    A clear description of what you expected to happen.

    opened by macy11 2
  • crash on pixel3 xl android 11

    crash on pixel3 xl android 11

    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.WindowInsetsController com.android.internal.policy.DecorView.getWindowInsetsController()' on a null object reference at com.android.internal.policy.PhoneWindow.getInsetsController(PhoneWindow.java:3880) at com.skydoves.pokedexar.extensions.ActivityExtensionsKt.applyFullScreenWindow(ActivityExtensions.kt:31) at com.skydoves.pokedexar.ui.scene.SceneActivity.onCreate(SceneActivity.kt:44)

    opened by HuixingWong 2
  • Sumin

    Sumin

    Guidelines

    Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.

    Types of changes

    What types of changes does your code introduce?

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    Preparing a pull request for review

    Ensure your change is properly formatted by running:

    $ ./gradlew spotlessApply
    

    Please correct any failures before requesting a review.

    opened by fosemfhtm 0
  • Issue/battle

    Issue/battle

    Guidelines

    Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.

    Types of changes

    What types of changes does your code introduce?

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    Preparing a pull request for review

    Ensure your change is properly formatted by running:

    $ ./gradlew spotlessApply
    

    Please correct any failures before requesting a review.

    opened by Sanu7D0 0
  • Feature/login

    Feature/login

    Guidelines

    Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.

    Types of changes

    What types of changes does your code introduce?

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    Preparing a pull request for review

    Ensure your change is properly formatted by running:

    $ ./gradlew spotlessApply
    

    Please correct any failures before requesting a review.

    opened by psb0623 0
Releases(1.0.2)
  • 1.0.2(Jan 8, 2022)

    🎉 Released a new version 1.0.2! 🎉

    What's Changed

    • Updated ARCore to 1.29.0.
    • Migrated from Livedata to StateFlow.
    • Removed unused LiveCoroutinesViewModel classes.
    • Update dependencies version to the recent and migrate codes by @skydoves in https://github.com/skydoves/Pokedex-AR/pull/5

    Full Changelog: https://github.com/skydoves/Pokedex-AR/compare/1.0.1...1.0.2

    Source code(tar.gz)
    Source code(zip)
    app-debug.apk(16.23 MB)
  • 1.0.1(Jun 2, 2021)

    🎉 Released a new version 1.0.1! 🎉

    What's New?

    • Migrated from LiveData to Flow for observing data on UI layers from ViewModels.
    • Used Assisted Injection in DetailViewModel.
    • Used asBindingProperty for observing flow data as properties.
    private val pokemonInfoFlow = detailRepository.fetchPokemonInfo(
        name = pokemonName,
        onComplete = { isLoading = false },
        onError = { errorMessage = it }
    )
    
    @get:Bindable
    val pokemonInfo: PokemonInfo? by pokemonInfoFlow.asBindingProperty(viewModelScope, null)
    
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Dec 13, 2020)

Owner
Jaewoong Eum
Android and open source software engineer.❤️ Digital Nomad. Love coffee, music, magic tricks, and writing poems. Coffee Driven Development
Jaewoong Eum
🦁 A Disney app using transformation motions based on MVVM (ViewModel, Coroutines, Flow, LiveData, Room, Repository, Koin) architecture.

DisneyMotions A demo Disney app using transformation motions based on MVVM architecture. The motion system is included in the 1.2.0-alpha05 released m

Jaewoong Eum 1.4k Dec 16, 2022
Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Simple Notes app demonstrates modern Android development with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture.

Aravind Chowdary 2 Sep 3, 2022
❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, LiveData, Room, Repository, Koin) architecture.

MarvelHeroes MarvelHeroes is a demo application based on modern Android application tech-stacks and MVVM architecture. Fetching data from the network

Jaewoong Eum 1.2k Dec 19, 2022
This is an Augmented Reality Android app that is made by using ARcore and Sceneform SDK. 📸 🎉

ARCore Furniture Sample Furniture Sample with Scenform SDK This is a Augmented Reality Android app which is made by using ARcore and Sceneform SDK. Au

Simform Solutions 15 Nov 9, 2022
A simple Pokedex App getting API with Retrofit, maintaining data using LiveData, and Material Design based on MVVM architecture

PokedexApp Pokedex A simple Pokedex App getting API with Retrofit, maintaining data using LiveData, and Material Design based on MVVM architecture. Te

Steven Adriano 0 Apr 12, 2022
Wallpaper app made using Hilt, Retrofit, Room, Navigation Components, MVI, Coroutines, Flows, ViewModel, LiveData, Datastore Preference.

Android Picture Engine Wallpaper app made using Hilt, Retrofit, Room, Navigation Components, MVI, Coroutines, Flows, ViewModel, LiveData, Datastore Pr

Simone Conigliaro 59 Sep 27, 2022
To Do List App is built in Kotlin using Material 3, Data Binding, Navigation Component Graphs, Room persistence library, Kotlin coroutines, LiveData, Dagger Hilt, and Notifications following MVVM Architecture.

ToDoListApp ToDoList App demonstrates modern Android development with Hilt, Coroutines, LiveData, Jetpack (Room, ViewModel), and Material 3 Design bas

Naman Garg 10 Jan 8, 2023
Shreyas Patil 2.1k Dec 30, 2022
Patter Lock using Hilt, Coroutines, Flow and Custom View Components based on MVVM architecture.

Pattern Lock App Sample project for created Pattern Lock View using custom view. Preview Usage Step 1 Add the PatterLockView in your XML layout file.

Furkan Özcan 5 Aug 22, 2021
Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack

Note taking app using MVVM architecture with Hilt, Material Motion, Coroutines, Flow, Jetpack (Room, ViewModel,Paging3).

Ranbir Singh 7 Apr 25, 2022
The JeTrivia is built on a modern Android Development tech stack with MVVM architecture. Kotlin, Coroutine, Flow, StateFlow, Jetpack Compose, Navigation, Room, Hilt, Retrofit2, OkHttp3, kotlinx.serialization, MockK, Truth

JeTrivia ?? In Progress ?? The JeTrivia application is sample based on MVVM architecture. Fetching data from the network via repository pattern and sa

Tolga Bolatcan 5 Mar 31, 2022
Simple Notes app, MVVM with Google Architectural components Room database, LiveData and ViewModel. Written in Kotlin using androidx libraries

Simple Notes app, MVVM with Google Architectural components Room database, LiveData and ViewModel. Written in Kotlin using androidx libraries. Implemented Firebase Auth and Database, and used Room database

Javokhir Jambulov 3 Aug 1, 2022
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

Wajahat Karim 313 Jan 4, 2023
🛡️ Android security (camera/microphone dots indicators) app using Hilt, Animations, Coroutines, Material, StateFlow, Jetpack based on MVVM architecture.

??️ Android security app using Hilt, Animations, Coroutines, Material, StateFlow, Jetpack (Room, ViewModel, Paging, Security, Biometrics, Start-up) based on MVVM architecture.

null 639 Jan 6, 2023
Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App

Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App Video Weather.-.HD.720p.mov Introdu

wykee2 4 Jul 12, 2022
MVVM + Kotlin + Jetpack Compose +Navigation Compose + Hilt + Retrofit + Unit Testing + Compose Testing + Coroutines + Kotlin Flow + Io mockK

MvvmKotlinJetpackCompose Why do we need an architecture even when you can make an app without it? let's say you created a project without any architec

Sayyed Rizwan 46 Nov 29, 2022
A simple NewsApp built using Jetpack Compose, MVVM Architecture, Dagger Hilt and Kotlin Flow

NewsApp is simple App which uses NewsAPI to get top headlines for country you live in or you can search for a specific news. Focus of this app is to d

ElvisOperator 4 Aug 20, 2022
It is a NBAApp developed by Kotlin. It uses MVVM design pattern, Coroutines, Retrofit and JetPack libraries like Room, Lifecycle, ViewBinding, DataBinding, Hilt and Navigation.

NbaApp It is a NBAApp developed by Kotlin. It uses MVVM design pattern, Coroutines, Retrofit and JetPack libraries like Room, Lifecycle, ViewBinding,

Tuna Ateş Koç 2 Feb 26, 2022