1. Урок 1. 00:08:58
    Course Demo
  2. Урок 2. 00:03:44
    Using the Source Code
  3. Урок 3. 00:03:59
    Dependencies and SDK Versions
  4. Урок 4. 00:06:58
    Retrieving Audio Data from Firestore
  5. Урок 5. 00:04:54
    Building the Layouts
  6. Урок 6. 00:03:10
    fragment_home
  7. Урок 7. 00:03:44
    fragment_media_controller
  8. Урок 8. 00:04:18
    List-item Layouts
  9. Урок 9. 00:12:17
    RecyclerView Adapter for HomeFragment
  10. Урок 10. 00:03:54
    RecyclerView Setup for HomeFragment
  11. Урок 11. 00:07:48
    Retrieving Firestore Data in HomeFragment
  12. Урок 12. 00:06:24
    Improving the Query Experience in HomeFragment
  13. Урок 13. 00:10:02
    RecyclerView Setup for CategoryFragment
  14. Урок 14. 00:06:20
    Retrieving Firestore Data in CategoryFragment
  15. Урок 15. 00:01:11
    Testing Firestore Query in CategoryFragment
  16. Урок 16. 00:09:44
    RecyclerView Setup for PlaylistFragment
  17. Урок 17. 00:13:36
    Retrieving Firestore Data in PlaylistFragment
  18. Урок 18. 00:05:49
    MediaController Setup
  19. Урок 19. 00:06:21
    Implementing Fragment Transactions
  20. Урок 20. 00:05:43
    Custom Fragment Management
  21. Урок 21. 00:05:00
    Preventing Fragments from Stacking
  22. Урок 22. 00:02:53
    Fragment Back Navigation
  23. Урок 23. 00:06:11
    Implementing the Fragment Navigation
  24. Урок 24. 00:04:48
    ActionBar Titles
  25. Урок 25. 00:04:52
    Handling Configuration Changes Part 1
  26. Урок 26. 00:09:48
    Service Class to Stream Audio
  27. Урок 27. 00:10:01
    MediaBrowserServiceCompat Basics
  28. Урок 28. 00:10:33
    Audio Focus and Audio Noisy Intent
  29. Урок 29. 00:07:56
    ExoPlayer Setup Part 1 (Initialization)
  30. Урок 30. 00:11:42
    ExoPlayer Setup Part 2 (playing a media file)
  31. Урок 31. 00:12:24
    ExoPlayer Setup Part 3 (tracking playback state)
  32. Урок 32. 00:14:51
    Associating the ExoPlayer with the Media Service
  33. Урок 33. 00:15:28
    Starting and Binding to the Media Service
  34. Урок 34. 00:13:45
    Playing the First Media Files
  35. Урок 35. 00:10:25
    Dynamic Playlists with an Application Instance
  36. Урок 36. 00:09:04
    Playing a Media Item with OnClick
  37. Урок 37. 00:03:55
    Subscribing to a Playlist
  38. Урок 38. 00:05:18
    Setting the Queue Position
  39. Урок 39. 00:08:21
    Resolving the Playlist Subscription Issue
  40. Урок 40. 00:16:00
    Detecting Changes to the Playback State
  41. Урок 41. 00:05:30
    Updating the UI with Media Information
  42. Урок 42. 00:12:33
    Broadcast Receiver for Seekbar Progress
  43. Урок 43. 00:06:39
    Seeking Playback
  44. Урок 44. 00:11:44
    Updating the UI when Playback is Complete
  45. Урок 45. 00:07:13
    Handling Configuration Changes Part 2
  46. Урок 46. 00:16:57
    Restoring Recently Played Media
  47. Урок 47. 00:02:54
    Notification Overview
  48. Урок 48. 00:08:19
    Notifications on Android Oreo
  49. Урок 49. 00:06:48
    Notification Basics
  50. Урок 50. 00:08:38
    Media Button Receivers and Pending Intents
  51. Урок 51. 00:08:52
    Creating and Destroying a Notification
  52. Урок 52. 00:04:02
    Controlling Playback from a Notification
  53. Урок 53. 00:05:02
    Handling Configuration Changes Part 3
  54. Урок 54. 00:11:30
    Setting a Bitmap in a Notification