Skip to content

See your own channel with videos hosted in your computer!

Notifications You must be signed in to change notification settings

giovanischiar/mo-channel

Repository files navigation


Mo Channel

See your own channel with videos hosted in your computer!
This Android TV application allows you to watch videos hosted on your own computer on your TV.

Usage

This application requires downloading the mo-channel-server executable on the machine where the videos are located in order to be available to the application.

Use Cases

This is the app when you open it for the first time. Since the Server URL is empty, it opens the settings to input the Server URL. If you are running the server on your computer, you'll need to input the IP number the server will tell you, along with the port number.
Here is the screen with some content registered. In this example, you can store concerts you've recorded on your computer, run the mo-channel-server, and input the URL in the settings.
This is the page when you press on one item. It shows the 'episodes' per 'season'. Episodes are the videos, while 'season' refers to the subfolder where you put the videos.

Technologies

Technology Purpose

Jetpack Compose
Design UI

Exoplayer
The video player used by this application

Room
Persist application data

IconCreator
Generate application Icon (my own library)

Diagrams

Please check this repository to learn more about the notation I used to create the diagrams in this project.

Package io.schiar.ruleofthree

This diagram shows all the packages the application has, along with their structures. Some packages are simplified, while others are more detailed.

Package io.schiar.mochannel Diagram

Package view with viewmodel

These diagrams illustrate the relationship between screens from view and viewmodel classes. The arrows from the View Models represent View Data objects (classes that hold all the necessary data for the view to display), primitives, or collections encapsulated by State Flows, which are classes that encapsulate data streams. Every update in the View Data triggers the State Flow to emit these new values to the view, and the view updates automatically. Typically, the methods called from screens in view to classes in viewmodel trigger these changes, as represented in the diagram below by arrows from the view screens to viewmodel classes.

Package view with viewmodel Diagram

Package view.viewdata

View Datas are classes that hold all the data the view needs to present. They are created from model classes and served by View Models to the view. This diagram represents all the associations among the classes in the view.viewdata.

Package viewdata Diagram

Package viewmodel with view.viewdata

View Models serve the view with objects made from viewmodel.viewdata classes, collections, or primitive objects encapsulated by State Flows. This diagram represents all the associations among the classes in viewmodel and view.viewdata.

Package viewmodel with viewdata Diagram

Package viewmodel with model.repository

View Models also serve as a façade, triggering methods in model.repository classes. This diagram shows that each View Model has its own Repository class and illustrates all methods each View Model calls, represented by arrows from View Models to Repository classes.

Package viewmodel with repository Diagram

Package model

Model classes handle the logic of the application. This diagram represents all the associations among the classes in the model.

Package model

Package model.repository and model

These diagrams represent all the associations among the classes in model.repository and model.

Repository Model Diagram

Package model.repository with model.datasource and library

Repository classes utilize the Data Source classes to perform the creation, retrieval, update, and deletion of the model objects. The Data Source classes use the database to persist these alterations and the requester to fetch the application data. In this case, the data can come from the database in the case of ServerURL or the API server in the case of TV shows. It can also be sourced from local sources, enabling testing of the application. This diagram represents all the associations among the classes in model.repository, model.datasource, and library. It also demonstrates the communications between each Repository through interfaces located at model.repository.listener package.

Package repository with data source and library

Future Tasks

  • Create Tests.
  • Add IconCreator (my own library).
  • Work with multiples servers at the same time.

About

See your own channel with videos hosted in your computer!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published