Commit Graph

415 Commits

Author SHA1 Message Date
Ryan Harg c10b3d4a75 Keep the player always on top 2023-01-10 12:56:20 +00:00
Ryan Harg a810e13cfb Custom cache layer for cover art which ignores (pre-signed URL) query 2023-01-10 10:00:41 +00:00
RenovateBot 7abbd8dbaa Update dependency org.jetbrains.kotlin:kotlin-stdlib-jdk7 to v1.8.0 2023-01-05 13:09:31 +00:00
Hugh Daschbach 1566d1fbcf Open queue scrolled to current track. 2023-01-04 13:28:44 +00:00
RenovateBot 7f0671b055 Update dependency io.insert-koin:koin-core to v3.3.2 2023-01-04 12:35:33 +00:00
Thomas ef7811dc6e Translated using Weblate (French)
Currently translated at 100.0% (118 of 118 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/fr/
2023-01-02 21:25:33 +00:00
Philipp Wolfer 435bbad122 Translated using Weblate (German)
Currently translated at 98.3% (116 of 118 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/de/
2022-12-21 09:25:30 +00:00
Hugh Daschbach ec6187aeac Allow automatic backward skip of a configurable number of seconds on pause (#134). 2022-12-20 09:13:36 +00:00
Ryan Harg 87a0ef5a42 Filter favorites 2022-12-09 08:49:41 +00:00
Ryan Harg 566dca1518 Use Picasso stableKey for better caching against pre-signed URLs 2022-12-08 13:29:34 +00:00
RenovateBot 9f7f0294f6 Update dependency com.google.android.material:material to v1.7.0 2022-12-08 09:23:58 +00:00
RenovateBot 159c7d8d47 Update dependency io.insert-koin:koin-core to v3.2.2 2022-12-07 11:00:49 +00:00
Ryan Harg fa48937b56
Set required flag for pendingIntent 2022-12-06 09:37:20 +01:00
Ryan Harg 2de6ca303e
Necessary upgrades to compileSdk and targetSdk and adjusting code 2022-12-06 09:35:33 +01:00
Hugh Daschbach d734953b54
Replace deprecated SimpleExoPlayer with ExoPlayer.
This is part of an effort to resolve deprecation warnings.

Most of this is simple refactoring of interfaces that change between
the two Player implementations.  There are a few other changes that
deserve further explanation.

Testing indicated that the play/pause button was being reset to pause
in MainActivity:refreshCurrentTrack.  In the past this was likely
masked by the ordering of other callbacks.  We have removed the
nowPlayingToggle.icon update from MainActivity, leaving that UI update
to PlayerService.

One of the bigger refactorings in PlayerService was forced by the
deprecation of Player.EventListener.onPlayerStateChanged.  That forced
separation of handling playWhenReady and playbackState transitions.
In the SimpleExoPlayer implementations, where these transitions were
combined, the module attempted to work out playing state from a
combination of these two state variables.

In addition to separating the reaction to these state changes, we have
added a listener to onIsPlayingChanged, eliminating the need for some
of the earlier logic in Player.EventListener.onPlayerStateChanged.
This addition, along with the separation of state transition
processing, seems to provide a simpler implementation.  But it is,
certainly, a possible source of bugs.
2022-12-06 09:35:33 +01:00
Hugh Daschbach 24de54c7e0
MainActivity: startActivityForResult deprecated.
Migrate startActivityForResult/onActivityResult to
StartActivityForResult/registerForActivityResult in MainActivity.
2022-12-06 09:35:33 +01:00
Hugh Daschbach bea1d1f397
LoginActivity: startActivityForResult deprecated.
Migrate startActivityForResult/onActivityResult to
StartActivityForResult/registerForActivityResult in
LoginActivity/OAuth.

This moves responsibility for scheduling the starting Intent from
OAuth to LoginActivity.

OAuth still generates the Intent.  But instead of starting the intent
directly in OAuth, the intent is returned to LoginActivity.  This
better associates processing the activity result with its invocation.

OAuthTest module updated to accommodate internal API change.
2022-12-06 09:35:33 +01:00
Hugh Daschbach 38a3183b9d
Resolve warning: FragmentPagerAdapter deprecated.
Replace FragmentPagerAdapter with FragmentStateAdapter in
BrowseTabsAdapter.kt.  Refactored getPageTitle as a function that
returns tab name.  Tab text update moved to BrowseFragment.

This requires replacement of setupWithViewPager with
TabMediator.attach in BrowseFragment.

Also requires replacing widget declaration
androidx.viewpager.widget.ViewPager with
androidx.viewpager2.widget.ViewPager2 in fragment_browwse.xml.
2022-12-06 09:35:32 +01:00
Hugh Daschbach 8878e3e68f
Resolve warning: ExoDatabaseProvider deprecated.
Replace ExoDatabaseProvider with StandaloneDatabaseProvider.
2022-12-06 09:35:32 +01:00
Hugh Daschbach 7d49819450
Resolve warning "Unnecessary safe call". 2022-12-06 09:35:32 +01:00
Hugh Daschbach 4827fbccc1
RequentBus: replace deprecated implementation.
Convert RequestBus from deprecated BroadcastChannel to a SharedFlow.
2022-12-06 09:35:32 +01:00
Hugh Daschbach 1a038b2355
CommandBus: replace deprecated implementation.
Convert CommandBus from deprecated BroadcastChannel to a SharedFlow.
2022-12-06 09:35:32 +01:00
Hugh Daschbach be8901390e
EventBus: replace deprecated implementation.
Convert EventBus from deprecated BroadcastChannel to a SharedFlow.
2022-12-06 09:35:32 +01:00
Hugh Daschbach 6d1ad9cd78
ProgressBus: replace deprecated implementation.
Convert Progress from deprecated BroadcastChannel to a StateFlow.
2022-12-06 09:35:31 +01:00
Hugh Daschbach 72b4aea35a
Resolve deprecation warning in MediaSession.
Remove setting of MediaSession flags that are now mandatory and
assumed set.
2022-12-06 09:35:31 +01:00
omarmaciasmolina b94363e035 Added translation using Weblate (Catalan) 2022-11-28 21:08:29 +00:00
Hugh Daschbach 48570e24ea Minor cleanup: consistent deserialization. 2022-09-03 11:09:21 +00:00
Ryan Harg bfdac03d0c Upgrade to Kotlin 1.7.0 2022-08-26 12:06:41 +00:00
Ryan Harg 7c91e819c9 Remove Versions object 2022-08-25 12:58:19 +00:00
Hugh Daschbach 79e27578e5 Fix issue #124 - empty queue on restart.
The Gson deserializer required parameter is a reader object.  It
silently fails when passed a string.
2022-07-21 11:15:54 +00:00
Georg Krause d1c4bbfd29 Added translation using Weblate (Basque) 2022-06-26 11:35:43 +00:00
Ryan Harg 8f1f565652 Bugfix/122 fix resource leakage 2022-06-21 08:03:46 +00:00
Ryan Harg c43baae8e8 #117: Use the same contentId when adding and removing downloads 2022-06-17 09:50:39 +00:00
Ryan Harg 1b0381fde4 #119: Default deserializer has no string deserialization implementation 2022-06-16 13:10:10 +00:00
Hugh Daschbach 37e270071a
Fix Bluetooth control button unresponsiveness.
With Oreo and later, Bluetooth control buttons may kill FFA if it is
not the foreground application.  Once this happens to resume playback,
one needs to restart playback from the phone, rather than the
play/pause action of Bluetooth headset.

For example:
    D MediaSessionService: Sending KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PLAY, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=0, downTime=0, deviceId=-1, source=0x0 } to audio.funkwhale.ffa.dev/audio.funkwhale.ffa.dev (

    W ActivityManager: Background start not allowed: service Intent { act=android.intent.action.MEDIA_BUTTON cmp=audio.funkwhale.ffa.dev/audio.funkwhale.ffa.playback.PlayerService (has extras) } to audio.funkwhale.ffa.dev/audio.funkwhale.ffa.play
   549 uid=10149 pkg=audio.funkwhale.ffa.dev startFg?=false
    D AndroidRuntime: Shutting down VM
   --------- beginning of crash
    E AndroidRuntime: FATAL EXCEPTION: main
    E AndroidRuntime: Process: audio.funkwhale.ffa.dev, PID: 14549
    E AndroidRuntime: java.lang.IllegalStateException: Not allowed to start service Intent { act=android.intent.action.MEDIA_BUTTON cmp=audio.funkwhale.ffa.dev/audio.funkwhale.ffa.playback.PlayerService (has extras) }: app is in background uid UidRecord{72fa8f8 u0a149 CAC  bg:+11m56s597ms idle change:cached procs:1 seq(0,0,0)}
    E AndroidRuntime:        at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1577)
    E AndroidRuntime:        at android.app.ContextImpl.startService(ContextImpl.java:1532)
    E AndroidRuntime:        at android.content.ContextWrapper.startService(ContextWrapper.java:664)
    E AndroidRuntime:        at audio.funkwhale.ffa.playback.MediaSession$connector$2.invoke$lambda-3$lambda-2(MediaSession.kt:47)
    E AndroidRuntime:        at audio.funkwhale.ffa.playback.MediaSession$connector$2.$r8$lambda$jU84j_zRyeYuvwLrRY0b6XyQBMs(Unknown Source:0)
    E AndroidRuntime:        at audio.funkwhale.ffa.playback.MediaSession$connector$2$$ExternalSyntheticLambda0.onMediaButtonEvent(Unknown Source:2)
    E AndroidRuntime:        at com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector$ComponentListener.onMediaButtonEvent(MediaSessionConnector.java:1396)
    E AndroidRuntime:        at android.support.v4.media.session.MediaSessionCompat$Callback$MediaSessionCallbackApi21.onMediaButtonEvent(MediaSessionCompat.java:1602)
    E AndroidRuntime:        at android.media.session.MediaSession$CallbackMessageHandler.handleMessage(MediaSession.java:1471)
    E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
    E AndroidRuntime:        at android.os.Looper.loop(Looper.java:193)
    E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6718)
    E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
    E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
    E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    W ActivityManager:   Force finishing activity audio.funkwhale.ffa.dev/audio.funkwhale.ffa.activities.MainActivity

xref: https://stackoverflow.com/questions/46445265/android-8-0-java-lang-illegalstateexception-not-allowed-to-start-service-inten
2022-06-16 14:02:20 +02:00
Ryan Harg 70d9ba241b Fix "A resource failed to call close." warnings. 2022-06-12 12:48:32 +00:00
Ryan Harg 20ee27da21 fix authorization 2022-06-11 14:37:38 +00:00
Ryan Harg a6b1730c4a #116: Fix playback order to respect preference setting on albums fragment 2022-04-22 11:39:14 +00:00
Éilias McTalún f77b2e51e5 Translated using Weblate (Irish)
Currently translated at 13.7% (16 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/ga/
2022-04-21 05:59:34 +00:00
Éilias McTalún 02a6112eeb Added translation using Weblate (Irish) 2022-04-16 03:46:19 +00:00
RenovateBot 89d4515cd4 Update dependency androidx.preference:preference-ktx to v1.2.0 2022-03-07 08:32:52 +00:00
Ryan Harg 45ef5eb189
Fix linting errors 2022-03-04 09:30:03 +01:00
Mouath Ibrahim c29e36c697 Bugfix/113 fix invalid null handling playlist 2022-02-25 09:35:01 +00:00
ghose 41519bda81 Translated using Weblate (Galician)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/gl/
2022-02-19 14:17:02 +00:00
Michael Long 8529fc441d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/zh_Hans/
2022-01-31 19:36:49 +00:00
JuniorJPDJ fb0e6985f7 Translated using Weblate (Polish)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/pl/
2022-01-07 23:36:40 +00:00
Kristoffer Grundström 1522a5884b Translated using Weblate (Swedish)
Currently translated at 95.6% (111 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/sv/
2022-01-04 20:36:40 +00:00
Dignified Silence a93afe4533 Translated using Weblate (Japanese)
Currently translated at 96.5% (112 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/ja/
2022-01-04 20:36:39 +00:00
Thomas 0fa69d837e Translated using Weblate (French)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/fr/
2021-12-22 22:36:35 +00:00
Erik Präntare e000aa5e6a Translated using Weblate (Swedish)
Currently translated at 25.0% (29 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/sv/
2021-12-13 16:36:31 +00:00
Erik Präntare 5d7583e7f5 Added translation using Weblate (Swedish) 2021-12-12 16:09:19 +00:00
Burp af9342428e Translated using Weblate (Spanish)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/es/
2021-12-11 10:36:27 +00:00
milotype ed9f4e0e88 Translated using Weblate (Croatian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/hr/
2021-10-25 19:03:42 +00:00
Dignified Silence 049e61ab7f Translated using Weblate (Japanese)
Currently translated at 85.3% (99 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/ja/
2021-10-22 17:48:17 +00:00
ghose d3043fc8da Translated using Weblate (Galician)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/gl/
2021-10-09 05:36:23 +00:00
danigarau5dd7796dc359494b 6a70540e0e Translated using Weblate (Italian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/it/
2021-09-29 10:36:21 +00:00
Ryan Harg 25ec60b1e5 #99: Initialize repository before using it 2021-09-17 17:15:00 +00:00
Ryan Harg 2891214eac
#28: Create adapter after repo initialization 2021-09-12 09:16:11 +02:00
SpcCw 19c3bd9081 Translated using Weblate (Russian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/ru/
2021-09-11 15:55:45 +00:00
Ryan Harg d8f8c3c193
#28: Auto update favorites list
- Also removes duplicate favorite listeners
2021-09-10 13:37:35 +02:00
Ryan Harg 898d2b437b
#95: Remember scroll positions in list views 2021-09-10 09:45:22 +02:00
Ryan Harg 9d857de99a #92: Remove trailing slash from hostname 2021-09-10 07:28:09 +00:00
Ryan Harg b4b381edb5
#93: Disable landscape mode 2021-09-10 09:09:59 +02:00
Ryan Harg ef3387dee0
Fix existing linting problems 2021-09-09 09:56:15 +02:00
Ryan Harg dfe88bd298 #89: Update fastlane and play store metadata 2021-09-08 08:12:37 +00:00
Ryan Harg 63292f07c5 #90: Use correct radio identifier for user radio 2021-09-08 07:51:49 +00:00
Luka Filipović 7ff24104fa Translated using Weblate (Croatian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/hr/
2021-09-05 18:55:44 +00:00
Ryan Harg fe971f2cfc Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/en_GB/
2021-09-04 10:04:52 +00:00
Ryan Harg fec95a7332
#88: Fix hostname scheme prefix handling 2021-09-03 11:15:14 +02:00
Ryan Harg 07511d1d9e
Upgrade Android Gradle Plugin to version 7.0.2 2021-09-03 10:50:44 +02:00
ghose 66345724ba Translated using Weblate (Galician)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/gl/
2021-09-01 04:04:50 +00:00
Ryan Harg 1e1e34cae4
#87: Show Pause icon when song is playing 2021-08-29 15:49:13 +02:00
Ryan Harg 0095381694 #65: Upgrade exoplayer version 2021-08-29 13:41:50 +00:00
Ryan Harg f35f3a5f92
#86: Use correct downloaded status for tracks, disable albums and artists 2021-08-27 15:13:54 +02:00
Ryan Harg ea286c2345
Minor adjustments to get rid of deprecation warnings 2021-08-27 13:28:23 +02:00
Ryan Harg 4f9f605bbf
Improving OAuth implementation 2021-08-27 11:06:46 +02:00
Ryan Harg 1209a0a5dc #83: Fix invalid null handling for add to playlist 2021-08-26 06:44:59 +00:00
Ryan Harg 107a8d55e8
Refactor OAuth code 2021-08-23 09:17:06 +02:00
Ryan Harg 94ac0c6b85
Upgrading Android Gradle Plugin
- Also moving some model classes
2021-08-22 09:48:36 +02:00
Ryan Harg 73631cc9e9 Further fix for refreshing access token 2021-08-22 07:13:19 +00:00
Ryan Harg 8ecc6f9b69
Add http retry back on unauthorized request 2021-08-20 11:50:32 +02:00
Ryan Harg f3c7a865d2
74: Improve logging code 2021-08-13 15:04:49 +02:00
Ryan Harg c8382495ea 74: Add logs for queue management 2021-08-13 12:55:38 +00:00
Thomas 5f4e413f42 Translated using Weblate (French)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/fr/
2021-08-13 11:04:43 +00:00
Ryan Harg fe4a00ae07 74: Update logging to gather more information 2021-08-13 08:56:00 +00:00
SpcCw fe1151444b Translated using Weblate (Russian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/ru/
2021-08-12 10:04:43 +00:00
Ryan Harg f6be507bf6 Translated using Weblate (German)
Currently translated at 100.0% (116 of 116 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/de/
2021-08-12 10:04:43 +00:00
Ryan Harg 3aa37e5d3c
#80: Display error messages for user when login failes 2021-08-10 14:59:12 +02:00
Ryan Harg c997405906
#79: Add log statements in authentication code 2021-08-09 20:04:33 +02:00
Ryan Harg 80fc39a927
Remove OAuth interface 2021-08-09 08:40:04 +02:00
Ryan Harg 79f047015a
#7: Restructure koin modules 2021-08-09 07:03:20 +02:00
Ryan Harg a9319b88b0 #7: Add Koin as dependency injection library 2021-08-09 04:50:46 +00:00
Ryan Harg 88b162b0f9
Remove old authentication retry code 2021-08-07 20:20:48 +02:00
Ryan Harg 7ddff0843f Housekeeping/7 integration testing 2021-08-06 19:16:46 +00:00
Ryan Harg 9808eec6cc #71: Rename debug build to Funkwhale (preview) 2021-08-06 09:48:46 +00:00
Ryan Harg db034a0615
#73: Remove jcenter repo from buildscript repos 2021-08-06 11:32:26 +02:00
Ryan Harg 81dd69a9d7
Remove unused experimental switch 2021-08-06 09:00:34 +02:00
JuniorJPDJ 2200f4a378 Translated using Weblate (Polish)
Currently translated at 100.0% (118 of 118 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/pl/
2021-08-06 02:04:41 +00:00
Ciarán Ainsworth fde104c30d Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (118 of 118 strings)

Translation: Funkwhale/Funkwhale For Android
Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/ffa/en_GB/
2021-08-04 13:04:41 +00:00
Ryan Harg 09787c71f5 Update Android Gradle Plugin to 7.0.0 2021-08-04 08:41:42 +00:00