Git Product home page Git Product logo

ccm-android's Introduction

Comic-Con Museum Android App

The Comic-Con Museum Android App enhances audience experience and access through in-gallery augmented reality, game-based progress tracking, and ability to explore an extensive library of exhibition content.

The Museum's app is currently comprised of two components: Native Android, and Unity/Vuforia AR. This is the repo for the Native Android component.

Check out our contribution guidelines to get started.

Once we're live, you can find the app in the Play Store.

Beta Testing

Eventually, a beta build of the app will become available. Please fill out this form if you're interested in receiving this build once it becomes available.

ccm-android's People

Contributors

bbchristians avatar bist333 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

bist333

ccm-android's Issues

[Experience Activity] Content View

Implement the design for the content view in the experiences activity.

  • Design should be obtained from designers in an implementable format.
  • Design is implemented.
  • Content should be generated from a data model in order to allow content view to be used for multiple experiences.
  • View model should be used to obtain data.
  • View model should have 85% code coverage.

[Content View] Share button

Determine what the share button should do and make it do it. This refers to the share button currently on the overview carousel for each experience.

  • Determine what we want to do with this. Contact Julia to see what kind of stuff we should try to do.
  • Work on implementing this integration.

IIRC there's some additional work that needs to be done for getting a web-app to display in-app, so let me know if that's bottlenecking you - Ben.

[Overview] Implement links

Implement functionality for the icons on the overview:

Facebook Button

  • Determine if this should link to a facebook page of the content, or if it should load the facebook app with a loaded
  • Make this link happen

More Info Button

  • Determine how content should be displayed (modal or expandable menu)
  • Make this link happen

Implement Unity API Functions

We have some functions in the ExperienceActivity class that are called from unity to communicate with the native component from the Unity component. These need to be implemented.

Documentation says that there should be more response codes, and we need help defining those. Some are located within the Unity component's logic, some are on Android.

[Content View] We need to actually make content displayable

We need to determine how content should be displayed. It also needs to come from data from a server.

  • Determine templates for content
  • Determine how to take data from our service and make it display on the content page
  • Make it do the thing

[Content View] Search bar

Content should be searchable using a search bar

  • DO NOT make a web request every time the search bar is used
  • Should only search content names (maybe we can specify what to search on the backend?)
  • Search bar appears as a magnifying glass on the top right in the title bar. When tapped makes the title bar a search bar

Add App Content

Currently, content is being dynamically created from our JSON files here:
https://github.com/Comic-ConMuseum/ccm-android/tree/master/app/src/main/res/raw

We need more quality content to populate our app for testing purposes. Add some more categories, content, experiences, etc.

Note: If you add another experience, you need to add it to the carousel here:
https://github.com/Comic-ConMuseum/ccm-android/blob/master/app/src/main/java/com/comic_con/museum/ar/MainActivity.kt#L26

This is adding it to a list, so order of when the new exhibit is added determines where it appears in the carousel.

So far I just used amazon, google images, and wikipedia

[Experience View] Dynamically build

Hook up the generation-models with the experienceId received from the MainActivity so that different content selected from the overview changes the content of the experience.

UPDATE: Load from local JSON files.

Define data models to be sent to AR

We need to define the data models to be sent to the AR component. We should also maintain the data for these files in a JSON file in the raw resource directory.

Put the final data model in the AR Slack Channel and notify whoever is assigned to the associated issue.

[Content View] Add caching to web-hosted resources

When the Categories' images are listed, the are loaded from the web. When the fragment is destroyed, these images are also destroyed.

  • Create a ViewModel to store these images
  • Create a caching mechanism in that ViewModel to obtain the images and display accordingly

Bonus (make this its own issue before completing this one)

  • Investigate potential issues with storing these images across long periods of time

Debugging Improvement

Debugger attaches to a process, we're using two of those. This means that we need to call Debug.waitForDebugger() and then manually attach to the new process every time we want to debug an automatically executing event.

We need to call the waitForDebugger() function automatically when the first process has a debugger attached, but not when it doesn't. This is for QOL

[Content View] Add favoriting to content categories

Implement favoriting using SharedPreferences

  • Persists between sessions
  • Util has been made for accessing SharedPreferences
  • Favorited content categories are displayed first
  • Favorited content has a different 'favorited' decal

Determine app color pallete

