Add proper README

Add a proper readme and other documents for this project.
This commit is contained in:
OxygenCobalt 2020-12-18 17:15:57 -07:00
parent 4413cb1499
commit ed33813112
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
41 changed files with 234 additions and 27 deletions

View file

View file

@ -0,0 +1,12 @@
# Licenses
Auxio uses a number of third-party libraries, which are listed below with their licenses:
| Library Name | Author(s) | Purpose | License |
|--------------|-----------|---------|---------|
| [ExoPlayer](https://github.com/google/ExoPlayer) | [Google](https://github.com/google) | Music Playback | Apache-2.0 |
| [Coil](https://github.com/coil-kt/coil) | [coil-kt](https://github.com/coil-kt) | Image Loading | Apache-2.0 |
| [Indicator Fast Scroll](https://github.com/reddit/IndicatorFastScroll) | [Reddit](https://github.com/reddit) | Fast Scrolling | MIT |
| [Material Dialogs](https://github.com/afollestad/material-dialogs) | [Aiden Follestad](https://github.com/afollestad) | Accent Dialog | Apache-2.0 |
| [ktlint](https://github.com/pinterest/ktlint) | [Pinterest](https://github.com/pinterest) | Code Formatting | MIT |
| [LeakCanary](https://github.com/square/leakcanary) | [Square](https://github.com/square) | Memory leak detection | Apache-2.0 |

View file

@ -1,5 +1,75 @@
# Auxio
<p align="center"><img src="info/ic_auxio.png" width="150"></p>
<h1 align="center"><b>Auxio</b></h1>
<h4 align="center">A sensible and customizable music player for android.</h4>
<p align="center">
<a href="https://github.com/oxygencobalt/Auxio/releases">
<img alt="GitHub release" src="https://img.shields.io/static/v1?label=Tag&message=v1.0.0&color=0D5AF5">
</a>
<a href="https://www.gnu.org/licenses/gpl-3.0">
<img src="https://img.shields.io/badge/License-GPL%20v3-blue.svg">
</a>
<img alt="Minimum SDK" src="https://img.shields.io/badge/API-21%2B-32B5ED">
</p>
<h4 align="center"><a href="/info/FAQ.md">FAQ</a> / <a href="/info/FORMATS.md">Formats</a> / <a href="/info/LICENSES.md">Licenses</a> / <a href="/.github/CONTRIBUTING.md">Contributing</a></h4>
Auxio is a music player for android that I built for myself. It only has the features that I need out of a music player and nothing more.
## About
***WIP***
Auxio is a music player for android that I built for myself, its intended to only have the features that I use out of a music player and nothing more.
However, Auxio is also structured to be customizable and extendable, in the case you want to add features that I personally don't need.
## Screenshots
[<img src="info/shot_library_port.png" width=160>](info/shot_library_port.png)
[<img src="info/shot_playback_port.png" width=160>](info/shot_playback_port.png)
[<img src="info/shot_songs_port.png" width=160>](info/shot_songs_port.png)
[<img src="info/shot_search_port.png" width=160>](info/shot_search_port.png)
[<img src="info/shot_album_port.png" width=160>](info/shot_album_port.png)
[<img src="info/shot_artist_port.png" width=160>](info/shot_artist_port.png)
[<img src="info/shot_queue_port.png" width=160>](info/shot_queue_port.png)
[<img src="info/shot_notif.png" width=160>](info/shot_notif.png)
[<img src="info/shot_settings_port.png" width=160>](info/shot_settings_port.png)
[<img src="info/shot_album_alt.png" width=160>](info/shot_album_alt.png)
## Features
- Reliable, ExoPlayer based playback
- Customizable UI & Behavior
- Extensive Genres/Artists/Albums/Songs support
- Powerful queue system
- Full playback persistence system
- Embedded covers support
- Search Functionality
- No internet connectivity whatsoever
- Kotlin from the ground-up
- Modular, feature-based architecture
- No rounded corners (The way god intended)
## To Come in the future:
- Better music loading system
- Improved genre/artist/album UIs
- Dedicated search tab
- Better edge-to-edge support
- Black theme
- Custom accents
- Playlists
- Liked songs
- More customization options
- Other things, presumably
## Contributing
Auxio accepts most contributions as long as they follow the [Contribution Guidelines](/.github/CONTRIBUTING.md).
Feature additions and Major UI changes are less likely to be accepted. See [Accepted Additions](/info/ADDITIONS.md) for more information.
## License
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html)
Auxio is Free Software: You can use, study share and improve it at your
will. Specifically you can redistribute and/or modify it under the terms of the
[GNU General Public License](https://www.gnu.org/licenses/gpl.html) as
published by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

View file

@ -430,7 +430,7 @@ class PlaybackStateManager private constructor() {
logD("Shuffling queue with seed $newSeed")
val lastSong = mQueue[mIndex]
val lastSong = if (mIsInUserQueue) mQueue[mIndex] else mSong
mShuffleSeed = newSeed
@ -452,7 +452,7 @@ class PlaybackStateManager private constructor() {
private fun resetShuffle() {
mShuffleSeed = -1L
val lastSong = mQueue[mIndex]
val lastSong = if (mIsInUserQueue) mQueue[mIndex] else mSong
setupOrderedQueue()

View file

@ -17,12 +17,8 @@ import org.oxycblt.auxio.databinding.FragmentAboutBinding
import org.oxycblt.auxio.logD
import org.oxycblt.auxio.logE
import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.settings.SettingsManager
import org.oxycblt.auxio.ui.createToast
import org.oxycblt.auxio.ui.isEdgeOn
import org.oxycblt.auxio.ui.isIrregularLandscape
import org.oxycblt.auxio.ui.isLandscape
import org.oxycblt.auxio.ui.toColor
import java.lang.Exception
class AboutDialog : BottomSheetDialogFragment() {
@ -35,15 +31,6 @@ class AboutDialog : BottomSheetDialogFragment() {
): View {
val binding = FragmentAboutBinding.inflate(layoutInflater)
val musicStore = MusicStore.getInstance()
val settingsManager = SettingsManager.getInstance()
// --- UI SETUP ---
if (isEdgeOn() && !requireActivity().isIrregularLandscape()) {
requireDialog().window?.apply {
navigationBarColor = R.color.background.toColor(requireContext())
// handleTransparentSystemNavBar(resources.configuration)
}
}
binding.aboutVersion.text = BuildConfig.VERSION_NAME
@ -55,7 +42,7 @@ class AboutDialog : BottomSheetDialogFragment() {
R.string.format_songs_loaded, musicStore.songs.size.toString()
)
binding.aboutAuthor.text = getString(
R.string.format_author, getString(R.string.author_oxycblt)
R.string.format_author, getString(R.string.label_author_oxycblt)
)
if (isLandscape(resources)) {

View file

@ -6,15 +6,20 @@ package org.oxycblt.auxio.ui
import android.annotation.TargetApi
import android.app.Activity
import android.content.Context
import android.content.res.Configuration
import android.graphics.Point
import android.os.Build
import android.util.DisplayMetrics
import android.view.View
import android.view.Window
import android.view.WindowInsetsController
import android.view.WindowManager
import org.oxycblt.auxio.logD
/**
* Check if we are in the "Irregular" landscape mode [e.g landscape, but nav bar is on the sides]
* Used to disable most of edge-to-edge if that's the case, as I cant get it to work on this mode yet.
* TODO: Make edge-to-edge work in irregular mode
* TODO: Make edge-to-edge work better in irregular mode
* @return True if we are in the irregular landscape mode, false if not.
*/
fun Activity.isIrregularLandscape(): Boolean {

View file

@ -26,4 +26,12 @@
<item name="md_color_button_text">@color/control_color</item>
<item name="md_font_title">@font/inter_black</item>
</style>
<style name="Theme.BottomSheetFix" parent="@style/Theme.Design.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@color/background</item>
<item name="android:windowLightStatusBar">false</item>
<item name="bottomSheetStyle">@style/Theme.BottomSheetHeightFix</item>
</style>
</resources>

View file

@ -26,4 +26,12 @@
<item name="md_color_button_text">@color/control_color</item>
<item name="md_font_title">@font/inter_black</item>
</style>
<style name="Theme.BottomSheetFix" parent="@style/Theme.Design.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@color/background</item>
<item name="android:windowLightStatusBar">false</item>
<item name="bottomSheetStyle">@style/Theme.BottomSheetHeightFix</item>
</style>
</resources>

View file

@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="author_oxycblt">OxygenCobalt</string>
<string name="label_author_oxycblt">OxygenCobalt</string>
<!-- Format Namespace | Value formatting/plurals -->
<string name="format_info">%1$s / %2$s</string>
<string name="format_double_info">%1$s / %2$s / %3$s</string>
<string name="format_double_counts">%1$s, %2$s</string>
<string name="format_accent_summary">&lt;b>%1$s&lt;/b>:&#160;%2$s</string>
</resources>

View file

@ -156,11 +156,7 @@
<string name="color_label_neutral">Neutral</string>
<!-- Format Namespace | Value formatting/plurals -->
<string name="format_info">%1$s / %2$s</string>
<string name="format_double_info">%1$s / %2$s / %3$s</string>
<string name="format_double_counts">%1$s, %2$s</string>
<string name="format_next_from">Next From: %s</string>
<string name="format_accent_summary">&lt;b>%1$s&lt;/b>:&#160;%2$s</string>
<string name="format_songs_loaded">Songs Loaded: %s</string>
<string name="format_author">Created by %s</string>

View file

@ -172,10 +172,10 @@
<style name="Theme.BottomSheetFix" parent="@style/Theme.Design.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item>
<item name="bottomSheetStyle">@style/Theme.BottomSheetHeightFix</item>
</style>
<style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
<style name="Theme.BottomSheetHeightFix" parent="Widget.Design.BottomSheet.Modal">
<item name="behavior_peekHeight">500dp</item>
</style>
</resources>

BIN
assets/ic_auxio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

BIN
assets/shot_album_alt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
assets/shot_album_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 KiB

BIN
assets/shot_artist_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 KiB

BIN
assets/shot_library_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

BIN
assets/shot_notif.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
assets/shot_playback_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
assets/shot_queue_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

BIN
assets/shot_search_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
assets/shot_settings_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
assets/shot_songs_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

27
info/ADDITIONS.md Normal file
View file

@ -0,0 +1,27 @@
# Accepted Additions and Requests
I primarily built Auxio as a response to many other music players on android that did far too much, had frustrating UI/UX flaws, or both.
Since I want to keep this app from suffering the same fate as those others, I have baseline requirements for all contributions.
All guidelines from the [Contribution Guidelines](../.github/CONTRIBUTING.md) still apply.
## Bug Fixes, Optimizations, Library Updates, Formatting, etc.
These will likely be accepted/add as long as they do not cause too much harm to the app's architecture.
## New Options/Customizations
These will be accepted/added if I see the value in the addition of those options and if they don't cause too much harm to the app's architecture. While I do want Auxio to remain consistent behavior/UI-wise, new options for certain customizations are still welcome.
**Note:** I will be adding Black Mode/Custom Accents in the future. Read the [FAQ](FAQ.md) for more information.
## Feature Additions and UI Changes
These are far less likely to be accepted/added. As I said, I want to avoid Auxio from becoming overly bloated with features I do not use, and therefore **I will only accept features/UI changes that directly benefit my own usage.** If they do not, then I will reject/ignore them.
Feel free to fork Auxio to add your own features however.
## A Final Note
I am an extremely busy student that only programs in his free time. If I decided to implement/accept an idea, it will take some time. **Be Patient.**

53
info/FAQ.md Normal file
View file

@ -0,0 +1,53 @@
# Auxio - Frequently Asked Questions
For a list of **supported formats** read [Supported Formats](FORMATS.md)
This FAQ will be continually updated as new changes and updates are made to Auxio.
## What is Auxio?
Auxio is a reliable and customizable local music player that I built for myself, primarily.
## Where can I download Auxio?
Nowhere currently, I still need to make some changes before its ready to be put up on public-facing stores. See the [Releases](https://github.com/oxygencobalt/Auxio/releases) to download it for now. It will arrive on F-Droid eventually.
## Can I translate Auxio to my native language?
I still need to set up Weblate, but you can open a [Pull Request](https://github.com/enricocid/Music-Player-GO/pulls) with any translations you want to be added for now.
## Why ExoPlayer?
ExoPlayer is far more flexible than the native MediaPlayer API, allowing Auxio to be extended to sources that aren't just the local files on the phone, while still providing consistent playback behavior across devices and OEMs.
## Why is there no black mode?
Android does not support a black mode directly, only dark and light. Therefore I have to implement the mode myself, which will take some time. **I do plan to add it however.**
## Why cant I have a custom accent?
Custom accents would require some changes to the accent system in the app, which will take some time. **I do plan to add them however.**
## Why are accents lighter/less saturated in dark mode?
As per the [Material Guidelines](https://material.io/design/color/dark-theme.html), accents should be less saturated on dark mode to reduce eye strain.
You will be able to set the accent to something less saturated when I implement custom accents.
## Does Auxio have an equalizer?
No. Don't need it. Will never add it.
## Why isn't edge-to-edge enabled on versions below Oreo?
The APIs for changing system bar colors were only added in API Level 27 (Oreo MR1), meaning that edge-to-edge will not work below that version.
I could possibly extend edge-to-edge support to those versions, but it would take awhile.
## How can I contribute/report issues?
Open an [Issue](https://github.com/OxygenCobalt/Auxio/issues) or a [Pull Request](https://github.com/OxygenCobalt/Auxio/pulls), please note the [Contribution Guidelines](../.github/CONTRIBUTING.md) and [Accepted Additions](ADDITIONS.md).
## Does this app keep/send any information about myself or my device.
Never. There's no need. Auxio can't even access the internet.

23
info/FORMATS.md Normal file
View file

@ -0,0 +1,23 @@
# Supported Formats
Auxio is based off [ExoPlayer](https://exoplayer.dev/), which provides greater flexibility and consistency with how Auxio plays music.
Here are the music formats that Auxio supports, as per the [Supported ExoPlayer Formats](https://exoplayer.dev/supported-formats.html):
✅ = Supported
👎 = Not fully supported
❌ = Not supported
| Format | Supported | Comments |
|--------|-----------|-----------
| M4A | ✅ | |
| MP3 | ✅ | Some files may not be seekable |
| MKA | ✅ | |
| OGG | ✅ | Containing Vorbis, Opus, and FLAC |
| WAV | ✅ | |
| MPEG_TS | ✅ | |
| MPEG_TS | ✅ | |
| AAC | 👎 | Not seekable |
| FLAC | ❌ | Auxio must be patched with the [FLAC Extension](https://github.com/google/ExoPlayer/tree/release-v2/extensions/flac) |

12
info/LICENSES.md Normal file
View file

@ -0,0 +1,12 @@
# Licenses
Auxio uses a number of third-party libraries, which are listed below with their licenses:
| Library Name | Author(s) | Purpose | License |
|--------------|-----------|---------|---------|
| [ExoPlayer](https://github.com/google/ExoPlayer) | [Google](https://github.com/google) | Music Playback | Apache-2.0 |
| [Coil](https://github.com/coil-kt/coil) | [coil-kt](https://github.com/coil-kt) | Image Loading | Apache-2.0 |
| [Indicator Fast Scroll](https://github.com/reddit/IndicatorFastScroll) | [Reddit](https://github.com/reddit) | Fast Scrolling | MIT |
| [Material Dialogs](https://github.com/afollestad/material-dialogs) | [Aiden Follestad](https://github.com/afollestad) | Accent Dialog | Apache-2.0 |
| [ktlint](https://github.com/pinterest/ktlint) | [Pinterest](https://github.com/pinterest) | Code Formatting | MIT |
| [LeakCanary](https://github.com/square/leakcanary) | [Square](https://github.com/square) | Memory leak detection | Apache-2.0 |

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
readme/shot_album_land.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

BIN
readme/shot_album_portait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 KiB

BIN
readme/shot_artist_land.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

BIN
readme/shot_artist_portrait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 KiB

BIN
readme/shot_lib_port.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

BIN
readme/shot_lib_portait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

BIN
readme/shot_notif_alt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

BIN
readme/shot_playback_land.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

BIN
readme/shot_playback_portrait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
readme/shot_queue_portrait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

BIN
readme/shot_search_port Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
readme/shot_search_portrait Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
readme/shot_settings_portrait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
readme/shot_songs_portrait.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB