Git Product home page Git Product logo

soulsearching's Introduction

Soul Searching

Soul Searching is an offline music application for Android 8 and above.

The application is KMP ready and a Desktop version of it is currently being worked on.

Functionalities:

I. General look:

Soul Searching gives you multiple options regarding the color theme of the application.

You can have a theme that depends on your system settings or the current music cover.

II. Music related functionnalities:

  • Listen all the songs on your device

  • See lyrics of songs

  • Multiple playing modes

  • Modify songs, albums and artists on app and on the device

  • Create and manage playlists

  • Add an album, artist, playlist or even a song in a quick access

  • Smart system for managing albums and musics without covers

  • Manage current played music list

  • Current played music list and current played music are saved when closing the app

  • Search throughout all your elements

  • See songs by added month or folders

  • A music notification and an audio manager are used to improve the user's experience

III. Settings:

Soul Searching provides multiple ways for customizing the application the way you want it to be.

Music management:

1. Manage used folders:

You can manage used folders by choosing those you want to use for the application.

2. Add new songs:

You can search new songs to add from your device.

Color theme:

You can choose between three options:

1. Dynamic theme:

The color palette used for the application is based on the current played music.

2. System theme:

The color palette used for the application is based on the theme of your device (light or dark theme).

3. Personalized theme:

The default theme used is the system one, but you can choose to use a dynamic theme for the player view, the playlist/album/artist view and for all the other views of the app.

Customization:

Currently, you can customize the elements shown on the main screen.

Thus, you can choose what parts of the main page are shown (playlists, albums, artists, quick access).

Examples of what you can achieve:

soulsearching's People

Contributors

enteraname74 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

soulsearching's Issues

Unnecessary Notification sounds

Notification sound fires for every new song when is starts playing and that sound plays when we change the current playing pointer on the tracing bar.

Dynamic colorscheme readability issue when there's no cover

See screenshot below on version 0.3.1 where the dynamic color scheme ends up with command buttons you can't read when the song have no cover and use default one.

