Skip to content

Commit

Permalink
Merge pull request #545 from OxygenCobalt/dev
Browse files Browse the repository at this point in the history
Version 3.2.0
  • Loading branch information
OxygenCobalt authored Aug 18, 2023
2 parents c348f1e + d0b34a1 commit 5cd4619
Show file tree
Hide file tree
Showing 276 changed files with 8,475 additions and 4,205 deletions.
6 changes: 3 additions & 3 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ If you have knowledge of Android/Kotlin, feel free to to contribute to the proje
- 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.
- Do not bring non-free software into the project, such as Binary Blobs.
- 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.
- Stick to [F-Droid Inclusion Guidelines](https://f-droid.org/wiki/page/Inclusion_Policy)
- Make sure you stick to Auxio's styling, which should be auto-formatted on every build.
- Please ***FULLY TEST*** your changes before creating a PR. Untested code will not be merged.
- Java code will **NOT** be accepted. Kotlin only.
- Only **Kotlin** will be accepted, except for the case that a UI component must be vendored in the project.
- Keep your code up the date with the upstream and continue to maintain it after you create the PR. This makes it less of a hassle to merge.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 3.2.0

#### What's New
- Item and sort menus have been refreshed with a cleaner look
- Added ability to sort playlists
- Added option to play song by itself in library/item details
- Added error details when music loading fails

#### What's Improved
- Made "Add to Playlist" action more prominent in selection toolbar
- Fixed notification album covers not updating after changing the cover
aspect ratio setting

#### What's Fixed
- Playlist detail view now respects playback settings

## 3.1.4

#### What's Fixed
Expand Down
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<h1 align="center"><b>Auxio</b></h1>
<h4 align="center">A simple, rational music player for android.</h4>
<p align="center">
<a href="https://github.com/oxygencobalt/Auxio/releases/tag/v3.1.4">
<img alt="Latest Version" src="https://img.shields.io/static/v1?label=tag&message=v3.1.4&color=64B5F6&style=flat">
<a href="https://github.com/oxygencobalt/Auxio/releases/tag/v3.2.0">
<img alt="Latest Version" src="https://img.shields.io/static/v1?label=tag&message=v3.2.0&color=64B5F6&style=flat">
</a>
<a href="https://github.com/oxygencobalt/Auxio/releases/">
<img alt="Releases" src="https://img.shields.io/github/downloads/OxygenCobalt/Auxio/total.svg?color=4B95DE&style=flat">
Expand All @@ -21,7 +21,7 @@

## About

Auxio is a local music player with a fast, reliable UI/UX without the many useless features present in other music players. Built off of [ExoPlayer](https://exoplayer.dev/), Auxio has superior library support and listening quality compared to other apps that use outdated android functionality. In short, **It plays music.**
Auxio is a local music player with a fast, reliable UI/UX without the many useless features present in other music players. Built off of modern media playback libraries, Auxio has superior library support and listening quality compared to other apps that use outdated android functionality. In short, **It plays music.**

I primarily built Auxio for myself, but you can use it too, I guess.

Expand All @@ -42,7 +42,7 @@ I primarily built Auxio for myself, but you can use it too, I guess.

## Features

- [ExoPlayer](https://exoplayer.dev/)-based playback
- Playback based on [Media3 ExoPlayer](https://developer.android.com/guide/topics/media/exoplayer)
- Snappy UI derived from the latest Material Design guidelines
- Opinionated UX that prioritizes ease of use over edge cases
- Customizable behavior
Expand All @@ -69,12 +69,11 @@ precise/original dates, sort tags, and more

## Building

Auxio relies on a custom version of ExoPlayer that enables some extra features. This adds some caveats to
the build process:
Auxio relies on a custom version of Media3 that enables some extra features. This adds some caveats to the build process:
1. `cmake` and `ninja-build` must be installed before building the project.
2. The project uses submodules, so when cloning initially, use `git clone --recurse-submodules` to properly
download the external code.
3. You are **unable** to build this project on windows, as the custom ExoPlayer build runs shell scripts that
3. You are **unable** to build this project on windows, as the custom Media3 build runs shell scripts that
will only work on unix-based systems.

## Contributing
Expand Down
21 changes: 11 additions & 10 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ plugins {
id "kotlin-parcelize"
id "dagger.hilt.android.plugin"
id "kotlin-kapt"
id 'org.jetbrains.kotlin.android'
id "com.google.devtools.ksp"
id "org.jetbrains.kotlin.android"
}

android {
Expand All @@ -20,8 +21,8 @@ android {

defaultConfig {
applicationId namespace
versionName "3.1.4"
versionCode 34
versionName "3.2.0"
versionCode 35

minSdk 24
targetSdk 34
Expand Down Expand Up @@ -77,7 +78,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

def coroutines_version = '1.7.1'
def coroutines_version = '1.7.2'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:$coroutines_version"

Expand All @@ -87,7 +88,7 @@ dependencies {
implementation "androidx.core:core-ktx:1.10.1"
implementation "androidx.appcompat:appcompat:1.6.1"
implementation "androidx.activity:activity-ktx:1.7.2"
implementation "androidx.fragment:fragment-ktx:1.6.0"
implementation "androidx.fragment:fragment-ktx:1.6.1"

// Components
// Deliberately kept on 1.2.1 to prevent a bug where the queue sheet will not collapse on
Expand All @@ -113,12 +114,12 @@ dependencies {
implementation "androidx.media:media:1.6.0"

// Preferences
implementation "androidx.preference:preference-ktx:1.2.0"
implementation "androidx.preference:preference-ktx:1.2.1"

// Database
def room_version = '2.6.0-alpha01'
def room_version = '2.6.0-alpha03'
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
ksp "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-ktx:$room_version"

// --- THIRD PARTY ---
Expand All @@ -133,7 +134,7 @@ dependencies {
// Material
// TODO: Exactly figure out the conditions that the 1.7.0 ripple bug occurred so you can just
// PR a fix.
implementation "com.google.android.material:material:1.10.0-alpha04"
implementation "com.google.android.material:material:1.10.0-alpha06"

// Dependency Injection
implementation "com.google.dagger:dagger:$hilt_version"
Expand All @@ -142,7 +143,7 @@ dependencies {
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"

// Testing
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.11'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
testImplementation "junit:junit:4.13.2"
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1737,16 +1737,10 @@ private void setWindowInsetsListener(@NonNull View child) {
final boolean shouldHandleGestureInsets =
VERSION.SDK_INT >= VERSION_CODES.Q && !isGestureInsetBottomIgnored() && !peekHeightAuto;

// If were not handling insets at all, don't apply the listener.
if (!paddingBottomSystemWindowInsets
&& !paddingLeftSystemWindowInsets
&& !paddingRightSystemWindowInsets
&& !marginLeftSystemWindowInsets
&& !marginRightSystemWindowInsets
&& !marginTopSystemWindowInsets
&& !shouldHandleGestureInsets) {
return;
}
// MODIFICATION: Fix awful assumption that clients handling edge-to-edge by themselves
// don't need peek height adjustments (Despite the fact that they still likely padding
// the view, just without clipping anything)

ViewUtils.doOnApplyWindowInsets(
child,
new ViewUtils.OnApplyWindowInsetsListener() {
Expand All @@ -1758,7 +1752,16 @@ public WindowInsetsCompat onApplyWindowInsets(
Insets mandatoryGestureInsets =
insets.getInsets(WindowInsetsCompat.Type.mandatorySystemGestures());

insetTop = systemBarInsets.top;
// MODIFICATION: Fix second order change of edge-to-edge fix where dialogs will not
// use the nice-looking inset animation and instead blindly shift themselves downwards.
// insetTop = systemBarInsets.top;

// MODIFICATION: Fix awful assumption that clients handling edge-to-edge by themselves
// don't need peek height adjustments (Despite the fact that they still likely padding
// the view, just without clipping anything)
// Intentionally uses getSystemWindowInsetBottom to apply padding properly when
// adjustResize is used as the windowSoftInputMode.
insetBottom = insets.getSystemWindowInsetBottom();

boolean isRtl = ViewUtils.isLayoutRtl(view);

Expand All @@ -1767,9 +1770,6 @@ public WindowInsetsCompat onApplyWindowInsets(
int rightPadding = view.getPaddingRight();

if (paddingBottomSystemWindowInsets) {
// Intentionally uses getSystemWindowInsetBottom to apply padding properly when
// adjustResize is used as the windowSoftInputMode.
insetBottom = insets.getSystemWindowInsetBottom();
bottomPadding = initialPadding.bottom + insetBottom;
}

Expand Down Expand Up @@ -1810,11 +1810,10 @@ public WindowInsetsCompat onApplyWindowInsets(
gestureInsetBottom = mandatoryGestureInsets.bottom;
}

// Don't update the peek height to be above the navigation bar or gestures if these
// flags are off. It means the client is already handling it.
if (paddingBottomSystemWindowInsets || shouldHandleGestureInsets) {
updatePeekHeight(/* animate= */ false);
}
// MODIFICATION: Fix awful assumption that clients handling edge-to-edge by themselves
// don't need peek height adjustments (Despite the fact that they still likely padding
// the view, just without clipping anything)
updatePeekHeight(/* animate= */ false);
return insets;
}
});
Expand Down
Loading

0 comments on commit 5cd4619

Please sign in to comment.