Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S Startrek Player Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Wiki
    • Wiki
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar
  • Public Projects
  • Startrek Player Public
  • Startrek Player Wiki
  • Wiki
  • Home

Last edited by Roman Putintsev Nov 04, 2022
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Home

Startrek Player

Библиотека предназначена для проигрывания интернет потоков mp3/aac/wav/hls и локальных файлов. Основная часть библиотеки выполнена в виде native модуля, который занимается проигрыванием и содержит два основных класса: StartrekPlayer и StartrekPlayerDelegate

Для обработки web сокет метаданных http://play.melonplayer.com/docs/metadata-socket-api используются классы: StartrekMetadataWatcher и StartrekMetadataWatcherDelegate

Для обработки json метаданных https://hostingradio.ru/mdsabout используются классы: StartrekMetadataUpdater и StartrekMetadataUpdaterDelegate

Собранные библиотеки (.aar для android и .a для iOS) хранятся с использованием git lfs https://git-lfs.github.com/ в репозиториях. Важно после клонирования в случае проблем проверить размер этих файлов. Если размер файлов менее 1КБ, то это не файл а git lfs ссылка на него, и нужно проверить настройки git lfs, после чего обновить состояние репозитория.

История изменений

Changelog

iOS версия

https://bitbucket.org/micro_it/startrek-radio-ios

xcframework файл копируется и подключается в проект: General → Frameworks, Libraries, and Embedded Content Дополнительно нужно сделать следующие настройки:

  1. Подключить зависимые системные framework к проекту: Accelerate.framework, AudioToolbox.framework, AVFoundation.framework, CFNetwork.framework, CoreServices.framework, GSS.framework, SystemConfiguration.framework
  2. Отключить bitcode: Build Setting → Build Options → Enable Bitcode = No
  3. Добавить флаги линковки: Build Setting → Linking → Other Linker Flags = -lc++ -lz
  4. Добавить Capabilities → Background Modes → Audio, Air Play, and Picture in Picture в проект
  5. При использовании Swift нужно указать Objective C Bridging Header → Frameworks/StartrekPlayer.xcframework/ios-arm64/Headers/STStartrekPlayer-Bridging-Header.h
  6. xcframework с библиотеками формата .а нужно подключать с флагом "Do not embed" для того чтобы необходимые функции были вкомпилированы в результирующий бинарный файл - программу. При использовании "Embed and sign" архив .a будет добавлен целиком в bundle. Это не соответствует требованиям apple (статические библиотеки не должны поставляться в результирующем bundle архиве) и увеличивает размер установочного пакета для конечного пользователя.

xcframework содержит статические *.a библиотеки для двух архитектур arm64 и x86_64 + заголовочные файлы. Библиотеки *.a содержат отладочные символы, поэтому изначально имеют большой размер. Xcode при сборке их автоматически очищает и в release версию они не попадают, что уменьшает размер конечного приложения. При использовании crashlytics отладочные символы всего проекта нужно отправлять в firebase. Символы из подключенных библиотек автоматически собираются и отправляются, без дополнительных настроек. Подробнее https://firebase.google.com/docs/crashlytics/get-started?platform=ios

Android версия

https://bitbucket.org/micro_it/startrek-radio-android

AAR файл копируется в папку libs проекта и подключается как обычная библиотека.

implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

AAR файл содержит C++ ndk библиотеки *.so с отладочными символами. Важно проконтролировать следущие настройки:

  1. Relase версия apk или aab должна включать в себя библиотеку с stripped native symbols. (По умолчанию android studio именно так и делает.) За счет того, что в release сборке нет отладочных символов конечны размер приложения становится меньше.
  2. При использовании google play crash reports нужно загрузить отладочные символы для библиотеки в google play console. Это требуется, для того чтобы Crash reports в google play console содержали полную информацию о стэке вызовов плеера при возникновении ошибки. Подробнее https://support.google.com/googleplay/android-developer/answer/9848633
  3. При использовании crashlytics нужно так же включить ndk crashlytics report и отправить native debug symbols в crashlytics при сборке. Это позволит просматривать полный стэк вызовов внутри библиотеки плеера при какой-либо ошибке. Подробнее https://firebase.google.com/docs/crashlytics/ndk-reports

Для использования плеера в Service классе требуется:

  1. Подключить native библиотеку
  2. Настроить корневые сертификаты для https соединений
  3. Создать идентификатор аудиосессии и передать его в плеер
  4. Создать плеер (обязательно после настройки https и аудиосессии)
public class RadioService extends MediaBrowserServiceCompat {
    static {
        System.loadLibrary("StartrekPlayerNative" + StartrekAndroid.PREFERRED_ABI);
    }

    protected StartrekPlayer m_player = null;

    @Override
    public void onCreate() {
        super.onCreate();

        // Set ca certificates for https connections
        StartrekNetwork.setCaCertificates(StartrekAndroid.getSSLCertificates());

        // Set audio session id
        AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        int sid = audioManager.generateAudioSessionId();
        StartrekAndroid.setAudioSessionId(sid);

        // Create player
        m_player = StartrekPlayer.create();
    }
}

Описание классов

API приближено к старой версии плеера https://bitbucket.org/micro_it/startrekplayerlibrary/

StartrekPlayerState

StartrekPlayerQuality

StartrekMetadataSubscriptionType

StartrekMetadataFetchType

StartrekMetadata

StartrekNetwork

StartrekMetadataWatcherDelegate

StartrekMetadataWatcher

StartrekMetadataUpdaterDelegate

StartrekMetadataUpdater

StartrekPlayerDelegate

StartrekPlayer

StartrekAndroid

Clone repository
  • Changelog
  • StartrekAndroid
  • StartrekMetadata
  • StartrekMetadataFetchType
  • StartrekMetadataSubscriptionType
  • StartrekMetadataUpdater
  • StartrekMetadataUpdaterDelegate
  • StartrekMetadataWatcher
  • StartrekMetadataWatcherDelegate
  • StartrekNetwork
  • StartrekPlayer
  • StartrekPlayerDelegate
  • StartrekPlayerQuality
  • StartrekPlayerState
  • Home