Buttons placement is also an issue (whether there's a cover or not), but I'll open another issue for this.

Screenshot

Screenshot_20240109-121520

Device details:
Xperia XZ running Android Oreo (8.0) on stock ROM.

Reproducible Builds

I've checked your app if its build is reproducible (see: Reproducible bulds, special client support and more in our repo), but while I was able to successfully generate the APK using ./gradlew assembleRelease, the resulting APK was not identical to yours (the Dex diff is rather huuuge). Was that APK really built from the commit the tag points to? If so, did I miss some build options? And if not, which commit was it?

APK diff:

-------------------------------
--- /dev/fd/63  2024-07-11 10:15:21.380754419 +0200
+++ /dev/fd/62  2024-07-11 10:15:21.384754395 +0200
@@ -1,11 +1,11 @@
   META-INF/com/android/build/gradle/app-metadata.properties
   32-bit CRC value (hex):                         2ee0d5b5
   assets/dexopt/baseline.prof
-  32-bit CRC value (hex):                         b31dbdfc
+  32-bit CRC value (hex):                         42b45c07
   assets/dexopt/baseline.profm
-  32-bit CRC value (hex):                         4aad26e2
+  32-bit CRC value (hex):                         e728515e
   classes.dex
-  32-bit CRC value (hex):                         e4ca8b0a
+  32-bit CRC value (hex):                         17e9418e
   assets/$catalog.json
   32-bit CRC value (hex):                         dfa4bb33
   assets/META-INF/$catalog.json

We'd appreciate if you could help making your build reproducible. We've prepared some hints on reproducible builds for that.

Looking forward to your reply!

General performance issues

Application is still quite recent so those things can happen, but it does have quite some performance issues.
First on the first launch for the global indexing of all of your songs, but even after that for example for the dynamic theming, which is causing some performance problems, especially when switching to a song with no cover.

Dunno what I can add there to help on that topic.

Device details:
Xperia XZ running Android Oreo (8.0) on stock ROM.

EDIT: To be more precise, first song indexing took at least 10 minutes I think, went quite slowly, and only offering 6 things to read during that time. You can't even set the folders first.

Grammar Error

Would it be possible to change the "musics" to "music" as the word's plural is the same as the singular version.
Also "Personalization" is written as "Personalisation" in the settings tab

Thanks a lot for making this app as i found it very useful

Add cover to the notification

When the song have a cover, have it displayed in the notification could be a nice improvement.

Note that you can even push dynamic theming to also color the notification: I've seen other players do it. This might be under a preference though as one can dislike this.

Crash of the player in background on lateinit property playerViewModel has not been initialized

Player wasn't used but was running in background and crashed at some point on this exception after unlocking the phone:

01-10 10:59:22.550  1453 16726 I WindowManager: WIN DEATH: Window{7a24489 u0 com.github.enteraname74.soulsearching/com.github.soulsearching.MainActivity}
01-10 10:59:22.551  1453 12807 I ActivityManager: Process com.github.enteraname74.soulsearching (pid 11630) has died: prcp FGS
01-10 10:59:22.554  1453 12807 W ActivityManager: Scheduling restart of crashed service com.github.enteraname74.soulsearching/com.github.soulsearching.service.PlayerService in 1000ms
01-10 10:59:22.563  1453  1526 W ActivityManager: setHasOverlayUi called on unknown pid: 11630
01-10 10:59:23.648  1453  1496 I ActivityManager: Start proc 26165:com.github.enteraname74.soulsearching/u0a248 for service com.github.enteraname74.soulsearching/com.github.soulsearching.service.PlayerService
01-10 10:59:24.100 26165 26165 E AndroidRuntime: FATAL EXCEPTION: main
01-10 10:59:24.100 26165 26165 E AndroidRuntime: Process: com.github.enteraname74.soulsearching, PID: 26165
01-10 10:59:24.100 26165 26165 E AndroidRuntime: java.lang.RuntimeException: Unable to start service com.github.soulsearching.service.PlayerService@f338d06 with null: androidx.fragment.app.d: lateinit property playerViewModel has not been initialized
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3561)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.app.ActivityThread.-wrap20(Unknown Source:0)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1703)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:105)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:251)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6572)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: Caused by: androidx.fragment.app.d: lateinit property playerViewModel has not been initialized
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at p4.e.<init>(Unknown Source:395)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at com.github.soulsearching.service.PlayerService.onStartCommand(Unknown Source:16)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3544)
01-10 10:59:24.100 26165 26165 E AndroidRuntime: 	... 8 more
01-10 10:59:24.105  1453 12807 D ActivityManager: New dropbox entry: com.github.enteraname74.soulsearching, data_app_crash, 90271a39-2246-422c-85e9-f0dd9758e2a8
01-10 10:59:24.112  1453  1497 I ActivityManager: Showing crash dialog for package com.github.enteraname74.soulsearching u0
01-10 10:59:24.132  1453  1496 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-10 10:59:24.132  1453  1496 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-10 10:59:24.132  1453  1496 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.sonyericsson.crashmonitor/.receiver.CrashMonitorServiceBroadcastReceiver
01-10 10:59:24.311  1453  1496 I ActivityManager: Start proc 26186:com.sonyericsson.crashmonitor/1000 for broadcast com.sonyericsson.crashmonitor/.receiver.CrashMonitorServiceBroadcastReceiver
01-10 10:59:39.736  1453 12807 I ActivityManager: Killing 26165:com.github.enteraname74.soulsearching/u0a248 (adj 200): crash

Device details:
Xperia XZ running Android Oreo (8.0) on stock ROM.

Dynamic colorscheme readability issue when there's no cover

See screenshot below on version 0.3.1 where the dynamic color scheme ends up with command buttons you can't read when the song have no cover and use default one.

Buttons placement is also an issue (whether there's a cover or not), but I'll open another issue for this.

Screenshot

Screenshot_20240109-121520

Device details:
Xperia XZ running Android Oreo (8.0) on stock ROM.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.