We need to figure out what color's we're going to be using throughout the app.

  • Get determined color pallete
  • Populate color resource file with appropriately named colors
  • Modify app theme to use the new color scheme

App launch loading screen with latch

We need a loading screen that has latches in order to assure content is ready to be displayed by the time the app loads.

  • Determine design for loading screen logo
  • Implement load screen fragment
  • Implement load screen activity in a way that allows new loading features to be added
  • Attach to app launch

Add readme

There should be a readme that explains how to set up the project on your device.

[Launch AR] Determine what should be done for this view

We need designs from here before we can start.

The intended functionality is that it avoids any unity components from loading until the user expresses desire to begin the AR component. If possible, prevent the UI on the screen from flashing when the Unity component becomes active.

[Content View] Investigate why some content from the model is wrong

It appears that sometimes content that is supplied in the GridLayout from the BaseAdapter is incorrect. Fix this

  • Data from model is displayed correctly ALWAYS in the GridView
  • A similar implementation is done for the Progress view, so investigate if this needs to be fixed as well

Investigate carousel technology

Displaying the different exhibits requires a carousel with the current design. Investigate which technology we can use to do this.

  • Confirm design requirements for Carousel
  • Find a technology that works with our needs
  • Import into the project

Investigate Image Loading/Caching

We use Glide already to load GIFs, so look into using Glide to also load web assets.

The intended functionality is:
Load assets during the loading screen at the start of the app
Images should not need to be loaded later

Investigate Injection for ViewModels

ViewModels should be singletons that follow the same lifecycle as the app itself. We need to be able to create ViewModels that can be used across the app in multiple places.

  • Investigate Injection technology (look into Dagger)
  • Implement and test that the ViewModel technology works.

Exhibit -> Experience

Because I'm bad at planning, I've been using the terms Experience and Exhibit interchangeably. Please go through all vars, strings, functions, classes, etc. and change all occurrences of Exhibit to Experience. Make sure stuff still works, too.

Bottom nav bar

Design and implement bottom nav bar component.

Should provide functionality to navigate to

  • Additional content
  • Achievements/trophies
  • AR Experience

Investigate social media integration

We want some way to share content with facebook. Investigate how to create a facebook post using a facebook app or the website if the app is absent.

  • Determine how much time this takes to implement and note in the comments below

More Overview Carousel Updates

  • Load image resources during loading screen
  • [Design] Figure out how to normalize sizes and play nicely with the 'More items' section
  • Improve look of the carousel counters at the bottom
  • Do something with the facebook button

[Experience] Add ViewPager to Content

I should be able to use gestures to move between screens, rather than having to tap on the bottom nav.

  • Implement ViewPager so swiping works
  • Synchronize the ViewPager with the bottom nav

Fix issue with ViewPager on Activity Killed

When the activity is killed in the background the ViewPager enters a bugged state. This needs to be fixed.

This issue causes a very bad UX with launching content from the AR view.

Related issue: #16

Fix naming issue with the project

Android Studio is mad at the name of the project (because of the underscore). Look into fixing this (just remove the '_')

Make sure AR knows about this because they use
a reference with an underscore, which will need to be updated.

Implement `newCollectionEvent`

This function will be called by Unity whenever a new content bit is collected. This needs to talk to the progressViewModel and update the progress of the associated task.

[Overview] Organize Carousel

  • Create some good looking content for the carousel
  • Organize the carousel so that it starts all the way to the right (so it looks chronological)

App launch icon

Check in with Yomar to investigate an appropriate logo for the app. Then implement.

  • Get design asset from Yomar (or someone else)
  • Implement

Update Title Bar

The title bar can have the comic con museum logo in it for the overview

Update title to the name of the exhibit for the experience. (Maybe with another version of the logo)

Determine web request framework

We need to figure out what framework we're going to use for making web requests. Something free, something else, and something light-weight.

  • Note valid frameworks below
  • Determine which of the frameworks fits this projects needs the best

Update Loading Screen Asset

Loading screen asset currently has a border around it it should not have. Get the new asset from Yomar and update.

Actionable design

Work with yomar to turn the wireframes into higher fidelity designs that can start to be actually implemented.

  • Load Screen
  • Exhibit Selection Screen
  • Exhibit Selected Screen
  • Archive Screen
  • Individual Novel
  • Achievements Screen
  • AR UI Overlay

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.