162 Commits

Author SHA1 Message Date
Michatec c1bc8b3e19 refactor(android): simplify notification permission request
Remove the explicit permission type from the `RequestPermission`
contract in `MainActivity` to rely on default behavior or
internal contract handling.
2026-05-30 23:11:19 +02:00
Michatec 8835cadd6a fix(ui): specify notification permission type in launcher
Explicitly pass `Manifest.permission.POST_NOTIFICATIONS` to the
`RequestPermission` contract to ensure the correct permission is
requested on Android 13+.
2026-05-30 23:09:50 +02:00
Michatec 384926cf08 chore(build): disable debug mode in build configuration
Set `IS_DEBUG_ENABLED` to `false` in `app/build.gradle.kts` to prepare
the build configuration for release.
2026-05-30 22:51:25 +02:00
Michatec 2cf98b89b3 feat(notification): allow custom intent for notifications
Update `NotificationSys` to support passing a custom `Intent` when
showing notifications. This enables more flexible navigation, such as
opening a web URL for update notifications.

In `PlayerFragment`, use this new capability to trigger a browser
intent for update notifications on non-Android TV devices.
2026-05-30 22:48:26 +02:00
Michatec 6fa1e5e2c0 style(ui): update test notification icon
Replace the white notification icon with a standard 24dp icon in
SettingsFragment to ensure visual consistency.
2026-05-30 22:30:32 +02:00
Michatec 64d0f3a71f fix(android): resolve compilation error in TV feature detection
Update the Android TV feature check to use the instance-based
`packageManager` instead of the static `PackageManager` class.
This ensures the `hasSystemFeature` method is called correctly on
the available context instance.
2026-05-30 22:23:22 +02:00
Michatec c9122d74f8 refactor(android): fix Android TV feature detection syntax
Correct the usage of `hasSystemFeature` by calling it on the `packageManager` instance instead of the `PackageManager` class. This fixes a compilation error in `MainActivity` and `SettingsFragment`.
2026-05-30 22:18:32 +02:00
Michatec 1879827f4b feat(ui): add test notification preference and optimize Android TV logic
Introduce a "Test Notification" preference in the settings menu to allow users to verify the notification system. This preference is automatically hidden on Android TV devices to maintain a clean UI.

Additionally, refactor notification permission handling to skip requests on Android TV and improve the internal check for Leanback support using a lazy property.

