diff --git a/FAQ.md b/.github/CONTRIBUTING.md
similarity index 100%
rename from FAQ.md
rename to .github/CONTRIBUTING.md
diff --git a/LICENSES.md b/LICENSES.md
index e69de29bb..0f6588495 100644
--- a/LICENSES.md
+++ b/LICENSES.md
@@ -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 |
\ No newline at end of file
diff --git a/README.md b/README.md
index f28273a5c..c28b98a03 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,75 @@
-# Auxio
+

+Auxio
+A sensible and customizable music player for android.
+
+
+
+
+
+
+
+
+
+
-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
+
+[
](info/shot_library_port.png)
+[
](info/shot_playback_port.png)
+[
](info/shot_songs_port.png)
+[
](info/shot_search_port.png)
+[
](info/shot_album_port.png)
+[
](info/shot_artist_port.png)
+[
](info/shot_queue_port.png)
+[
](info/shot_notif.png)
+[
](info/shot_settings_port.png)
+[
](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
+
+[](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.
\ No newline at end of file
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
index a143690fc..b75766964 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
@@ -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()
diff --git a/app/src/main/java/org/oxycblt/auxio/settings/ui/AboutDialog.kt b/app/src/main/java/org/oxycblt/auxio/settings/ui/AboutDialog.kt
index f10a45e83..9fb6a8d8a 100644
--- a/app/src/main/java/org/oxycblt/auxio/settings/ui/AboutDialog.kt
+++ b/app/src/main/java/org/oxycblt/auxio/settings/ui/AboutDialog.kt
@@ -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)) {
diff --git a/app/src/main/java/org/oxycblt/auxio/ui/EdgeUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/EdgeUtils.kt
index 247b01975..cb3975950 100644
--- a/app/src/main/java/org/oxycblt/auxio/ui/EdgeUtils.kt
+++ b/app/src/main/java/org/oxycblt/auxio/ui/EdgeUtils.kt
@@ -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 {
diff --git a/app/src/main/res/values-night-v27/styles.xml b/app/src/main/res/values-night-v27/styles.xml
index 2f1d4ebff..a842e8fcc 100644
--- a/app/src/main/res/values-night-v27/styles.xml
+++ b/app/src/main/res/values-night-v27/styles.xml
@@ -26,4 +26,12 @@
- @color/control_color
- @font/inter_black
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml
index 70d592729..3cf0c4b40 100644
--- a/app/src/main/res/values-v27/styles.xml
+++ b/app/src/main/res/values-v27/styles.xml
@@ -26,4 +26,12 @@
- @color/control_color
- @font/inter_black
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/do_not_translate.xml b/app/src/main/res/values/do_not_translate.xml
index f8724e5e5..2bdd848ee 100644
--- a/app/src/main/res/values/do_not_translate.xml
+++ b/app/src/main/res/values/do_not_translate.xml
@@ -1,4 +1,10 @@
- OxygenCobalt
+ OxygenCobalt
+
+
+ %1$s / %2$s
+ %1$s / %2$s / %3$s
+ %1$s, %2$s
+ <b>%1$s</b>: %2$s
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2e8fbe8f9..20d861a66 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -156,11 +156,7 @@
Neutral
- %1$s / %2$s
- %1$s / %2$s / %3$s
- %1$s, %2$s
Next From: %s
- <b>%1$s</b>: %2$s
Songs Loaded: %s
Created by %s
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 3e7de7282..9fe5d61dc 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -172,10 +172,10 @@
-
\ No newline at end of file
diff --git a/assets/ic_auxio.png b/assets/ic_auxio.png
new file mode 100644
index 000000000..ee0348a4e
Binary files /dev/null and b/assets/ic_auxio.png differ
diff --git a/assets/shot_album_alt.png b/assets/shot_album_alt.png
new file mode 100755
index 000000000..32c7eb640
Binary files /dev/null and b/assets/shot_album_alt.png differ
diff --git a/assets/shot_album_port.png b/assets/shot_album_port.png
new file mode 100755
index 000000000..5796cd003
Binary files /dev/null and b/assets/shot_album_port.png differ
diff --git a/assets/shot_artist_port.png b/assets/shot_artist_port.png
new file mode 100755
index 000000000..38a5dca35
Binary files /dev/null and b/assets/shot_artist_port.png differ
diff --git a/assets/shot_library_port.png b/assets/shot_library_port.png
new file mode 100755
index 000000000..d60df5500
Binary files /dev/null and b/assets/shot_library_port.png differ
diff --git a/assets/shot_notif.png b/assets/shot_notif.png
new file mode 100755
index 000000000..7401c327e
Binary files /dev/null and b/assets/shot_notif.png differ
diff --git a/assets/shot_playback_port.png b/assets/shot_playback_port.png
new file mode 100755
index 000000000..a0305a6f7
Binary files /dev/null and b/assets/shot_playback_port.png differ
diff --git a/assets/shot_queue_port.png b/assets/shot_queue_port.png
new file mode 100755
index 000000000..8b11be96a
Binary files /dev/null and b/assets/shot_queue_port.png differ
diff --git a/assets/shot_search_port.png b/assets/shot_search_port.png
new file mode 100755
index 000000000..464ad45b5
Binary files /dev/null and b/assets/shot_search_port.png differ
diff --git a/assets/shot_settings_port.png b/assets/shot_settings_port.png
new file mode 100755
index 000000000..26dc334dc
Binary files /dev/null and b/assets/shot_settings_port.png differ
diff --git a/assets/shot_songs_port.png b/assets/shot_songs_port.png
new file mode 100755
index 000000000..6d2f0150e
Binary files /dev/null and b/assets/shot_songs_port.png differ
diff --git a/info/ADDITIONS.md b/info/ADDITIONS.md
new file mode 100644
index 000000000..7c3aa3099
--- /dev/null
+++ b/info/ADDITIONS.md
@@ -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.**
diff --git a/info/FAQ.md b/info/FAQ.md
new file mode 100644
index 000000000..7d59a504e
--- /dev/null
+++ b/info/FAQ.md
@@ -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.
\ No newline at end of file
diff --git a/info/FORMATS.md b/info/FORMATS.md
new file mode 100644
index 000000000..7b7b784ce
--- /dev/null
+++ b/info/FORMATS.md
@@ -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) |
diff --git a/info/LICENSES.md b/info/LICENSES.md
new file mode 100644
index 000000000..0f6588495
--- /dev/null
+++ b/info/LICENSES.md
@@ -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 |
\ No newline at end of file
diff --git a/readme/Screenshot_20201218-133806.png b/readme/Screenshot_20201218-133806.png
new file mode 100755
index 000000000..7401c327e
Binary files /dev/null and b/readme/Screenshot_20201218-133806.png differ
diff --git a/readme/shot_album_land.png b/readme/shot_album_land.png
new file mode 100755
index 000000000..9e352a2e5
Binary files /dev/null and b/readme/shot_album_land.png differ
diff --git a/readme/shot_album_portait.png b/readme/shot_album_portait.png
new file mode 100755
index 000000000..5796cd003
Binary files /dev/null and b/readme/shot_album_portait.png differ
diff --git a/readme/shot_artist_land.png b/readme/shot_artist_land.png
new file mode 100755
index 000000000..ca7d2eefe
Binary files /dev/null and b/readme/shot_artist_land.png differ
diff --git a/readme/shot_artist_portrait.png b/readme/shot_artist_portrait.png
new file mode 100755
index 000000000..192e06ee3
Binary files /dev/null and b/readme/shot_artist_portrait.png differ
diff --git a/readme/shot_lib_port.png b/readme/shot_lib_port.png
new file mode 100755
index 000000000..d60df5500
Binary files /dev/null and b/readme/shot_lib_port.png differ
diff --git a/readme/shot_lib_portait.png b/readme/shot_lib_portait.png
new file mode 100755
index 000000000..d60df5500
Binary files /dev/null and b/readme/shot_lib_portait.png differ
diff --git a/readme/shot_notif_alt.png b/readme/shot_notif_alt.png
new file mode 100755
index 000000000..e715bf15a
Binary files /dev/null and b/readme/shot_notif_alt.png differ
diff --git a/readme/shot_playback_land.png b/readme/shot_playback_land.png
new file mode 100755
index 000000000..6cd82377b
Binary files /dev/null and b/readme/shot_playback_land.png differ
diff --git a/readme/shot_playback_portrait.png b/readme/shot_playback_portrait.png
new file mode 100755
index 000000000..a0305a6f7
Binary files /dev/null and b/readme/shot_playback_portrait.png differ
diff --git a/readme/shot_queue_portrait.png b/readme/shot_queue_portrait.png
new file mode 100755
index 000000000..b5cda3349
Binary files /dev/null and b/readme/shot_queue_portrait.png differ
diff --git a/readme/shot_search_port b/readme/shot_search_port
new file mode 100755
index 000000000..464ad45b5
Binary files /dev/null and b/readme/shot_search_port differ
diff --git a/readme/shot_search_portrait b/readme/shot_search_portrait
new file mode 100755
index 000000000..464ad45b5
Binary files /dev/null and b/readme/shot_search_portrait differ
diff --git a/readme/shot_settings_portrait.png b/readme/shot_settings_portrait.png
new file mode 100755
index 000000000..f29a94dec
Binary files /dev/null and b/readme/shot_settings_portrait.png differ
diff --git a/readme/shot_songs_portrait.png b/readme/shot_songs_portrait.png
new file mode 100755
index 000000000..6d2f0150e
Binary files /dev/null and b/readme/shot_songs_portrait.png differ