docs: rework contribution info

Update the contribution information and templates.

The contribution information and templates were growing a bit stale,
given that they haven't gotten a refresh since ~1.3.0. This commit
reworks them to be more thorough and straightfoward.
This commit is contained in:
OxygenCobalt 2022-02-06 14:30:07 -07:00
parent 470187422a
commit d9e2d7f07a
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
10 changed files with 42 additions and 72 deletions

View file

@ -1,7 +1,6 @@
# Auxio contribution guidelines # Auxio contribution guidelines
## Crashes & Bugs ## Crashes & Bugs
Log them in the [Issues](https://github.com/OxygenCobalt/Auxio/issues) tab. Log them in the [Issues](https://github.com/OxygenCobalt/Auxio/issues) tab.
Please keep in mind when reporting an issue: Please keep in mind when reporting an issue:
@ -17,7 +16,6 @@ If you do make an issue, Make sure to provide:
If you have knowledge of Android/Kotlin in general, you could also go about fixing the bug yourself and opening a [Pull Request](https://github.com/OxygenCobalt/Auxio/pulls). If you have knowledge of Android/Kotlin in general, you could also go about fixing the bug yourself and opening a [Pull Request](https://github.com/OxygenCobalt/Auxio/pulls).
## Feature Requests ## Feature Requests
These should also be logged in the [Issues](https://github.com/OxygenCobalt/Auxio/issues) tab. These should also be logged in the [Issues](https://github.com/OxygenCobalt/Auxio/issues) tab.
Please keep in mind when requesting a feature: Please keep in mind when requesting a feature:
@ -34,17 +32,14 @@ If you have the knowledge, you can also implement the feature yourself and creat
Its also recommended that you read about [Auxio's Architecture](../info/ARCHITECTURE.md) as well to make changes better and more efficient. Its also recommended that you read about [Auxio's Architecture](../info/ARCHITECTURE.md) as well to make changes better and more efficient.
## Translations ## Translations
I don't really see the use in weblate, so currently you should see the [Translations Megathread]](https://github.com/OxygenCobalt/Auxio/issues/3) to see how to propose translations.
I still need to setup weblate, so currently you should open a [Pull Request](https://github.com/OxygenCobalt/Auxio/pulls) to add translations to the strings.xml for your specific language.
## Code Contributions ## Code Contributions
If you have knowledge of Android/Kotlin, feel free to to contribute to the project. If you have knowledge of Android/Kotlin, feel free to to contribute to the project.
- If you want to help out with an existing bug report, comment on the issue that you want to fix saying that you are going to try your hand at it. - If you want to help out with an existing bug report, comment on the issue that you want to fix saying that you are going to try your hand at it.
- If you want to add something, its recommended to open up an issue for what you want to change before you start working on it. That way I can determine if the addition will be merged in the first place, and generally gives a heads-up overall. - If you want to add something, its recommended to open up an issue for what you want to change before you start working on it. That way I can determine if the addition will be merged in the first place, and generally gives a heads-up overall.
- Do not bring non-free software into the project, such as Binary Blobs. - Do not bring non-free software into the project, such as Binary Blobs.
- Stick to [F-Droid Contribution Guidelines](https://f-droid.org/wiki/page/Inclusion_Policy) - Stick to [F-Droid Including Guidelines](https://f-droid.org/wiki/page/Inclusion_Policy)
- Make sure you stick to Auxio's styling with [ktlint](https://github.com/pinterest/ktlint). `ktlintformat` should run on every build. - Make sure you stick to Auxio's styling with [ktlint](https://github.com/pinterest/ktlint). `ktlintformat` should run on every build.
- Please ***FULLY TEST*** your changes before creating a PR. Untested code will not be merged. - Please ***FULLY TEST*** your changes before creating a PR. Untested code will not be merged.
- Java code will **NOT** be accepted. Kotlin only. - Java code will **NOT** be accepted. Kotlin only.

View file

@ -10,6 +10,9 @@ assignees: ''
#### Describe the bug/crash: #### Describe the bug/crash:
<!-- A clear and concise description of what the bug or crash is. --> <!-- A clear and concise description of what the bug or crash is. -->
#### Expected behavior
<!-- Include behavior of other android music players, if applicable. -->
#### Steps To Reproduce the bug/crash: #### Steps To Reproduce the bug/crash:
<!-- <!--
1. Go to X 1. Go to X
@ -19,14 +22,26 @@ assignees: ''
--> -->
#### Logs/Stack Traces: #### Logs/Stack Traces:
<!-- If possible, provide a stack trace or a Logcat. This can help identify the issue. --> <!--
If possible, provide a stack trace or a Logcat. This can help identify the issue.
To take a logcat, you must do the following:
1. Use a desktop/laptop to download the android platform tools from https://developer.android.com/studio/releases/platform-tools.
2. Extract the downloaded file to a folder
3. Enable USB debugging on your phone [See https://developer.android.com/studio/command-line/adb#Enabling], and then connect your
phone to a laptop. You will get a prompt to "Allow USB debugging" when you run the logcat command. Accept this.
4. Open up a terminal/command prompt in that folder and run:
- `./adb -d logcat | grep -i "[DWE] Auxio"` in the case of a bug [may require some changes on windows]
- `./adb -d logcat AndroidRuntime:E *:S` in the case of a crash.
5. Copy and paste the output to this area of the issue.
-->
#### Screenshots: #### Screenshots:
<!-- If applicable, add screenshots to help explain your problem. --> <!-- If applicable, add screenshots to help explain your problem. -->
#### Phone Information: #### Phone Information:
<!-- Please provide information about your phone's android version/model. --> <!-- Please provide information about your phone's manufacturer, model, android version, and skin. -->
#### Due Diligence: #### Due Diligence:
- [ ] I have checked this issue for any duplicates.
- [ ] I have checked for this issue in the [FAQ](https://github.com/OxygenCobalt/Auxio/blob/dev/info/FAQ.md).
- [ ] I have read the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md). - [ ] I have read the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md).

View file

@ -11,11 +11,15 @@ assignees: ''
<!-- A clear and concise description of what you want to be added. --> <!-- A clear and concise description of what you want to be added. -->
#### Is your feature request related to a problem? Please describe: #### Is your feature request related to a problem? Please describe:
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] --> <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when... -->
#### Do other music players handle this? If so, how?
<!-- This is optional, but recommended. -->
#### Why do you think this will improve everyone's usage of Auxio? #### Why do you think this will improve everyone's usage of Auxio?
<!-- Provide a rationale here --> <!-- Providing a good argument may convince me to approve this feature. -->
#### Due Diligence: #### Due Diligence:
- [ ] I have read the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md).
- [ ] I have read [Accepted Additions and Requests](https://github.com/OxygenCobalt/Auxio/blob/dev/info/ADDITIONS.md) and the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md). - [ ] I have read the [Accepted Additions and Requests](https://github.com/OxygenCobalt/Auxio/blob/dev/info/ADDITIONS.md) document.
- [ ] I have checked for this feature in the [FAQ](https://github.com/OxygenCobalt/Auxio/blob/dev/info/FAQ.md).

View file

@ -1,28 +1,28 @@
<!-- Please fill out all this information. --> <!-- Please fill out all this information. -->
**What is it?** #### What is it?
- [ ] Bugfix (user facing) - [ ] Bugfix (user facing)
- [ ] Feature (user facing) - [ ] Feature (user facing)
- [ ] Translation to: <!-- Include the language here. Note if this translation is for a regional dialect. --> (user facing)
- [ ] Codebase improvement (dev facing) - [ ] Codebase improvement (dev facing)
- [ ] Meta improvement to the project (dev facing) - [ ] Meta improvement to the project (dev facing)
**Description of changes** #### Description of changes
<!-- Bullet points or free-form text --> <!-- Bullet points or free-form text -->
- Do this - Do this
- Fix that - Fix that
- Listen to music - Listen to music
**Fixes the following issues** #### Fixes the following issues
<!-- Also add any other links relevant to your change. --> <!-- Also add any other links relevant to your change. -->
-
**Any additional information** #### Any additional information
<!-- Also add any information relevant to this PR. --> <!-- Also add any information relevant to this PR. -->
**APK testing** #### APK testing
<!-- Please create a debug APK for your changes. --> <!-- Please create a debug APK for your changes, if possible. -->
debug.zip debug.zip
**Due Diligence** #### Due Diligence
- [ ] I have read the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md).
- [ ] I have read the [Contribution Guidelines](https://github.com/OxygenCobalt/Auxio/blob/dev/.github/CONTRIBUTING.md) and [Accepted additions & Requests](https://github.com/OxygenCobalt/Auxio/blob/dev/info/ADDITIONS.md). - [ ] I have read the [Accepted additions & Requests](https://github.com/OxygenCobalt/Auxio/blob/dev/info/ADDITIONS.md) document.

View file

@ -20,6 +20,7 @@ artist they are grouped up in
#### Dev/Meta: #### Dev/Meta:
- Removed 1.4.X compat - Removed 1.4.X compat
- Added new changelog document
## v2.1.0 ## v2.1.0
#### What's New: #### What's New:

View file

@ -98,8 +98,6 @@ class AudioReactor(
return return
} }
logD("$metadata")
// ReplayGain is configurable, so determine what to do based off of the mode. // ReplayGain is configurable, so determine what to do based off of the mode.
val useAlbumGain: (Gain) -> Boolean = when (settingsManager.replayGainMode) { val useAlbumGain: (Gain) -> Boolean = when (settingsManager.replayGainMode) {
ReplayGainMode.OFF -> { ReplayGainMode.OFF -> {

View file

@ -1,17 +1,13 @@
# Accepted Additions and Requests # Accepted Additions and Requests
One of the reasons I built Auxio was out of frustration with other FOSS android music players, which had too many features, frustrating UI/UX flaws, or both. Therefore any additions will have to be accepted by **me** (OxygenCobalt) before they are implemented or merged. One of the reasons I built Auxio was out of frustration with other FOSS android music players, which had too many features, frustrating UI/UX flaws, or both. Therefore any additions will have to be accepted by **me** (OxygenCobalt) before they are implemented or merged.
## Bug Fixes, Optimizations, Architecture Improvements, etc. ## Bug Fixes, Optimizations, Architecture Improvements, etc.
These will likely be accepted as long as they do not cause too much harm to the codebase. These will likely be accepted as long as they do not cause too much harm to the codebase.
## New Customizations/Options ## New Customizations/Options
While I do like adding new behavior/UI customizations, these will be looked at more closely as certain additions can cause harm to the apps UI/UX while not providing alot of benefit. These tend to be accepted however. While I do like adding new behavior/UI customizations, these will be looked at more closely as certain additions can cause harm to the apps UI/UX while not providing alot of benefit. These tend to be accepted however.
## Feature Addtions and UI Changes ## Feature Addtions and UI Changes
These arent as likely to be accepted. As I said, I do not want Auxio to become overly bloated with features that are rarely used, therefore I only tend to accept features that: These arent as likely to be accepted. As I said, I do not want Auxio to become overly bloated with features that are rarely used, therefore I only tend to accept features that:
- Benefit **my own** usage - Benefit **my own** usage
@ -22,12 +18,10 @@ This does not rule out these additions, but they are not accepted as often as ot
Feel free to fork Auxio to add your own feature set however. Feel free to fork Auxio to add your own feature set however.
#### Additions that have already been rejected (and why): #### Additions that have already been rejected (and why):
- Folder View/Grouping [#10] (Out of scope) - Folder View/Grouping [#10] (Out of scope)
- Recently added list [#18] (Out of scope) - Recently added list [#18] (Out of scope)
- Lyrics [#19] (Out of scope) - Lyrics [#19] (Out of scope)
- Tag editing [#33] (Out of scope) - Tag editing [#33] (Out of scope)
- Gapless Playback [#35] (Technical issues) - Gapless Playback [#35] (Technical issues)
- Reduce leading instrument [#45] (Technical issues, Out of scope) - Reduce leading instrument [#45] (Technical issues, Out of scope)
- Disabling track numbers [#73] (Out of scope)
- Opening music through a provider [#30] (Out of scope) - Opening music through a provider [#30] (Out of scope)

View file

@ -1,13 +1,10 @@
# Architecture # Architecture
This document is designed to provide an overview of Auxio's architecture and design decisions. It will be updated as Auxio changes. This document is designed to provide an overview of Auxio's architecture and design decisions. It will be updated as Auxio changes.
## Core Facets ## Core Facets
Auxio has a couple of core systems or concepts that should be understood when working with the codebase. Auxio has a couple of core systems or concepts that should be understood when working with the codebase.
#### Package Structure #### Package Structure
Auxio's package structure is strictly feature-oriented. For example, playback code is exclusively in the `playback` package, Auxio's package structure is strictly feature-oriented. For example, playback code is exclusively in the `playback` package,
and detail code is exclusively in the `detail` package. Sub-packages can be related to the code it contains, such as `detail.recycler` and detail code is exclusively in the `detail` package. Sub-packages can be related to the code it contains, such as `detail.recycler`
for the detail UI adapters, or they can be related to a sub-feature, like `playback.queue` for the queue UI. for the detail UI adapters, or they can be related to a sub-feature, like `playback.queue` for the queue UI.
@ -41,7 +38,6 @@ org.oxycblt.auxio # Main UIs
Each package is gone over in more detail later on. Each package is gone over in more detail later on.
#### UI Structure #### UI Structure
Auxio only has one activity, `MainActivity`. Do not try to add more activities to the codebase. Instead, a new UI Auxio only has one activity, `MainActivity`. Do not try to add more activities to the codebase. Instead, a new UI
should be added as a new `Fragment` implementation and added to one of the two navigation graphs: should be added as a new `Fragment` implementation and added to one of the two navigation graphs:
@ -74,7 +70,6 @@ the attributes directly unless absolutely necessary. Usually it's okay to apply
to duplicate layouts simply because they apply to different data objects, such as the detail UIs. to duplicate layouts simply because they apply to different data objects, such as the detail UIs.
#### Object communication #### Object communication
Auxio's codebase is mostly centered around 4 different types of code that communicates with each-other. Auxio's codebase is mostly centered around 4 different types of code that communicates with each-other.
- UIs: Fragments, RecyclerView items, and Activities are part of this class. All of them should have little data logic - UIs: Fragments, RecyclerView items, and Activities are part of this class. All of them should have little data logic
@ -91,7 +86,6 @@ Ideally, UIs should only be talking to ViewModels, ViewModels should only be tal
should only be talking to other shared objects. All objects can use the utility functions where appropriate. should only be talking to other shared objects. All objects can use the utility functions where appropriate.
#### Data objects #### Data objects
Auxio represents data in multiple ways. Auxio represents data in multiple ways.
`BaseModel` is the base class for most music and UI data in Auxio, with a single ID field meant to mark it as unique. `BaseModel` is the base class for most music and UI data in Auxio, with a single ID field meant to mark it as unique.
@ -117,7 +111,6 @@ poor UX to the user.
- For `Album` instances in particular, prefer `resolvedArtistName` over `artist.resolvedName` - For `Album` instances in particular, prefer `resolvedArtistName` over `artist.resolvedName`
#### Music Access #### Music Access
All music on a system is asynchronously loaded into the shared object `MusicStore`. Because of this, **`MusicStore` may not be available at all times**. All music on a system is asynchronously loaded into the shared object `MusicStore`. Because of this, **`MusicStore` may not be available at all times**.
- ViewModels should try to await or gracefully exit the called method if `MusicStore` is not available - ViewModels should try to await or gracefully exit the called method if `MusicStore` is not available
@ -127,7 +120,6 @@ All music on a system is asynchronously loaded into the shared object `MusicStor
If the loading status needs to be shown in a UI, `MusicViewModel` can be used to observe the current music loader response. If the loading status needs to be shown in a UI, `MusicViewModel` can be used to observe the current music loader response.
#### Playback System #### Playback System
Auxio's playback system is somewhat unorthodox, as it avoids much of the android-provided APIs in favor of a more controllable and sensible system. Auxio's playback system is somewhat unorthodox, as it avoids much of the android-provided APIs in favor of a more controllable and sensible system.
The diagram below highlights the overall structure and connections: The diagram below highlights the overall structure and connections:
@ -158,7 +150,6 @@ system events, such as when a button is pressed on a headset. It should **never*
`PlaybackViewModel` exposes the same data in a much safer fashion. `PlaybackViewModel` exposes the same data in a much safer fashion.
#### Data Integers #### Data Integers
Integer representations of data/UI elements are used heavily in Auxio, primarily for efficiency. Integer representations of data/UI elements are used heavily in Auxio, primarily for efficiency.
To prevent any strange bugs, all integer representations must be unique. A table of all current integers used are shown below: To prevent any strange bugs, all integer representations must be unique. A table of all current integers used are shown below:
@ -219,19 +210,16 @@ the documentation for those datatypes.
## Package-by-package rundown ## Package-by-package rundown
#### `org.oxycblt.auxio` #### `org.oxycblt.auxio`
This is the root package and contains the application instance and the landing UIs. This should be kept sparse with most other code being placed This is the root package and contains the application instance and the landing UIs. This should be kept sparse with most other code being placed
into a package. into a package.
#### `.accent` #### `.accent`
This package is responsible for Auxio's color schemes, internally known as accents due to legacy code. This package is responsible for Auxio's color schemes, internally known as accents due to legacy code.
It contains an object that represents the attributes of an accent, but this should be avoided in favor of It contains an object that represents the attributes of an accent, but this should be avoided in favor of
resolving color attributes directly, such as `colorPrimary`. This package also contains the UIs for picking resolving color attributes directly, such as `colorPrimary`. This package also contains the UIs for picking
an accent. an accent.
#### `.coil` #### `.coil`
[Coil](https://github.com/coil-kt/coil) is the image loader used by Auxio. All image loading is done through these four functions/binding adapters: [Coil](https://github.com/coil-kt/coil) is the image loader used by Auxio. All image loading is done through these four functions/binding adapters:
- `app:albumArt`: Binding Adapter that will load the cover art for a song or album - `app:albumArt`: Binding Adapter that will load the cover art for a song or album
@ -245,7 +233,6 @@ Internally, multiple fetchers are provided to transform `Music` instances into i
the necessary methods for loading album artwork and creating the mosaics shown in artist/genre images. the necessary methods for loading album artwork and creating the mosaics shown in artist/genre images.
#### `.detail` #### `.detail`
Contains all the detail UIs for some data types in Auxio. All detail user interfaces share the same base layout (A Single RecyclerView) and Contains all the detail UIs for some data types in Auxio. All detail user interfaces share the same base layout (A Single RecyclerView) and
only change the adapter/data being used. The adapters display both the header with information and the child items of the item itself, usually only change the adapter/data being used. The adapters display both the header with information and the child items of the item itself, usually
with a data list similar to this: with a data list similar to this:
@ -258,7 +245,6 @@ Each adapter instance also handles the highlighting of the currently playing ite
navigation [Such as when a user presses "Go to artist"] navigation [Such as when a user presses "Go to artist"]
#### `.excluded` #### `.excluded`
This package is responsible for the excluded directory system. It contains the database of excluded directories and the dialog that appears when This package is responsible for the excluded directory system. It contains the database of excluded directories and the dialog that appears when
editing them. editing them.
@ -266,7 +252,6 @@ editing them.
compatibility with previous versions of Auxio. compatibility with previous versions of Auxio.
#### `.home` #### `.home`
This package contains the components for the "home" UI in Auxio, or the UI that the user first sees when they open the app. This package contains the components for the "home" UI in Auxio, or the UI that the user first sees when they open the app.
- The base package contains the top-level components that manage the FloatingActionButton, AppBar, and ViewPager instances. - The base package contains the top-level components that manage the FloatingActionButton, AppBar, and ViewPager instances.
@ -275,12 +260,10 @@ This package contains the components for the "home" UI in Auxio, or the UI that
- The `tabs` package contains the data representation of an individual library tab and the UIs for editing them. - The `tabs` package contains the data representation of an individual library tab and the UIs for editing them.
#### `.music` #### `.music`
This package contains all `BaseModel` implementations and the music loading implementation. This also includes `Header`/`ActionHeader`, as those This package contains all `BaseModel` implementations and the music loading implementation. This also includes `Header`/`ActionHeader`, as those
data objects have to inherit `BaseModel` so that they can be placed alongside `Music` instances in `RecyclerView` instances. data objects have to inherit `BaseModel` so that they can be placed alongside `Music` instances in `RecyclerView` instances.
#### `.playback` #### `.playback`
This module not only contains the playback system described above, but also multiple other components: This module not only contains the playback system described above, but also multiple other components:
- `queue` contains the Queue UI and it's fancy item transitions - `queue` contains the Queue UI and it's fancy item transitions
@ -291,19 +274,16 @@ The most important part of this module is `PlaybackLayout`, which is a custom `V
slide up into the full playback view. `MainFragment` controls this `ViewGroup`. slide up into the full playback view. `MainFragment` controls this `ViewGroup`.
#### `.search` #### `.search`
Package for Auxio's search functionality, `SearchViewHolder` handles the data results and filtering while `SearchFragment`/`SearchAdapter` handles the Package for Auxio's search functionality, `SearchViewHolder` handles the data results and filtering while `SearchFragment`/`SearchAdapter` handles the
display of the results and user input. display of the results and user input.
#### `.settings` #### `.settings`
The settings system is primarily based off of `SettingsManager`, a wrapper around `SharedPreferences`. This allows settings to be read/written in a The settings system is primarily based off of `SettingsManager`, a wrapper around `SharedPreferences`. This allows settings to be read/written in a
much simpler/safer manner and without a context being needed. The Settings UI is largely contained in `SettingsListFragment`, while the `pref` much simpler/safer manner and without a context being needed. The Settings UI is largely contained in `SettingsListFragment`, while the `pref`
sub-package contains `IntListPreference`, which allows Auxio's integer representations to be used with the preference UI. The about dialog sub-package contains `IntListPreference`, which allows Auxio's integer representations to be used with the preference UI. The about dialog
also resides in this package. also resides in this package.
#### `.ui` #### `.ui`
Shared views and view configuration models. This contains: Shared views and view configuration models. This contains:
- Customized views such as `EdgeAppBarLayout` and `EdgeRecyclerView`, which add some extra functionality not provided by default - Customized views such as `EdgeAppBarLayout` and `EdgeRecyclerView`, which add some extra functionality not provided by default
@ -312,11 +292,9 @@ Shared views and view configuration models. This contains:
- `memberBinding` and `MemberBinder`, which allows for ViewBindings to be used as a member variable without memory leaks or nullability issues. - `memberBinding` and `MemberBinder`, which allows for ViewBindings to be used as a member variable without memory leaks or nullability issues.
#### `.util` #### `.util`
Shared utilities. This is primarily for QoL when developing Auxio. Documentation is provided on each method. Shared utilities. This is primarily for QoL when developing Auxio. Documentation is provided on each method.
#### `.widgets` #### `.widgets`
This package contains Auxio's AppWidget implementation, which deviates from other AppWidget implementations by packing multiple This package contains Auxio's AppWidget implementation, which deviates from other AppWidget implementations by packing multiple
different layouts into a single widget and then switching between them depending on the widget size. different layouts into a single widget and then switching between them depending on the widget size.

View file

@ -1,42 +1,33 @@
# Auxio - Frequently Asked Questions # Auxio - Frequently Asked Questions
This FAQ will be continually updated as new changes and updates are made to Auxio. This FAQ will be continually updated as new changes and updates are made to Auxio.
#### Where can I download Auxio? #### Where can I download Auxio?
Auxio is available on the [F-Droid](https://f-droid.org/en/packages/org.oxycblt.auxio/) repository. Auxio is available on the [F-Droid](https://f-droid.org/en/packages/org.oxycblt.auxio/) repository.
Auxio is not and will never be on the play store due to it being a proprietary and draconian platform. Auxio is not and will never be on the play store due to it being a proprietary and draconian platform.
#### Why ExoPlayer? #### Why ExoPlayer?
ExoPlayer is far more flexible than the native MediaPlayer API, which allows consistent behavior across devices & OEMs and the ExoPlayer is far more flexible than the native MediaPlayer API, which allows consistent behavior across devices & OEMs and the
ability to be extended to music sources outside of local files. You can read more about the benefits (and drawbacks) of ExoPlayer ability to be extended to music sources outside of local files. You can read more about the benefits (and drawbacks) of ExoPlayer
[Here](https://exoplayer.dev/pros-and-cons.html). [Here](https://exoplayer.dev/pros-and-cons.html).
#### What formats does Auxio support? #### What formats does Auxio support?
As per the [Supported ExoPlayer Formats](https://exoplayer.dev/supported-formats.html), Auxio supports As per the [Supported ExoPlayer Formats](https://exoplayer.dev/supported-formats.html), Auxio supports
MP4, MP3, MKA, OGG, WAV, MPEG, AAC on all versions of Android. Auxio also supports FLAC on all versions MP4, MP3, MKA, OGG, WAV, MPEG, AAC on all versions of Android. Auxio also supports FLAC on all versions
of Android through the use of the ExoPlayer FLAC extension. of Android through the use of the ExoPlayer FLAC extension.
#### Auxio doesn't load my music correctly! #### Auxio doesn't load my music correctly!
This is probably caused by one of two reasons: This is probably caused by one of two reasons:
1. If other players like Phonograph, Retro Music, or Music Player GO load it correctly, then Auxio has a bug and it should be [reported](https://github.com/OxygenCobalt/Auxio/issues). 1. If other players like Phonograph, Retro Music, or Music Player GO load it correctly, then Auxio has a bug and it should be [reported](https://github.com/OxygenCobalt/Auxio/issues).
2. If the aforementioned players don't work, but players like Vanilla Music and VLC do, then it's a problem with the Media APIs that Auxio relies on. There is nothing I can do about it. 2. If the aforementioned players don't work, but players like Vanilla Music and VLC do, then it's a problem with the Media APIs that Auxio relies on. There is nothing I can do about it.
#### I have a large library and Auxio takes really long to load it! #### I have a large library and Auxio takes really long to load it!
This is expected since reading from the audio database takes awhile, especially with libraries containing 10k songs or more. This is expected since reading from the audio database takes awhile, especially with libraries containing 10k songs or more.
#### Auxio does not detect new music! #### Auxio does not detect new music!
This is a current limitation with the music loader. To remedy this, go to Settings -> Reload music whenever new songs are added. This is a current limitation with the music loader. To remedy this, go to Settings -> Reload music whenever new songs are added.
I hope to make the app rescan music on the fly eventually. I hope to make the app rescan music on the fly eventually.
#### ReplayGain isn't working on my music! #### ReplayGain isn't working on my music!
This is for a couple reason: This is for a couple reason:
- Auxio doesn't extract ReplayGain tags for your format. - Auxio doesn't extract ReplayGain tags for your format.
- Auxio doesn't recognize your ReplayGain tags. This is usually because of a non-standard tag like ID3v2's `RVAD` or - Auxio doesn't recognize your ReplayGain tags. This is usually because of a non-standard tag like ID3v2's `RVAD` or
@ -45,25 +36,20 @@ an unrecognized name.
I do plan to add it eventually. I do plan to add it eventually.
#### What is dynamic ReplayGain? #### What is dynamic ReplayGain?
Dynamic ReplayGain is a quirk setting based off the FooBar2000 plugin that dynamically switches from track gain to album Dynamic ReplayGain is a quirk setting based off the FooBar2000 plugin that dynamically switches from track gain to album
gain depending on if the current playback is from an album or not. gain depending on if the current playback is from an album or not.
#### Why are accents lighter/less saturated in dark mode? #### Why are accents lighter/less saturated in dark mode?
As per the [Material Design Guidelines](https://material.io/design/color/dark-theme.html), accents should be less As per the [Material Design Guidelines](https://material.io/design/color/dark-theme.html), accents should be less
saturated on dark mode to reduce eye strain and to increase visual cohesion. saturated on dark mode to reduce eye strain and to increase visual cohesion.
#### Does this app keep/send any information about myself or my device? #### Does this app keep/send any information about myself or my device?
Auxio does not log any information about the device or its owner, and it has no internet access to send that information off in the first place. Auxio does not log any information about the device or its owner, and it has no internet access to send that information off in the first place.
#### How can I contribute/report issues? #### 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), 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) however. please note the [Contribution Guidelines](../.github/CONTRIBUTING.md) and [Accepted Additions](ADDITIONS.md) however.
#### Can I translate Auxio to my native language? #### Can I translate Auxio to my native language?
See the [Translations Megathread](https://github.com/OxygenCobalt/Auxio/issues/3) for guidance on how to create translations and submit them to the project.
See the [Translations](https://github.com/OxygenCobalt/Auxio/issues/3) issue for guidance on how to create translations and submit them to the project.
Any contributions are appreciated and tend to always be accepted. Any contributions are appreciated and tend to always be accepted.

View file

@ -1,5 +1,4 @@
# Licenses # Licenses
Auxio uses a number of third-party libraries, which are listed below with their licenses: Auxio uses a number of third-party libraries, which are listed below with their licenses:
| Library Name | Author(s) | Purpose | License | | Library Name | Author(s) | Purpose | License |