ст. Лісун А.Г., к.т.н. Супруненко О.О.
Черкаський національний університет імені Богдана
Хмельницького
Модель розширення функцій аудіоплеєра
з врахуванням вподобань користувача
При використанні сервісних програмних додатків є
можливість збирати інформацію про вподобання користувача, що у подальшому можливо
використовувати для автоматизації пошуку та впорядкування інформації для потреб
користувача.
Наочним прикладом реалізації такого сервісного
додатку є аудіоплеєр з функцією підбору музичних композицій за вподобаннями
користувача. Розроблюваний додаток створюється для мобільної платформи Android і має певні обмеження. До обмежень належать: непостійний (періодичний)
доступ до мережі Internet, обмежений обсяг пам’яті та обмеження на
авторські права аудіокомпозицій. Структурна схема програмного додатку з функцією формування плейлістів на основі вподобань користувача наведена на рис. 1.
На рисунку представлено загальну структуру
аудіоплеєра та взаємодію мобільного додатку з елементами ОС Android. Основним
функціональним модулем додатку є модуль відтворення аудіокомпозицій, який безпосередньо
відповідає за відтворення аудіофайлів. Він складається з ряду елементів: блоку
ідентифікації композиції, блоку плейлиста, блоку історії відтворення композицій
«playback history», блоку ідентифікації часу програвання.
При виборі певної композиції у модулі
«Користувацький інтерфейс» відбувається передача ідентифікаторів аудіофайлів,
серед яких є і ідентифікатор вибраної композиції, в блок «Плейліст» модуля
відтворення аудіокомпозиції. Передача набору ідентифікаторів аудіокомпозицій, а
не лише ідентифікатору вибраної композиції обумовлена тим, що модуль відтворення
аудіокомпозиції має бути повністю автономним і без допомоги модуля
«Користувацький інтерфейс» відтворювати послідовність аудіокомпозицій.

Рисунок. 1 – Структурна схема аудіоплеєра під ОС Android з функцією
формування плейлістів на основі вподобань користувача
Після отримання у блоці
«Плейліст» набору ідентифікаторів композицій, «Блок ідентифікації композиції»
отримує ідентифікатор вибраної композиції і робить запит до бази даних медіафайлів,
яка є частиною ОС Android [1]. Результатом запиту є отримання модулем
відтворення аудіокомпозиції такої інформації про аудіокомпозицію: назва
композиції, виконавець, альбом, жанр та шлях до аудіофайлу на диску. Шлях до
аудіофайлу передається в блок Media Player, який є частиною ОС Android, для
подальшого відтворення цього аудіофайлу [2].
Після початку
відтворення композиції модуль відтворення аудіокомпозиції активізує у блоці «Користувацький
інтерфейс» відповідну композицію і візуалізує назву композиції, ім’я виконавця,
назву альбому та жанр для користувача. Аналогічна послідовність дій
відбувається при переході до наступного ідентифікатора аудіокомпозиції в блоці
«Плейліст» в результаті перемикання користувачем або закінчення відтворення
попередньої аудіокомпозиції.
Блок «Playback History»
необхідний для зберігання послідовності відтворення аудіокомпозицій в режимі
«перемішаного порядку відтворення» (shuffle mode), в якому набір
ідентифікаторів, що передається з модуля «Користувацький інтерфейс», випадковим
чином перемішується. Тому без блоку «Playback History» не можливо відтворити
зворотній порядок програвання аудіокомпозицій, що унеможливлює реалізацію
функції «перейти до попередньої композиції» в режимі «перемішаного порядку
відтворення».
В аудіододатку
реалізований також підбір композицій на основі вподобань користувача, який
функціонує завдяки взаємодії блоку ідентифікації часу програвання (модуль
відтворення аудіокомпозицій), модуля формування моделі вподобань користувача, блоку
кешу та модуля зв’язку з сервером через API.
Блок ідентифікації часу
програвання дозволяє зафіксувати ті композиції, які були прослухані більше ніж
наполовину, та передати у блок кешу «Дані про кількість прослуховувань кожного
жанру» команду на збільшення лічильника кількості прослуховувань для
відповідного жанру на одиницю.
Результатом роботи
модуля формування моделі вподобань користувача є набір пар «жанр-кількість
рекомендованих композицій, які потрібно отримати для даного жанру», який отримується
наступним чином: 1) Блок групування даних отримує дані збережені в кеші «Дані
про кількість прослуховувань кожного жанру», сортує набір за спаданням
кількості прослуховувань. 2) У блоці статистичної обробки отриманий масив
ділиться навпіл і для подальшої обробки вибирається його перша частина, а також
відбувається нормування кількості прослуховувань. Формується пара
«жанр-кількість композицій, які потрібно вибрати для даного жанру», утворені
пари групуються у набір, який і служить вхідними даними для модуля зв’язку з
сервером через API.
Модуль зв’язку з
сервером через API робить запит на сервер та вибирає дані про аудіокомпозиції
деякого жанру в кількості, яка була визначена в блоці статистичної обробки.
Після отримання такі данні зберігаються в кеш «Дані про рекомендовані
аудіокомпозиції» і відображаються у блоці «Користувацький інтерфейс». Отримавши
такі дані користувач може переглянути інформацію про кожну композицію.
Наприклад, по кліку формується запит для вибраної аудіокомпозиції до пошукової
системи і відбувається виконання цього запиту за допомогою браузера.
Таким чином,
реалізований мобільний додаток аудіоплеєра дозволяє здійснювати автоматичний
пошук інформації про аудіокомпозиції за вподобаннями користувача та формування
плейлистів з посиланнями на аудіокомпозиції для розширення набору аудіофайлів
для визначеного користувача.
Література
1. Reto Meier. Professional Android Application Development / Reto Meier. – Wrox, March 1, 2010. – 193 с.
2. Media Playback. Режим доступу: https://developer.android.com/guide/topics/ media/mediaplayer.html. Перевірено: 21.05.2016.