Проект представляет собой небольшое приложение для поиска треков, использующее API сервиса iTunes. Приложение предоставляет следующую функциональность:
- Поиск треков;
- Добавление и удаление треков в избранное и в плейлисты;
- Просмотр полной информации о треке;
- Прослушивание трека;
- Создание плейлистов;
- Отображение истории прослушенных треков.
Приложение должно поддерживать устройства, начиная с Android 6.0 (minSdkVersion = 23)
![](https://private-user-images.githubusercontent.com/116573128/291961707-f6c1d4af-49cf-438a-b807-cd5ace7298fd.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkxOTYxNzA3LWY2YzFkNGFmLTQ5Y2YtNDM4YS1iODA3LWNkNWFjZTcyOThmZC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNmUyM2FmOTYxZTJhNDMyNGE2ZDFlNjRhMzg5YmQ3NDFhMzc4MGE2NTc2OGMxNTUyZDA1MzE4N2E0ZGRmYzJhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.FuNPqL6KlGyEaySJ7u5rpcpzuGoUAwcGVXe-k14aUM0)
![](https://private-user-images.githubusercontent.com/116573128/292045869-feacfe41-e2e5-4b1a-ad5a-5f11d727a9e2.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDQ1ODY5LWZlYWNmZTQxLWUyZTUtNGIxYS1hZDVhLTVmMTFkNzI3YTllMi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMzY2MWIyMjg1ZGMwZWNjMTMwNTFlYThlNjA3Y2EwOTg2ZTE4Yjc5YmI3MjJmNWY2MTI1MDJmNjEyNWU2NzI5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.kwvbb9aB-MzFpiwV7mU5cwQmdOfMxXQFWHBYtiP360M)
При вводе текста в поле поиска происходит поиск треков с помощью сервиса iTunes. Поиск произодится автоматически через 2 секунды после ввода или по нажатию ✅ на клавиатуре. В случае успеха отображает список треков, иначе показывает сообщение об ошибке. Также экран отображает историю последних десяти просмотренных треков с возможностью ее очистить.
![](https://private-user-images.githubusercontent.com/116573128/292047509-fda76abc-dda6-4ed7-9f5e-bd627442e2ff.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDQ3NTA5LWZkYTc2YWJjLWRkYTYtNGVkNy05ZjVlLWJkNjI3NDQyZTJmZi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MmE0NWJiN2EyYzZiZDlhOWU4OGViOWUxMTJlNzZmMGIzYWU2OGIwMjNiYTZkM2QxZDU5ODdkYmQ4ZmUzZjJjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.hi1dqF0XQdM3BOCgrMrCLYocvIknjGcKov1g8UUkDfM)
![](https://private-user-images.githubusercontent.com/116573128/292047546-7ab9023d-19b6-438f-b82f-d1208be031c1.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDQ3NTQ2LTdhYjkwMjNkLTE5YjYtNDM4Zi1iODJmLWQxMjA4YmUwMzFjMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02MTcxZjhmOWU4OTUzOWE4YmZiMDI5ZjY0NzRhOWVlN2E4ZjA3Y2RkOGViNDRkMjljYzg5NjQxMWIyYzU5OWIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.wMNUR2xqL0irDs-z3j2OjooW1ceJOTdJ7zvwkVsPhQc)
На экране можно воспроизвести отрывок трека, добавить его в избранное или в конкретный плейлист. Также на нем отображается вся информация о треке.
![](https://private-user-images.githubusercontent.com/116573128/292049784-22a4862d-caca-4c14-8cb2-d9a6b597e03f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDQ5Nzg0LTIyYTQ4NjJkLWNhY2EtNGMxNC04Y2IyLWQ5YTZiNTk3ZTAzZi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zNWNiY2RjYTc3OTJjY2U0NzVmNzJiOGZjM2I0NWI1YmEyOWJhOGJlNWViYTcxMWE5ZjI2MmM0MTI3Y2I1NzM1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.dj7RAFY55eUBxpl2GA-BTStA04CulhzAmpE7Vhvlitw)
![](https://private-user-images.githubusercontent.com/116573128/292049814-420b5d33-e929-4fe4-a7ca-6f01f64db9ee.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDQ5ODE0LTQyMGI1ZDMzLWU5MjktNGZlNC1hN2NhLTZmMDFmNjRkYjllZS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yZmIwYmQ3ODNhZjM5ZWMxNTBkYjkxMmMyMzRmZTk0NmQwZWUyOGZiNGUzMDA4OTJiMWViMGJmNTgyNzY4NTBkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.vaQCs8IcI5waQUobkI4wR9sBOgBYdxFJuS2Pwtim5GE)
Экран поделен на два фрагмента. В первом отображается список избранных треков с возможностью перехода в плеер. Во втором отображается список всех созданных плейлистов с возможностью перехода на экран "Детали плейлиста" и создания нового плейлиста.
![](https://private-user-images.githubusercontent.com/116573128/292050728-20019324-e435-44fc-9cbd-3e96fa8532ea.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUwNzI4LTIwMDE5MzI0LWU0MzUtNDRmYy05Y2JkLTNlOTZmYTg1MzJlYS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDM2NmQwZjQ5M2Q3MzcyYjBmNGU2MzZkNWE3ZGViZDg2NDllMmVmOGIxMjM2OTEyNzE4MjVjZjY1NDExZDRjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.Il1vwqrEwEYYXmtzVwXi3g4VUs5T--pIC7XnJ_sxNvU)
![](https://private-user-images.githubusercontent.com/116573128/292050775-44bde234-638c-4ba8-b266-aa9ee66a5f33.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUwNzc1LTQ0YmRlMjM0LTYzOGMtNGJhOC1iMjY2LWFhOWVlNjZhNWYzMy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zYjdhZGI5OGQxNWM5ZTA1Mzc5MjI3NzM1N2M4NTRlYjc3YzViZmI1N2Q5MGIwOTc2N2EwZGEyMWI4ZGY3NzhkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.WkmuOtbhpmqiYQ72ZK_wd4qBVH5a322vRFSovV2BkbE)
На экране присутствует следующий функционал:
- Отображение информации о плейлисте (обложку, название и описание плейлиста, количество треков и общее время);
- Отображение списка треков с возможностью растянуть его на весь экран;
- Поделиться плейлистом текстовым сообщением (название и список треков) в другом приложении;
- Редактировать информацию плейлиста (название, обложка, описание);
- Удалить плейлист;
- При долгом нажатии на трек его можно удалить.
![](https://private-user-images.githubusercontent.com/116573128/292051160-b656ede6-8e2f-44cc-9040-e23605c88994.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUxMTYwLWI2NTZlZGU2LThlMmYtNDRjYy05MDQwLWUyMzYwNWM4ODk5NC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mZTFjOThmNmRmMGFiMDJmNjllYjdiOWE1M2I1ZjMxZGU3Njg1NjA5OWZmNWIxNTRkNTVkMzcyNWYwOTY2NDFhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.zst6BfX8TmgOxQFlG0sECPu1qxMOQaRYgqpmKOmJ440)
![](https://private-user-images.githubusercontent.com/116573128/292051189-653e2bfd-425c-429b-957c-1e0d28a91e51.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUxMTg5LTY1M2UyYmZkLTQyNWMtNDI5Yi05NTdjLTFlMGQyOGE5MWU1MS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mMzg5YzQ2NTdlYzdkMWVmYzQ2NWZkOGVmNDRmYmY3NTJhMmVmMzFhYWVmNWVmODQ1OTFmOGQ4NWVhYWRjMmEwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.fYfs982lqoXKwJwKYdHqc3Zj8tLgQl7gzlHtWZtB9BA)
Этот же экран используется создания нового плейлиста. С помощью него можно редактировать название и описание плейлиста и выбирать обложку из изображений, представленных на устройстве.
![](https://private-user-images.githubusercontent.com/116573128/292051440-4cb0796e-8d2b-4187-a7f3-82251fc74531.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUxNDQwLTRjYjA3OTZlLThkMmItNDE4Ny1hN2YzLTgyMjUxZmM3NDUzMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MTQ4OTViYjU1M2ExNTU5MGVlZDk5ZmFhODc4NDFhMWZlOGUzMjI4MWMzZTA1MDAyMDgzNmFjMzc4ZjZlYmY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.1N48dRTjVfV8AF9MrcepYkfyqBIkYUUnacWMsieuuW4)
![](https://private-user-images.githubusercontent.com/116573128/292051523-1b66c464-8286-4426-9e48-31b7ad906f39.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk2NDM2MzAsIm5iZiI6MTcxOTY0MzMzMCwicGF0aCI6Ii8xMTY1NzMxMjgvMjkyMDUxNTIzLTFiNjZjNDY0LTgyODYtNDQyNi05ZTQ4LTMxYjdhZDkwNmYzOS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyOVQwNjQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04ZTk2NjFkNTM3YjBmMTUzYTFiOTk1ODM1YTZjMDUwOGFiZDI1N2FmNDNkMjEyOGFlMzkyNjY4MWM0OTViMWFkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.r9uqLPXBIvIEIi7cgjbC4oF1PxDdNE6yHM66DWd6xks)
На экране можно:
- Переключить тему (изначально приложение запускается с темой, выбранной в системе);
- Поделиться приложением (делиться ссылкой);
- Написать в поддержку (заполняет форму обращения в почтовом приложении для связи с разработчиком);
- Посмотреть пользовательское соглашение (открывает браузер с ссылкой на соглашение).
kotlin, sharedpreferences, recyclerview, mvvm, intent, fragment, glide, retrofit2, bottomnavigationview, bottomsheet, mediaplayer, constraint-layout, androidsdk, livedata, koin, room-database, viewpager2, singleactivity, jetpack-navigation-component, corutine-flow.