md: update project information
Update the README to update the current state of Auxio, uodate the ADDITIONS document to reflect which features have been rejected, and remove the black mode question from the FAQ.
This commit is contained in:
parent
e25c91b49c
commit
d82952d88d
8 changed files with 46 additions and 20 deletions
|
@ -19,6 +19,8 @@ Auxio is a local music player with a fast, reliable UI/UX without the many usele
|
|||
|
||||
I primarily built Auxio for myself, but you can use it too, I guess.
|
||||
|
||||
#### Note: Auxio is in a point that I am largely satisfied with. The app is still maintained, but feature additions will be slow.
|
||||
|
||||
## Screenshots
|
||||
|
||||
<p align="center">
|
||||
|
@ -55,10 +57,6 @@ I primarily built Auxio for myself, but you can use it too, I guess.
|
|||
- Playlists
|
||||
- Liked songs
|
||||
- More notification actions
|
||||
- Swipe-between-tracks function
|
||||
- Better edge-to-edge support
|
||||
- More customization options
|
||||
- Other things, presumably
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ import org.oxycblt.auxio.ui.newMenu
|
|||
/**
|
||||
* A [Fragment] that shows a custom list of [Genre], [Artist], or [Album] data. Also allows for
|
||||
* search functionality.
|
||||
* TODO: Add fast scrolling
|
||||
* @author OxygenCobalt
|
||||
*/
|
||||
class LibraryFragment : Fragment() {
|
||||
|
|
|
@ -236,17 +236,44 @@ class MusicLoader(private val context: Context) {
|
|||
/*
|
||||
* Okay, I'm going to go on a bit of a tangent here because this bit of code infuriates me.
|
||||
*
|
||||
* In an ideal world I should just be able to write MediaStore.Media.Audio.GENRE
|
||||
* in the original song projection and then have it fetch the genre from the database, but
|
||||
* no, why would ANYONE do that? Instead, I have to manually iterate through each genre, get
|
||||
* A LIST OF SONGS FROM THEM, and then waste CPU cycles REPEATEDLY ITERATING through the
|
||||
* songs list to LINK EACH SONG WITH THEIR GENRE. This is the bottleneck in my loader,
|
||||
* without this code the load times drop from ~130ms to ~60ms, but of course I have to do
|
||||
* this if I want an sensible genre system. Why is it this way? Nobody knows! Now this
|
||||
* quirk is immortalized and has to be replicated in all future iterations of this API! Yay!
|
||||
* In any reasonable platform, you think that you could just query a media database for the
|
||||
* "genre" field and get the genre for a song, right? But not with android! No. Thats too
|
||||
* normal for this dysfunctional SDK that was dropped on it's head as a baby. Instead, we
|
||||
* have to iterate through EACH GENRE, QUERY THE MEDIA DATABASE FOR THE SONGS OF THAT GENRE,
|
||||
* AND THEN ITERATE THROUGH THAT LIST TO LINK EVERY SONG WITH THE GENRE. This O(mom im scared)
|
||||
* algorithm single-handedly DOUBLES the amount of time it takes Auxio to load music, but
|
||||
* apparently this is the only way you can have a remotely sensible genre system on this
|
||||
* busted OS. Why is it this way? Nobody knows! Now this quirk is immortalized and has to
|
||||
* be replicated in all future versions of this API, because god forbid you break some
|
||||
* app that's probably older than some of the people reading this by now.
|
||||
*
|
||||
* Another fun fact, did you know that you can only get the date from ID3v2.3 MPEG files?
|
||||
* I sure didn't, until I decided to update my music collection to ID3v2.4 and Xiph only
|
||||
* to see that android apparently has a brain aneurysm the moment it sees a dreaded TDRC
|
||||
* or DATE tag. This bug is similarly baked into the platform and hasnt been fixed, even
|
||||
* in android TWELVE. ID3v2.4 has existed for TWENTY-ONE YEARS. IT CAN DRINK NOW. At least
|
||||
* you could replace your ancient dinosaur parser with Taglib or something, but again,
|
||||
* google cant bear even slighting the gods of backwards compat.
|
||||
*
|
||||
* Is there anything we can do about this system? No. Google's issue tracker, in classic
|
||||
* google fashion, requires a google account to even view. Even if I were to set aside my
|
||||
* Torvalds-esqe convictions and make an account, MediaStore is such an obscure part of the
|
||||
* platform that it basically receives no attention compared to the advertising APIs or the
|
||||
* nineteenth UI rework, and its not like the many music player developers are going to band
|
||||
* together to beg google to take this API behind the woodshed and shoot it. So instead,
|
||||
* players like VLC and Vanilla just hack their own pidgin version of MediaStore off of
|
||||
* their own media parsers, but even this becomes increasingly impossible as google
|
||||
* continues to kill the filesystem ala iOS. In the future MediaStore could be the only
|
||||
* system we have, which is also the day greenland melts and birthdays stop happening
|
||||
* forever. I'm pretty sure that at this point nothing is going to happen, google will
|
||||
* continue to neglect MediaStore, and all the people who just want to listen to their music
|
||||
* collections on their phone will continue to get screwed. But hey, at least some dev at
|
||||
* google got a cushy managerial position where they can tweet about politics all day for
|
||||
* shipping the brand new androidx.FooBarBlasterView, yay!
|
||||
*
|
||||
* I hate this platform so much.
|
||||
*/
|
||||
|
||||
genres.forEach { genre ->
|
||||
val songCursor = resolver.query(
|
||||
Genres.Members.getContentUri("external", genre.id),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package org.oxycblt.auxio.songs
|
||||
package org.oxycblt.auxio.recycler
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
|
@ -29,7 +29,7 @@
|
|||
app:layout_constraintTop_toBottomOf="@+id/library_toolbar"
|
||||
tools:listitem="@layout/item_artist" />
|
||||
|
||||
<org.oxycblt.auxio.songs.FastScrollView
|
||||
<org.oxycblt.auxio.recycler.FastScrollView
|
||||
android:id="@+id/library_fast_scroll"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
app:layout_constraintTop_toBottomOf="@+id/song_toolbar"
|
||||
tools:listitem="@layout/item_song" />
|
||||
|
||||
<org.oxycblt.auxio.songs.FastScrollView
|
||||
<org.oxycblt.auxio.recycler.FastScrollView
|
||||
android:id="@+id/song_fast_scroll"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -20,3 +20,9 @@ These arent as likely to be accepted. As I said, I do not want Auxio to become o
|
|||
This does not rule out these additions, but they are not accepted as often as others. I will also hold off adding features until I'm able to implement them without disruption or strange behaviors.
|
||||
|
||||
Feel free to fork Auxio to add your own feature set however.
|
||||
|
||||
#### Additions that have already been rejected:
|
||||
- Lyrics [#19]
|
||||
- Recently added list[#18]
|
||||
- Folder View/Grouping [#10]
|
||||
- Replaygain [#7]
|
||||
|
|
|
@ -24,10 +24,6 @@ Open an [Issue](https://github.com/OxygenCobalt/Auxio/issues) or a [Pull Request
|
|||
|
||||
ExoPlayer is far more flexible than the native MediaPlayer API, which allows Auxio to have consistent behavior across devices & OEMs, along with allowing Auxio 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).
|
||||
|
||||
## 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 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 plan to add them however.
|
||||
|
|
Loading…
Reference in a new issue