diff --git a/app/build.gradle b/app/build.gradle index d54b2c29..50c665d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { buildToolsVersion '28.0.3' defaultConfig { - minSdkVersion 16 + minSdkVersion 19 targetSdkVersion 28 versionCode 175 @@ -82,4 +82,7 @@ dependencies { implementation 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5' implementation 'com.github.AdrienPoupa:jaudiotagger:2.2.3' + + implementation project(':apiclient') + implementation project(':library') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ee7aa47b..0d90b313 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,7 +23,13 @@ android:supportsRtl="true" android:theme="@style/Theme.Phonograph.Light" tools:ignore="UnusedAttribute"> - + + + + + + + @@ -32,79 +38,24 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/assets/phonograph-changelog.html b/app/src/main/assets/phonograph-changelog.html deleted file mode 100644 index c975e6a1..00000000 --- a/app/src/main/assets/phonograph-changelog.html +++ /dev/null @@ -1,843 +0,0 @@ - - - - - - -

You can view the changelog dialog again at any time from the about section.

- -

Version 1.3.1

-
    -
  1. NEW: Artist image mosaics
  2. -
  3. FIX: Ringtone sharing
  4. -
- -

Version 1.3.0

-
    -
  1. NEW: Show more information of songs, albums and artists
  2. -
  3. NEW: Option to finish last song in sleep timer
  4. -
  5. NEW: Support for Android Pie
  6. -
  7. NEW: Option for last 7 days for recently played
  8. -
  9. FIX: Artist images not loading
  10. -
  11. IMPROVEMENT: Sync translations
  12. -
- -

Version 1.2.0

-
    -
  1. NEW:Support for devices with a notch
  2. -
- -

Version 1.1.2

-
    -
  1. FIX: Crash with custom artist images
  2. -
- -

Version 1.1.1

-
    -
  1. NEW: Preference to turn off shuffle mode when selecting new list of songs
  2. -
  3. FIX: Fix app intro crash
  4. -
  5. FIX: Fix a crash for some artist names which contain special characters
  6. -
  7. FIX: Fix loading of very large embedded album art
  8. -
- -

Version 1.1.0

-
    -
  1. NEW: Select all items in a list
  2. -
  3. NEW: Export multiple playlists at once
  4. -
  5. FIX: Show unknown year consistently everywhere
  6. -
  7. FIX: Also look for png album covers in the folder
  8. -
  9. IMPROVEMENT: Updated translations
  10. -
- -

Version 1.0.1

-
    -
  1. FIX: Broken layout for super long artist names
  2. -
  3. FIX: Show "-" instead of "0" when the album year is not available
  4. -
  5. FIX: Show "Unknown Artist" when the artist name is unknown
  6. -
  7. FIX: Navigation bar button colors for light themes
  8. -
  9. IMPROVEMENT: Updated translations
  10. -
- -

Version 1.0.0

-

This is it, Phonograph 1.0.0! We are finally out of beta, therefore many bugs were fixed and the - album and artist pages received a brand new look.

-
    -
  1. NEW: Album page redesign
  2. -
  3. NEW: Artist page redesign
  4. -
  5. NEW: Custom sort orders for titles, albums and artists
  6. -
  7. NEW: Rescan media from the navigation drawer
  8. -
  9. IMPROVEMENT: Updated translations
  10. -
  11. FIX: Fixed many bugs and crashes
  12. -
- -

Version 0.16.9

-
    -
  1. FIX: Crash on start for some users
  2. -
- -

Version 0.16.8

-
    -
  1. IMPROVEMENT: Updated translations
  2. -
  3. OTHER: Removed all analytics
  4. -
- -

Version 0.16.7

-
    -
  1. IMPROVEMENT: Updated translations
  2. -
  3. IMPROVEMENT: Minor improvements
  4. -
- -

Version 0.16.6

-
    -
  1. FIX: Broken dot animation in Playing Screen Preference
  2. -
  3. IMPROVEMENT: Updated translations
  4. -
- -

Version 0.16.5

-
    -
  1. FIX: Hide the tab bar when only one tab is activated
  2. -
  3. IMPROVEMENT: Updated translations
  4. -
- -

Version 0.16.4

-
    -
  1. NEW: Adaptive Icon (feedback is appreciated!)
  2. -
  3. NEW: Rearrange and/or disable library tabs
  4. -
  5. IMPROVEMENT: Updated translations
  6. -
- -

Version 0.16.3

-
    -
  1. NEW: Add genre tab (thanks to arkon)
  2. -
- -

Version 0.16.2

-
    -
  1. IMPROVEMENT: Synced translations
  2. -
  3. IMPROVEMENT: Updated libraries
  4. -
- -

Version 0.16.1

-
    -
  1. IMPROVEMENT: Synced translations
  2. -
  3. FIX: Reappearing notification
  4. -
- -

Version 0.16.0

-
    - Phonograph is alive again. - From this version on, some features are deactivated and require a one time purchase of - Phonograph Pro. - The source code of Phonograph is available on GitHub. You are welcome to compile the pro version - yourself for free. - However, if you want to support the development and receive updates through the Play Store, - consider buying Phonograph Pro. Thank you! -
  1. NEW: Full Android Oreo support
  2. -
  3. NEW: Folder blacklist
  4. -
  5. NEW: Manually set custom artist images
  6. -
  7. NEW: Tap to hide toolbar in now playing screen
  8. -
  9. NEW: Option to select the old notification style
  10. -
  11. NEW: Show remaining playing queue time
  12. -
  13. NEW: Album wikis
  14. -
  15. NEW: Synchronized lyrics support
  16. -
  17. NEW: New widgets
  18. -
  19. NEW: Scrollbar in playlists
  20. -
  21. IMPROVEMENT: Proper text protection in now playing screen
  22. -
  23. IMPROVEMENT: Rearrange playlist items by dragging the album cover
  24. -
  25. IMPROVEMENT: Cleaned up playlist menus
  26. -
  27. IMPROVEMENT: Synced translations
  28. -
  29. FIX: Bottom bar lag on cold start
  30. -
  31. FIX: White space when expanding the classic notification
  32. -
  33. FIX: Many bug fixes
  34. -
  35. OTHER: Added Eugene Cheung to the about section for his contributions to the source code
  36. -
- -

Version 0.15.0

- -
    -
  1. NEW: App Shortcuts (Android Nougat only).
  2. -
  3. IMPROVEMENT: Added support for more file explorers.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
- -

Version 0.14.1

- -
    -
  1. FIX: Notification won't disappear.
  2. -
  3. IMPROVEMENT: Updated libraries.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
- -

Version 0.14.0

- -
    -
  1. NEW: Nougat style notification for devices running Android Nougat.
  2. -
  3. IMPROVEMENT: Updated libraries.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. IMPROVEMENT: Updated some code to newer APIs.
  8. -
- -

Version 0.13.6

- -
    -
  1. IMPORTANT: Phonograph is free and open source now. https://github.com/kabouzeid/Phonograph -
  2. -
  3. IMPROVEMENT: Updated libraries.
  4. -
- -

Version 0.13.5

- -
    -
  1. FIX: Statusbar padding in navigation drawer.
  2. -
- -

Version 0.13.4

- -
    -
  1. FIX: Statusbar too dark.
  2. -
- -

Version 0.13.3-3

- -
    -
  1. IMPROVEMENT: Updated libraries.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.13.3-2

- -
    -
  1. IMPROVEMENT: Updated libraries.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.13.3

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
- -

Version 0.13.3 BETA 1

- -
    -
  1. IMPROVEMENT: Updated libraries.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.13.2 BETA 1

- -
    -
  1. NEW: Added a parallax effect to the intro.
  2. -
  3. IMPROVEMENT: Better artist loading.
  4. -
  5. IMPROVEMENT: Updated libraries.
  6. -
  7. IMPROVEMENT: Synced translations.
  8. -
- -

Version 0.13.1

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
- -

Version 0.13.1 BETA 1

- -
    -
  1. NEW: New app intro.
  2. -
- -

Version 0.13.0

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
- -

Version 0.13.0 BETA 4

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
  3. FIX: Graphic glitches.
  4. -
- -

Version 0.13.0 BETA 3

- -
    -
  1. IMPROVEMENT: Added landscape version of the flat now playing screen.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
  5. IMPROVEMENT: Updated internal libraries.
  6. -
  7. FIX: Two crashes.
  8. -
- -

Version 0.13.0 BETA 2

- -
    -
  1. IMPROVEMENT: Adjusted the statusbar color in the flat now playing screen.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
  5. IMPROVEMENT: Updated internal libraries.
  6. -
- -

Version 0.13.0 BETA 1

- -
    -
  1. NEW: Alternative 'Flat' now playing screen. (More now playing screens coming soon) -
  2. -
  3. NEW: Bug report screen.
  4. -
  5. IMPROVEMENT: Animate navigation bar color changes.
  6. -
  7. IMPROVEMENT: Synced translations.
  8. -
  9. IMPROVEMENT: Updated internal libraries.
  10. -
- -

Version 0.12.1 BETA 1

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
  3. IMPROVEMENT: Updated internal libraries.
  4. -
- -

Version 0.12.0 BETA 1

- -
    -
  1. NEW: More widgets.
  2. -
  3. NEW: Option to disable volume reducing.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Volume stays reduced.
  8. -
- -

Version 0.11.0 RC

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
  3. FIX: Player panel not opening when flinging it up too fast.
  4. -
  5. FIX: Gapless playback not working.
  6. -
  7. FIX: Fixed some more crashes.
  8. -
- -

Version 0.11.0 BETA 1

- -
    -
  1. NEW: Embedded lyrics viewing support.
  2. -
  3. NEW: Support for Musixmatchs synced lyrics.
  4. -
  5. IMPROVEMENT: More reliable tag editor.
  6. -
  7. IMPROVEMENT: The player slide up animation is a bit slower and better interpolated. -
  8. -
  9. IMPROVEMENT: Synced translations.
  10. -
  11. FIX: Fixed a view crashes.
  12. -
- -

Version 0.10.0 RC

- -
    -
  1. NEW: More options in the file and folder menus.
  2. -
  3. NEW: Play next option for all bulk actions.
  4. -
  5. IMPROVEMENT: Improved folder loading performance.
  6. -
  7. IMPROVEMENT: New start directory icon.
  8. -
  9. IMPROVEMENT: Synced translations.
  10. -
  11. FIX: Item footer tinting when colored footers are disabled.
  12. -
  13. FIX: Correct tinting of dark toolbar icons.
  14. -
  15. REVERT: Placeholder UI.
  16. -
- -

Version 0.10.0 PREVIEW 2

- -
    -
  1. NEW: The overall loading times and responsiveness should be much better now.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
  5. FIX: Various bug fixes.
  6. -
- -

Version 0.10.0 PREVIEW 1

- -
    -
  1. PREVIEW: Folder support.
  2. -
  3. IMPROVEMENT: Updated internal libraries.
  4. -
  5. FIX: Playback doesn't jump to the next song when the screen is off.
  6. -
- -

Version 0.9.59

- -
    -
  1. FIX: Pixelated heart icon on devices running Android Lollipop.
  2. -
  3. FIX: Too large notification close button on some devices.
  4. -
- -

Version 0.9.58

- -
    -
  1. NEW: Replaced internal png icons with vector icons.
  2. -
  3. IMPROVEMENT: Slightly improved search view.
  4. -
  5. IMPROVEMENT: Minor color related improvements.
  6. -
  7. IMPROVEMENT: Updated internal libraries.
  8. -
  9. IMPROVEMENT: Synced translations.
  10. -
  11. FIX: Play pause animation getting stuck on older versions of Android.
  12. -
- -

Version 0.9.57

- -
    -
  1. NEW: Replaced the app intro with a new one. Thanks to Heinrich Reimer here.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.9.56

- -
    -
  1. IMPROVEMENT: Minor bug fixes and improvements.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.9.55

- -
    -
  1. IMPROVEMENT: Auto hide the fastscroller.
  2. -
  3. IMPROVEMENT: Updated some internal libraries.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
- -

Version 0.9.54 RC 5

- -
    -
  1. FIX: Temporarily fixed critical update bug.
  2. -
- -

Version 0.9.54 RC 4

- -
    -
  1. FIX: More crash and bug fixes.
  2. -
- -

Version 0.9.54 RC 3

- -
    -
  1. FIX: Crash fixes.
  2. -
- -

Version 0.9.54 RC 2

- -
    -

    Note: This is probably the last update until mid march.

    -
  1. NEW: Triple click the headset button to go to the previous song.
  2. -
  3. NEW: Added fading edges to the playing queue.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. IMPROVEMENT: Changed the mini players font.
  8. -
  9. IMPROVEMENT: Sending all meta data to bluetooth receivers.
  10. -
  11. FIX: Album cover covering system bars during opening transition.
  12. -
  13. FIX: Colored navigation bar issue.
  14. -
  15. FIX: Statusbar not being colored in player fragment.
  16. -
  17. FIX: Light statusbar mode not working correctly.
  18. -
  19. FIX: Tab colors.
  20. -
  21. FIX: Tag editor coloring bugs.
  22. -
  23. FIX: Playlist menu not working.
  24. -
- -

Version 0.9.54 RC

- -
    -
  1. NEW: Added transition when opening a playlist.
  2. -
  3. IMPROVEMENT: Adjusted the colors generated by the Palette API for better performance. -
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Fixed a bug with the switches on the settings page.
  8. -
- -

Version 0.9.54 beta 1

- -
    -
  1. NEW: Yet again changed the theme engine, should be quite stable again now.
  2. -
  3. NEW: Improved fastscroller (auto hide is missing right now).
  4. -
- - -

Version 0.9.53 PREVIEW 1

- -
    -
  1. NEW (PREVIEW): Completely new underlying theme engine.
  2. -
  3. IMPROVEMENT: Various things, I don't quite remember.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
- - -

Version 0.9.52

- -
    -
  1. IMPROVEMENT: Updated networking libraries.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.9.51

- -
    -
  1. IMPROVEMENT: Synced translations.
  2. -
  3. FIX: Crash when closing the notification.
  4. -
- -

Version 0.9.51 RC 3

- -
    -
  1. IMPROVEMENT: No longer creating a new instance of the app when clicking the - notification. -
  2. -
  3. IMPROVEMENT: The widget will stay clickable and display the current song after a - device reboot. -
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Artist albums are sorted by year again.
  8. -
  9. FIX: Fixed a FC when scrolling fast through the artist list.
  10. -
- -

Version 0.9.51 RC 2

- -
    -
  1. IMPROVEMENT: Reduced the connect timeout for downloading artist images from 10s to - 500ms, this should fix the issue - where album covers stay blank on slow network. Note that your not already downloaded artist - images will stay blank until you are on a fast enough network. -
  2. -
- -

Version 0.9.51 RC

- -
    -
  1. IMPROVEMENT: Artist image loading and caching.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
  5. FIX: Album sort order (ignore case).
  6. -
  7. FIX: Typos.
  8. -
- -

Version 0.9.51 PREVIEW 1

- -

You can always downgrade by downloading the old apk from APKMirror for example.

- -
    -
  1. NEW: Preference to choose when to automatically download artist images.
  2. -
  3. IMPROVEMENT: Image loading speed, RAM usage and overall performance. This is actually - a huge change under the hood. -
  4. -
  5. IMPROVEMENT: Removed the color highlight of the current song in the playing queue. -
  6. -
  7. IMPROVEMENT: Synced translations.
  8. -
  9. FIX: Minor bug fixes.
  10. -
- -

Version 0.9.50 RC

- -
    -
  1. NEW: Added introduction.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
  5. FIX: Android Marshmallows dark statusbar icons not showing up in the search.
  6. -
  7. FIX: Some coloring bugs with the black theme.
  8. -
- -

Version 0.9.50 PREVIEW 4

- -
    -
  1. NEW: Added black (AMOLED) theme.
  2. -
  3. IMPROVEMENT: Tablets now use the same layout as phones.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Force close when disabling the album cover on the lockscreen.
  8. -
- -

Version 0.9.50 PREVIEW 3

- -
    -
  1. NEW: On Android Marshmallow now uses dark statusbar icons on light primary colors. -
  2. -
  3. NEW: Added clear playing queue menu item to now playing screen.
  4. -
  5. NEW: Added open source licenses dialog.
  6. -
  7. IMPROVEMENT: Synced translations. Also added translation for Spanish US.
  8. -
  9. FIX: Typos.
  10. -
- -

Version 0.9.50 PREVIEW 2

- -
    -
  1. NEW: Added option to disable the blurred album cover on the lockscreen.
  2. -
  3. IMPROVEMENT: Finished the menu for the current song in the playing queue.
  4. -
  5. IMPROVEMENT: Better drag and drop inside playlists.
  6. -
  7. IMPROVEMENT: Synced translations.
  8. -
  9. IMPROVEMENT: Some other minor improvements.
  10. -
  11. FIX: Colored navigation bar issue.
  12. -
  13. FIX: Wrong titles shown in the toolbar when selecting an item.
  14. -
- -

Version 0.9.50 PREVIEW 1

- -
    -
  1. NEW: All new now playing screen. The old one will be available again in the full - update as an option. -
  2. -
  3. NEW: Swipe the album cover left/right to switch the current track.
  4. -
  5. NEW: Double tap on album cover to add to favorites.
  6. -
  7. IMPROVEMENT: Better animation for the "add to favorites heart".
  8. -
  9. IMPROVEMENT: Adjusted overall animation times.
  10. -
  11. IMPROVEMENT: Aligned the shuffle and repeat buttons to the 16dp keyline.
  12. -
  13. IMPROVEMENT: Updated Google icons in the about section.
  14. -
  15. IMPROVEMENT: Adjusted grid padding at the corners.
  16. -
  17. IMPROVEMENT: New card color in the dark theme which now follows the guidelines.
  18. -
  19. IMPROVEMENT: Adjusted menu button size and fixed wrong left padding in search items - without an image. -
  20. -
  21. IMPROVEMENT: Cleaner drag icon for playlists.
  22. -
  23. IMPROVEMENT: Synced translations.
  24. -
  25. FIX: Hopefully finally fixed the double notification bug.
  26. -
  27. FIX: Properly hide and show the bottom bar depending on whether the playlist is empty - or not. -
  28. -
  29. FIX: Updated homepage link.
  30. -
  31. FIX: Some other minor fixes and overall improvements.
  32. -
- -

Version 0.9.47 BETA 2

- -
    -
  1. FIX: Wrong alignment of prev/next buttons on devices below Lollipop.
  2. -
  3. FIX: White playlist icon in the navigation drawer on Android Marshmallow.
  4. -
- -

Version 0.9.47 BETA 1

- -
    -
  1. NEW: HEX color chooser! (Once again you can thank Aidan Follestad for that)
  2. -
  3. IMPROVEMENT: Bottom bar looks cleaner now. (Give me some feedback on Google+)
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Some memory related crashes.
  8. -
- -

Version 0.9.46 BETA 6

- -
    -
  1. NEW: The adjustable grid size feature is back!
  2. -
  3. FIX: Crashes on low memory devices.
  4. -
  5. FIX: Removed the blurry shuffle icon from the song grid view.
  6. -
  7. IMPROVEMENT: Cards in the about section now with 8dp instead of 16dp padding to match - the material design guidelines. -
  8. -
  9. IMPROVEMENT: Synced translations.
  10. -
- -

Version 0.9.46 BETA 5

- -
    -
  1. FIX: Toolbar icons in now playing screen hard to click.
  2. -
- -

Version 0.9.46 BETA 4

- -
    -
  1. FIX: Crash that appeared in BETA 3.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.9.46 BETA 3

- -
    -
  1. IMPROVEMENT: Overall performance should be slightly better.
  2. -
  3. IMPROVEMENT: Random crashes caused by low memory should be less frequent.
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
- -

Version 0.9.46 BETA 2

- -
    -
  1. NEW: Added a drag view to playlist songs for easier rearrangement.
  2. -
  3. IMPROVEMENT: Replaced recently played with history. Songs are always added to the - history - once they are started but their - play count will be only increased if they were played at least half. This makes the top - tracks playlist much more accurate. -
  4. -
  5. IMPROVEMENT: Synced translations.
  6. -
  7. FIX: Cab (contextual action bar) content not visible with light primary colors.
  8. -
- -

Version 0.9.46 BETA 1

- -
    -
  1. NEW: Fade album covers in the now playing screen in.
  2. -
  3. FIX: Play/pause button covering the next button on some devices.
  4. -
  5. FIX: Crash when opening the about section.
  6. -
- -

Version 0.9.45

- -
    -
  1. NEW: Moved the stuff from the about dialog to a whole new screen and added - useful links. -
  2. -
  3. FIX: Even though the Last.fm app and web page say something is scrobbling, the - scrobble doesn't actually get saved at the end. Thanks to Tim Malseed for that. -
  4. -
  5. FIX: Fixed the plural typo in the artist list.
  6. -
  7. FIX: Toolbar had no shadow in the playlist view.
  8. -
- -

Version 0.9.44 BETA 5

- -
    -
  1. FIX: Album image loading delay (white album covers which took ages to load).
  2. -
  3. FIX: Song detail dialog padding.
  4. -
  5. FIX: Sleep timer dialog retains its current time on rotate.
  6. -
  7. IMPROVEMENT: No longer "consume" purchases. This means that your donations are saved - from now on. I made this, so that just in case I make a paid version onetime in future, I - know who has already donated before so I can unlock the paid version for them. -
  8. -
- -

Version 0.9.44 BETA 4

- -
    -
  1. NEW: Support for light colors. The appbar will now automatically change its text and - icon color to be visible on light theme colors. -
  2. -
  3. FIX: Play/pause button offset too far to the right in landscape mode.
  4. -
- -

Version 0.9.44 BETA 3

- -
    -
  1. NEW: See changes from BETA 2, as BETA 2 was only released internal.
  2. -
  3. IMPROVEMENT: Synced translations.
  4. -
- -

Version 0.9.44 BETA 2

- -
    -
  1. NEW: Added option to support the development by donating.
  2. -
  3. FIX: Fixed status bar coloring for Lollipop and Marshmallow.
  4. -
- -
    -
  1. IMPROVEMENT: Completely rewritten color chooser. Had great help from Aidan Follestad here once again. -
  2. -
  3. IMPROVEMENT: Increased album cover quality when selecting the "ignore media store - covers" option. -
  4. -
  5. REVERT: Brought back the "Tag editor" label to the song tag editor. -
  6. -
  7. FIX: Last song in the song view not showing up. -
  8. -
  9. FIX: Favorites playlist heart icon not showing up when initially added until restart. -
  10. -
  11. FIX: Fixed the bug where the alternative progress slider always stayed - black on some devices. -
  12. -
- -

Version 0.9.43

- -
    -
  1. FIX: "Play next" not always working. -
  2. -
  3. FIX: Display another song then actually playing. -
  4. -
  5. FIX: Updated strings to better follow the Material Design "writing" guidelines. -
  6. -
- -

Version 0.9.43 BETA 6

- -
    -
  1. FIX: Typo caused 0.9.43 BETA 5 to crash on systems below Marshmallow. -
  2. -
- -

Version 0.9.43 BETA 5

- -
    -
  1. NEW: Support for Android Marshmallow's permission system. -
  2. -
  3. IMPROVEMENT: The sliding panel should open and close a bit smoother now. -
  4. -
- -

Version 0.9.43 BETA 4

- -
    -
  1. NEW: Improved the color picking with the "Colored Playback Controls". Leave some - feedback at the Google+ - Community. -
  2. -
- -

Version 0.9.43 BETA 3

- -
    -
  1. NEW: "Colored Playback Controls". You can enable it from the settings to tint the - play/pause, repeat and shuffle button as well as the progress slider with the album covers - vibrant color. -
  2. -
- -

Version 0.9.43 BETA 2

- -
    -
  1. IMPROVEMENT: Transition between the bar colors should be a bit smoother now. -
  2. -
  3. FIX: Playlist view having wrong background color on dark theme. -
  4. -
  5. FIX: Bottom bar sometimes disappearing from itself after changing the theme. -
  6. -
  7. FIX: Progress slider being barely visible with dark theme and black accent or light - theme - and white accent. -
  8. -
  9. FIX: Progress slider stopped working when switching between alternative and regular - progress slider. -
  10. -
  11. FIX: Removed the unneeded menu button from the artist and album list. -
  12. -
  13. FIX: Album and artist list not scrolling when trying to drag from their title bar. -
  14. -
  15. FIX: Removed unnecessary statusbar elevation in the now playing view. -
  16. -
- -

Version 0.9.43 BETA 1

- -
    -
  1. NEW: Well, the changelog dialog itself obviously ;) -
  2. -
  3. NEW: Sliding panel! (You can hide it from the settings if you don't like it). -
  4. -
  5. IMPROVE: Much better color generation. -
  6. -
  7. REVERT: Brought back the shuffle button to the songs list. -
  8. -
  9. FIX: Last.fm scrobbling. -
  10. -
  11. FIX: Readability issues with the black and white accent colors. -
  12. -
  13. FIX: Playlists not being updated when adding a new playlist. -
  14. -
  15. FIX: Some icons not being colored correctly. -
  16. -
  17. FIX: Images downloaded from Last.fm having low resolution. Note: If you currently - have pixelated artist images you may have to clear the cache or reinstall phonograph for - changes to take affect. -
  18. -
  19. TRANSLATIONS: Translation updates from OneSky. -
  20. -
- - \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/App.java b/app/src/main/java/com/kabouzeid/gramophone/App.java index 1b522ec5..6fed7206 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/App.java +++ b/app/src/main/java/com/kabouzeid/gramophone/App.java @@ -1,6 +1,7 @@ package com.kabouzeid.gramophone; import android.app.Application; +import android.content.Context; import android.os.Build; import androidx.annotation.NonNull; @@ -10,6 +11,17 @@ import com.anjlab.android.iab.v3.TransactionDetails; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.appshortcuts.DynamicShortcutManager; +import org.jellyfin.apiclient.interaction.AndroidConnectionManager; +import org.jellyfin.apiclient.interaction.AndroidDevice; +import org.jellyfin.apiclient.interaction.ApiClient; +import org.jellyfin.apiclient.interaction.ApiEventListener; +import org.jellyfin.apiclient.interaction.connectionmanager.ConnectionManager; +import org.jellyfin.apiclient.interaction.device.IDevice; +import org.jellyfin.apiclient.interaction.http.IAsyncHttpClient; +import org.jellyfin.apiclient.model.logging.ILogger; +import org.jellyfin.apiclient.model.serialization.IJsonSerializer; +import org.jellyfin.apiclient.model.session.ClientCapabilities; + /** * @author Karim Abou Zeid (kabouzeid) */ @@ -19,6 +31,7 @@ public class App extends Application { public static final String PRO_VERSION_PRODUCT_ID = "pro_version"; private static App app; + private static ApiClient apiClient; private BillingProcessor billingProcessor; @@ -64,6 +77,25 @@ public class App extends Application { return BuildConfig.DEBUG || app.billingProcessor.isPurchased(PRO_VERSION_PRODUCT_ID); } + public static ConnectionManager getConnectionManager(Context context, IJsonSerializer jsonSerializer, ILogger logger, IAsyncHttpClient httpClient) { + String appName = context.getString(R.string.app_name); + String appVersion = BuildConfig.VERSION_NAME; + + IDevice device = new AndroidDevice(context); + ClientCapabilities capabilities = new ClientCapabilities(); + ApiEventListener eventListener = new ApiEventListener(); + + return new AndroidConnectionManager(context, jsonSerializer, logger, httpClient, appName, appVersion, device, capabilities, eventListener); + } + + public static ApiClient getApiClient() { + return apiClient; + } + + public static void setApiClient(ApiClient client) { + apiClient = client; + } + public static App getInstance() { return app; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/LoginActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/LoginActivity.java new file mode 100644 index 00000000..cba07990 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/LoginActivity.java @@ -0,0 +1,116 @@ +package com.kabouzeid.gramophone.ui.activities; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import androidx.annotation.NonNull; +import androidx.appcompat.widget.Toolbar; + +import com.kabouzeid.appthemehelper.ThemeStore; +import com.kabouzeid.gramophone.App; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; + +import org.jellyfin.apiclient.interaction.AndroidCredentialProvider; +import org.jellyfin.apiclient.interaction.ConnectionResult; +import org.jellyfin.apiclient.interaction.GsonJsonSerializer; +import org.jellyfin.apiclient.interaction.Response; +import org.jellyfin.apiclient.interaction.VolleyHttpClient; +import org.jellyfin.apiclient.interaction.connectionmanager.ConnectionManager; +import org.jellyfin.apiclient.interaction.http.IAsyncHttpClient; +import org.jellyfin.apiclient.logging.AndroidLogger; +import org.jellyfin.apiclient.model.apiclient.ServerCredentials; +import org.jellyfin.apiclient.model.logging.ILogger; +import org.jellyfin.apiclient.model.serialization.IJsonSerializer; +import org.jellyfin.apiclient.model.users.AuthenticationResult; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class LoginActivity extends AbsBaseActivity implements View.OnClickListener { + public static final String TAG = SplashActivity.class.getSimpleName(); + + @BindView(R.id.toolbar) + Toolbar toolbar; + @BindView(R.id.username) + EditText username; + @BindView(R.id.password) + EditText password; + @BindView(R.id.server) + EditText server; + @BindView(R.id.login) + Button login; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + setDrawUnderStatusbar(); + ButterKnife.bind(this); + + setStatusbarColorAuto(); + setNavigationbarColorAuto(); + setTaskDescriptionColorAuto(); + + setUpViews(); + } + + private void setUpViews() { + setUpToolbar(); + setUpOnClickListeners(); + } + + private void setUpToolbar() { + toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + + private void setUpOnClickListeners() { + login.setOnClickListener(this); + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + public void onClick(View v) { + if (v == login) { + final Context context = this; + IJsonSerializer jsonSerializer = new GsonJsonSerializer(); + ILogger logger = new AndroidLogger(TAG); + IAsyncHttpClient httpClient = new VolleyHttpClient(logger, this); + + AndroidCredentialProvider credentialProvider = new AndroidCredentialProvider(jsonSerializer, this, logger); + ConnectionManager connectionManager = App.getConnectionManager(context, jsonSerializer, logger, httpClient); + connectionManager.Connect(server.getText().toString(), new Response() { + @Override + public void onResponse(ConnectionResult result) { + App.setApiClient(result.getApiClient()); + ServerCredentials serverCredentials = new ServerCredentials(); + serverCredentials.AddOrUpdateServer(result.getServers().get(0)); + App.getApiClient().AuthenticateUserAsync(username.getText().toString(), password.getText().toString(), new Response() { + @Override + public void onResponse(AuthenticationResult result) { + if (result.getAccessToken() == null) return; + serverCredentials.GetServer(result.getServerId()).setAccessToken(result.getAccessToken()); + credentialProvider.SaveCredentials(serverCredentials); + context.startActivity(new Intent(context, MainActivity.class)); + } + }); + } + }); + } + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 89bbb218..037de988 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -53,8 +53,6 @@ import butterknife.ButterKnife; public class MainActivity extends AbsSlidingMusicPanelActivity { public static final String TAG = MainActivity.class.getSimpleName(); - public static final int INTRO_REQUEST = 100; - public static final int PURCHASE_REQUEST = 101; private static final int LIBRARY = 0; private static final int FOLDERS = 1; @@ -70,8 +68,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Nullable private View navigationDrawerHeader; - private boolean blockRequestPermissions; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -94,7 +90,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { private void setMusicChooser(int key) { if (!App.isProVersion() && key == FOLDERS) { Toast.makeText(this, R.string.folder_view_is_a_pro_feature, Toast.LENGTH_LONG).show(); - startActivityForResult(new Intent(this, PurchaseActivity.class), PURCHASE_REQUEST); key = LIBRARY; } @@ -120,27 +115,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { currentFragment = (MainActivityFragmentCallbacks) getSupportFragmentManager().findFragmentById(R.id.fragment_container); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == INTRO_REQUEST) { - blockRequestPermissions = false; - if (!hasPermissions()) { - requestPermissions(); - } - checkSetUpPro(); // good chance that pro version check was delayed on first start - } else if (requestCode == PURCHASE_REQUEST) { - if (resultCode == RESULT_OK) { - checkSetUpPro(); - } - } - } - - @Override - protected void requestPermissions() { - if (!blockRequestPermissions) super.requestPermissions(); - } - @Override protected View createContentView() { @SuppressLint("InflateParams") @@ -166,7 +140,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { new Handler().postDelayed(() -> setMusicChooser(FOLDERS), 200); break; case R.id.buy_pro: - new Handler().postDelayed(() -> startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST), 200); + new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, PurchaseActivity.class)), 200); break; case R.id.action_scan: new Handler().postDelayed(() -> { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SplashActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SplashActivity.java new file mode 100644 index 00000000..e627d047 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SplashActivity.java @@ -0,0 +1,60 @@ +package com.kabouzeid.gramophone.ui.activities; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import com.kabouzeid.gramophone.App; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; + +import org.jellyfin.apiclient.interaction.AndroidCredentialProvider; +import org.jellyfin.apiclient.interaction.ConnectionResult; +import org.jellyfin.apiclient.interaction.GsonJsonSerializer; +import org.jellyfin.apiclient.interaction.Response; +import org.jellyfin.apiclient.interaction.VolleyHttpClient; +import org.jellyfin.apiclient.interaction.connectionmanager.ConnectionManager; +import org.jellyfin.apiclient.interaction.http.IAsyncHttpClient; +import org.jellyfin.apiclient.logging.AndroidLogger; +import org.jellyfin.apiclient.model.apiclient.ConnectionState; +import org.jellyfin.apiclient.model.logging.ILogger; +import org.jellyfin.apiclient.model.serialization.IJsonSerializer; + +import butterknife.ButterKnife; + +public class SplashActivity extends AbsBaseActivity { + public static final String TAG = SplashActivity.class.getSimpleName(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_splash); + setDrawUnderStatusbar(); + ButterKnife.bind(this); + + setStatusbarColorAuto(); + setNavigationbarColorAuto(); + setTaskDescriptionColorAuto(); + + IJsonSerializer jsonSerializer = new GsonJsonSerializer(); + ILogger logger = new AndroidLogger(TAG); + IAsyncHttpClient httpClient = new VolleyHttpClient(logger, this); + + AndroidCredentialProvider credentialProvider = new AndroidCredentialProvider(jsonSerializer, this, logger); + if (credentialProvider.GetCredentials().getServers().size() == 0) { + Intent intent = new Intent(this, LoginActivity.class); + startActivity(intent); + } else { + final Context context = this; + ConnectionManager connectionManager = App.getConnectionManager(this, jsonSerializer, logger, httpClient); + connectionManager.Connect(credentialProvider.GetCredentials().getServers().get(0), new Response() { + @Override + public void onResponse(ConnectionResult result) { + if (result.getState() != ConnectionState.SignedIn) return; + App.setApiClient(result.getApiClient()); + context.startActivity(new Intent(context, MainActivity.class)); + } + }); + } + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 66e4234f..26265162 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -74,9 +74,6 @@ public final class PreferenceUtil { public static final String IGNORE_MEDIA_STORE_ARTWORK = "ignore_media_store_artwork"; - public static final String LAST_CHANGELOG_VERSION = "last_changelog_version"; - public static final String INTRO_SHOWN = "intro_shown"; - public static final String AUTO_DOWNLOAD_IMAGES_POLICY = "auto_download_images_policy"; public static final String START_DIRECTORY = "start_directory"; @@ -449,24 +446,6 @@ public final class PreferenceUtil { return mPreferences.getBoolean(ARTIST_COLORED_FOOTERS, true); } - public void setLastChangeLogVersion(int version) { - mPreferences.edit().putInt(LAST_CHANGELOG_VERSION, version).apply(); - } - - public final int getLastChangelogVersion() { - return mPreferences.getInt(LAST_CHANGELOG_VERSION, -1); - } - - @SuppressLint("CommitPrefEdits") - public void setIntroShown() { - // don't use apply here - mPreferences.edit().putBoolean(INTRO_SHOWN, true).commit(); - } - - public final boolean introShown() { - return mPreferences.getBoolean(INTRO_SHOWN, false); - } - public final boolean rememberShuffle() { return mPreferences.getBoolean(REMEMBER_SHUFFLE, true); } diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 00000000..daf280dd --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +