feat: add opt-in Discord Rich Presence on Android

Use the official Discord Social SDK through JNI to share built-in player activity, clear presence when playback stops, and guard against late callbacks after disabling. Package the SDK optionally through SPOTIFLAC_DISCORD_SDK_DIR with license notices.

Credit: @itsmegaaa for the Rich Presence initiative and contribution in #575 and #576.

Validation: 15 Dart tests, scoped Flutter analysis, and one Android 16 ARM64 SDK/JNI instrumentation test passed. Visible presence on a signed-in Discord profile remains unverified.
This commit is contained in:
zarzet
2026-09-17 02:12:24 +07:00
parent b2ea07c41e
commit f0ed293d48
17 changed files with 662 additions and 1 deletions
+4
View File
@@ -1,4 +1,8 @@
{
"discordRichPresence": "Discord Rich Presence",
"discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.",
"discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.",
"discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.",
"@@locale": "en",
"@@last_modified": "2026-04-28",
"appName": "SpotiFLAC Mobile",
+4
View File
@@ -1,4 +1,8 @@
{
"discordRichPresence": "Discord Rich Presence",
"discordPresenceDescription": "Bagikan lagu yang diputar di pemutar bawaan ke Discord. Discord harus terpasang dan sudah login.",
"discordPresenceMissing": "Pasang Discord dan login, lalu matikan dan nyalakan kembali pengaturan ini.",
"discordPresenceUnavailable": "Discord Rich Presence tidak tersedia pada build atau perangkat ini.",
"@@locale": "id",
"@@last_modified": "2026-04-28",
"libraryEnableLocalLibrarySubtitle": "Scan and track your existing music",