Updated string resources for the new preference across all supported languages.
2026-05-30 22:15:51 +02:00
Michatec 23079649c5 style(i18n): fix typography in Danish notification description
Update the apostrophe in `notification_channel_description` to use a
typographic curly apostrophe for better linguistic accuracy in
Danish.
2026-05-30 21:36:22 +02:00
Michatec 2c7e02889d feat(i18n): add notification channel description to all languages
Add the `notification_channel_description` string resource to the
default and all localized string files to provide context for the
notification channel.
2026-05-30 21:33:43 +02:00
Michatec b1bcfa2137 style(i18n): update French typography in string resources
Replace standard apostrophes with typographic curly apostrophes in
`notification_test_content` and `snackbar_failed_permission_notification`
to improve French localization consistency.
2026-05-30 21:23:24 +02:00
Michatec 2814ff2cfa feat(android): implement POST_NOTIFICATIONS permission handling
Add NotificationSys to manage system notifications and update
MainActivity to request POST_NOTIFICATIONS permission on Android 13+.
Includes localized string resources for notification testing and
permission error feedback.
2026-05-30 21:17:01 +02:00
Michatec 2688f22a6a chore(app): add IS_DEBUG_ENABLED build config field
Introduce a `IS_DEBUG_ENABLED` boolean flag in `BuildConfig` for both
debug and release build types. This flag is used to suppress update
notifications in `PlayerFragment` when debugging and before its a version released.
2026-05-15 22:20:23 +02:00
Michatec 5d7df9550e feat(ui): add security preference to settings
Add a new security preference in the settings screen that links to the
SECURITY.md file on GitHub. This includes a new security icon and
localized strings for multiple languages.
2026-05-15 21:51:07 +02:00
Michatec dcae7bafb5 feat: apply custom theme to ExpandedControllerActivity 2026-05-07 13:49:37 +02:00
Michatec cf3fd0bc56 refactor(media): move MEDIA_BUTTON action to MediaSessionService 2026-05-07 13:43:58 +02:00
Michatec 7d6b0fe136 feat: implement station navigation and update to SDK 37
- Implement `seekToNext` and `seekToPrevious` in `PlayerService` to allow switching between radio stations.
- Update `compileSdk` and `targetSdk` to 37 and bump version to 14.6.
- Modify `PlayerService` to remain active while paused to improve playback resumption.
- Modernize media resumption logic using Media3 `isRecent` check instead of legacy extras.
- Refactor `DefaultRenderersFactory` to use non-nullable `AudioSink` return types.
- General code cleanup using KTX extensions (e.g., `View.isEmpty()`) and Kotlin property access syntax.
2026-05-07 13:40:35 +02:00
Michachatz 4974514a81 refactor(ui): Change from normal switch to marquee switches 2026-04-22 06:22:31 +02:00
Michatec f6208f5e5a style(ui): enable marquee for station metadata and playback controls 2026-04-21 20:04:34 +02:00
Michatec a1beb17b26 style(ui): make language selection dialog scrollable 2026-04-21 19:51:53 +02:00
Michatec 18c28170c5 style(ui): update preference and card icons for presets, equalizer, and visualizer 2026-04-21 19:44:46 +02:00
Michatec 48836334bb refactor(ui): remove unused LanguageSelectionDialog import 2026-04-21 19:26:02 +02:00
Michatec 133c56be4d feat(ui): update and expand translations for multiple languages 2026-04-21 19:15:37 +02:00
Michatec 63d85118a4 feat(ui): add manual language selection to settings 2026-04-21 18:58:53 +02:00
Michatec 4f150221b7 style(ui): add adaptive channel icon 2026-04-20 16:13:28 +02:00
Michatec 5fbf763bd6 style(ui): update banner and banner foreground assets 2026-04-20 14:32:38 +02:00
Michatec 0d3224214e style(ui): update application banner to ic_banner 2026-04-19 12:03:14 +02:00
Michatec 11610084f9 loc(de): add German translations for streaming and loading strings 2026-04-19 11:35:59 +02:00
Michatec 08f303997e refactor(ui): use Locale.ROOT for bitrate formatting 2026-04-19 11:27:54 +02:00
Michatec b3de68050c refactor(collection): add TODO for notifyDataSetChanged cleanup 2026-04-18 23:35:27 +02:00
Michatec adac340925 style(ui): add tools:visibility to station icon in card layout 2026-04-18 20:23:30 +02:00
Michatec d6037dc0c2 chore(config): prune unsupported locales in locale config 2026-04-18 20:13:04 +02:00
Michatec 297310a784 feat(ui): show snackbar when content is copied to clipboard 2026-04-18 20:08:43 +02:00
Michatec abd9b5ecd9 fix(settings): conditionally enable stream URI editing based on station editing status 2026-04-18 18:39:59 +02:00
Michatec 744a650a91 feat(ui): use checkbox to indicate reordering station status 2026-04-18 17:53:52 +02:00
Michatec 1238a5fba2 style(ui): remove manual card stroke color reset 2026-04-18 16:47:19 +02:00
Michatec cc0b284a7f style(ui): update station card stroke color during reordering and remove play button constraint 2026-04-18 16:31:25 +02:00
Michatec 901ae6b8ad build: migrate Gradle build files to Kotlin DSL (KTS) 2026-04-09 15:41:13 +02:00
Michatec 255f27bddf perf(dsp): optimize equalizer and update coefficients calculation 2026-04-08 11:48:56 +02:00
Michatec 45576e1577 refactor(player): remove eighth equalizer band preference 2026-04-08 11:08:41 +02:00
Michatec 1212fc61b5 fix(equalizer): update band mappings and reset all bands 2026-04-08 11:04:12 +02:00
Michatec cdf7668d43 refactor(dsp): improve reverb algorithm and update audio presets 2026-04-07 16:10:50 +02:00
Michatec f755dc5173 perf(dsp): optimize audio processing and atomic memory ordering 2026-04-07 15:55:16 +02:00
Michatec 8c7a8ce7c4 feat(ui): add dedicated station search fragment for television platforms 2026-04-07 12:59:33 +02:00
Michatec d1cc340417 feat(ui): add visualizer button to collection screen 2026-04-07 11:58:23 +02:00
Michatec e0d1770a19 feat(dsp): refine audio processing and visualizer rendering 2026-04-07 11:26:14 +02:00
Michachatz 2e8cc9b243 refactor(helpers): adjust the bass boost value 2026-04-07 01:09:13 +02:00
Michatec 17ba1c268a refactor(gradle): relocate ndkVersion to top-level build script 2026-04-06 23:21:45 +02:00
Michatec b328af5c3a build(gradle): set ndk version 29.0.14206865 in gradle build and ci workflow 2026-04-06 23:20:06 +02:00
Michatec 883a4443e9 refactor(dsp): make DSP thread‑safe and add EQ interpolation 2026-04-06 22:58:45 +02:00