Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Информация о имеющемся приложении:

Полностью готовое и рабочее приложение, которое отображает вебвью с онлайн радио. Требуется сделать несколько небольших функций для проигрывания онлайн радио в нативном плеере вместо вебвьюшного.

Задача:

1. Сделать чтобы стартовый сплешскрин имел черный фон с заданной картинкой (сейчас задана картинка, но фон белый).

2. Сделать чтобы все активити и вебвью были растянуты на весь экран (включая верхний прогрессбар, который нужно сделать прозрачным), при загрузке приложения в GET запросе к стартовому URL передавалать высоту верхнего прогрессбара в пикселях (например "/?androidheight=20"). Это нужно для того, чтобы фон вебстраниц лежал под прогрессбаром, а не прогрессбар был фиксированного цвета.

2. Загружаемый вебвью (основная активити), который показывается после сплешскрина, должен быть с прозрачным фоном и лежать поверх сплешскрина (чтобы во время стартовой загрузки, пока будет происходить загрузка контента в вебвью лещащий поверх сплешскрина, сплешскрин был виден).

3. Сделать регулируемую прозрачность прогрессбара (который показывается когда загружается какая либо страница в вебвью), можно вынести отдельной переменной или просто показать где это можно задавать в java файлах.

4. Сделать возможность вызова внутренней функций проигрывания музыки (онлайн радио стрим) в приложении из Javascript выполняемого в вебвью.

Логика вызова следующая:

а. Вебстраница вызывает функцию нативного плеера, передавая ей параметры - массив URL на аудио потоки, массив URL на получение информации об играемом треке (название, описание, обложка).

б. Вебстраница вызывает функцию проверки статуса проигрывания - приложение возвращает в webview (например путем вызова какой то функции расположенной в JS файле внутри вебвью) свой текущий статус проигрывания (подключается к удаленному стриму, играет или остановлено).

в. Когда экран заблокирован - на экране блокировки показан стандартный поп-ап нативного плеера с информацией о треке и кнопки переключения вперед-назад, в случае использование кнопок переключения приложение переключает следующий-предыдущий стрим из массива URL аудиопотоков, которые мы передали из webview при вызове первоначальной функции нативного плеера.

5. Проверить чтобы API Level приложения соответствовал актуальному принимаемому в Playmarket для постинга, добавить в манифест все необходимые параметры для воспроизведения потоковой музыки, но в то же время чтобы приложение было доступно и для более ранних версий Android (чтобы функция проигрывания музыки в нативном плеере работала).

Предлагаемое API для функции вызова нативного плеера:

1. Вызов функции показа нативного плеера из webview:

{"URL":"https://clubvid.xyz/level1","AUDIOINFO":"https://luxuryloungeradio.com/?trackinfo_channel=1","CHANNELID":"1","INTERVAL":"5"},{"URL":"https://clubvid.xyz/level2","AUDIOINFO":"https://luxuryloungeradio.com/?trackinfo_channel=2","CHANNELID":"2","INTERVAL":"5"},{"URL":"https://clubvid.xyz/level3","AUDIOINFO":"https://luxuryloungeradio.com/?trackinfo_channel=3","CHANNELID":"3","INTERVAL":"5"}

URL - URL адрес радио потока (MP3 стрим)

AUDIOINFO - URL адрес где приложение должно запрашивать и получать данные о проигрываемом треке с заданной регулярностью INTERVAL секунд

CHANNELID - идентификатор канала

2. Ответ от удаленного сервера на запрос информации о проигрываемом треке:

{"TITLE":"Title","DESCRIPTION":"Artist name","ARTWORK":"https://luxuryloungeradio.com/covers/2222.jpg"}

TITLE - Название трека

DESCRIPTION - описание (артист, альбом)

ARTWORK - обложка в JPG

3. Вызов функции получения статуса проигрывания в нативном плеере из webview:

nativeplay("STATUS")

ответ от приложения (например вызовом заданной функции jsrespond в JS файле находящемся на вебстранице внутри webview):

jsrespond("CONNECTING","1") , где первый параметр это статус проигрывания (нужно будет перечислить все возможные статусы), второй параметр это CHANNELID проигрываемого потока (из переданных в самом начале)

4. Вызов функции остановки проигрывания из webview:

nativeplay("STOP")

ответ от приложения:

jsrespond("STOPPED","1"), где второй параметр это CHANNELID проигрываемого потока

В случае остановки проигрывания не из вебвью (например с поп-апа на заблокированном экране), приложение должно также вызвать эту функции в webview.

5. Если были задействованы кнопки переключения вперед-назад из поп-апа нативного плеера на заблокированном экране:

приложение вызывает JS функцию jsrespond("CHANGECHANNEL","1") , где 1 - идентификатор текущего потока, на который было переключение из поп-апа.

год назад
glebden
42 годаУкраина
14 лет в сервисе
Был
год назад