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

Home · Changes

Page history
Update home authored Aug 16, 2022 by Roman Putintsev's avatar Roman Putintsev
Show whitespace changes
Inline Side-by-side
home.md 0 → 100644
View page @ adcdc67d
# Startrek Player
Библиотека предназначена для проигрывания интернет потоков mp3/aac/wav/hls и локальных файлов. Основная часть библиотеки выполнена в виде native модуля, который занимается проигрыванием и содержит два основных класса: [StartrekPlayer](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayer%20e00fd907b23240618222ffdcafcb4db6.md) и [StartrekPlayerDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayerDelegate%202f0d4d39b85f4f9bbcea4ec1cf80d6bd.md)
Для обработки web сокет метаданных [http://play.melonplayer.com/docs/metadata-socket-api](http://play.melonplayer.com/docs/metadata-socket-api) используются классы: [StartrekMetadataWatcher](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataWatcher%2063e8016b7b734688be111960112198c4.md) и [StartrekMetadataWatcherDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataWatcherDelegate%209a4478880db942d5af2188a7b56f0038.md)
Для обработки json метаданных [https://hostingradio.ru/mdsabout](https://hostingradio.ru/mdsabout) используются классы: [StartrekMetadataUpdater](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataUpdater%20272757e39e6c4dbba694cb524521914d.md) и [StartrekMetadataUpdaterDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataUpdaterDelegate%2024bd0d93b5df45f7b9bed19a82ce203e.md)
Собранные библиотеки *(.aar для android и .a для iOS)* хранятся с использованием git lfs [https://git-lfs.github.com/](https://git-lfs.github.com/) в репозиториях. Важно после клонирования в случае проблем проверить размер этих файлов. Если размер файлов менее 1КБ, то это не файл а git lfs ссылка на него, и нужно проверить настройки git lfs, после чего обновить состояние репозитория.
## История изменений
[Changelog](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/Changelog%2091b0080f3f2b4e5789485a4cb120dcec.md)
### iOS версия
[https://bitbucket.org/micro_it/startrek-radio-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](https://firebase.google.com/docs/crashlytics/get-started?platform=ios)
### Android версия
[https://bitbucket.org/micro_it/startrek-radio-android](https://bitbucket.org/micro_it/startrek-radio-android)
AAR файл копируется в папку libs проекта и подключается как обычная библиотека.
```bash
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](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](https://firebase.google.com/docs/crashlytics/ndk-reports)
Для использования плеера в Service классе требуется:
1. Подключить native библиотеку
2. Настроить корневые сертификаты для https соединений
3. Создать идентификатор аудиосессии и передать его в плеер
4. Создать плеер *(обязательно после настройки https и аудиосессии)*
```java
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/](https://bitbucket.org/micro_it/startrekplayerlibrary/)
[StartrekPlayerState](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayerState%204c703a87d5cd4583bb008b04d564f3d4.md)
[StartrekPlayerQuality](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayerQuality%20bc0008c76df248e2afaa7eef133e69e4.md)
[StartrekMetadataSubscriptionType](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataSubscriptionType%20a40069268fea4ca2bcf35fd86f35f65b.md)
[StartrekMetadataFetchType](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataFetchType%208560f5180ac240908983c623c8ca872b.md)
[StartrekMetadata](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadata%20f929338184f648f1b9e2de09be034c48.md)
[StartrekNetwork](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekNetwork%20717ba2a44c314016b7a5be1671c1c002.md)
[StartrekMetadataWatcherDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataWatcherDelegate%209a4478880db942d5af2188a7b56f0038.md)
[StartrekMetadataWatcher](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataWatcher%2063e8016b7b734688be111960112198c4.md)
[StartrekMetadataUpdaterDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataUpdaterDelegate%2024bd0d93b5df45f7b9bed19a82ce203e.md)
[StartrekMetadataUpdater](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekMetadataUpdater%20272757e39e6c4dbba694cb524521914d.md)
[StartrekPlayerDelegate](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayerDelegate%202f0d4d39b85f4f9bbcea4ec1cf80d6bd.md)
[StartrekPlayer](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekPlayer%20e00fd907b23240618222ffdcafcb4db6.md)
[StartrekAndroid](Startrek%20Player%20143ffa86ac2346a7982613942c05c1d3/StartrekAndroid%20fd751f43d00d4eee9b6dc1d7239f2e53.md)
\ No newline at end of file
Clone repository
  • Changelog
  • StartrekAndroid
  • StartrekMetadata
  • StartrekMetadataFetchType
  • StartrekMetadataSubscriptionType
  • StartrekMetadataUpdater
  • StartrekMetadataUpdaterDelegate
  • StartrekMetadataWatcher
  • StartrekMetadataWatcherDelegate
  • StartrekNetwork
  • StartrekPlayer
  • StartrekPlayerDelegate
  • StartrekPlayerQuality
  • StartrekPlayerState
  • Home