Acly.Player 1.3.51

dotnet add package Acly.Player --version 1.3.51
                    
NuGet\Install-Package Acly.Player -Version 1.3.51
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Acly.Player" Version="1.3.51" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Acly.Player" Version="1.3.51" />
                    
Directory.Packages.props
<PackageReference Include="Acly.Player" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Acly.Player --version 1.3.51
                    
#r "nuget: Acly.Player, 1.3.51"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Acly.Player&version=1.3.51
                    
Install Acly.Player as a Cake Addin
#tool nuget:?package=Acly.Player&version=1.3.51
                    
Install Acly.Player as a Cake Tool

Acly.Player

Плеер для Android и Windows с возможностью удалённого управления

Windows Android

Чтобы получить экзепляр плеера необходимо написать следующее:

CrossPlayer player = new CrossPlayer();
IPlayer player = new CrossPlayer(); //альтернативный вариант

Настройка для Android

Для того чтобы управлять плеером через уведомление надо сначала инициализировать MediaSessionService и MediaBrowserService. Звучит сложно, но для этого надо всего лишь вызвать 1 метод:

CrossPlayer.InitNotification(MauiAppCompatActivity);

Лучше всего его вызывать в методе OnCreate(Bundle?) класса MainActivity (или любого другого унаследованного от MauiAppCompatActivity) Для примера:

public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle? savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        CrossPlayer.InitNotification(this);
    }
}

Так же этот метод имеет перегрузку, с помощью которой можно настроить уведомление под себя.

CrossPlayer.InitNotification(MauiAppCompatActivity, PlayerNotificationStyle, PlayerNotificationSettings);

В PlayerNotificationStyle передаются настройки внешнего вида уведомления - иконки и надписи, а в PlayerNotificationSettings общие настройки. В общих настройках указываются параметры канала, создаваемого для уведомления, идентификатор уведомления и тег сессии.

Для работы методов GetSpectrumData и GetWaveformData на Android необходимо дать некоторые разрешения. Если вам эти методы не нужны, то можно не запрашивать разрешения. В любом случае, если вы попытаетесь вызвать эти методы, не дав разрешения, то они просто вернут пустой массив. Также при неудачной инициализации визуализатора на Android в консоли будет выведено сообщение с информацией - это сообщение можно проигнорировать, если вам не нужна визуализация. Для работы этих методов необходимо указать следующие разрешения:

android.permission.RECORD_AUDIO
android.permission.MODIFY_AUDIO_SETTINGS

Настройка для Windows

Настройка для Windows не требуется

Использование

Плеер предлагает следующие события:

event SimplePlayerStateEvent? StateChanged; // Вызывается при изменении состояния плеера
event SimplePlayerEvent? SourceChanged; // Вызывается при изменении источника
event SimplePlayerEvent? SourceEnded; // Вызывается при окончании источника
event PlayerTimeEvent? PositionChanged; // Вызывается при изменении текущего времени проигрывания
event PlayerEvent? SkippedToNext; // Вызывается при пропуске до следующей песни
event PlayerEvent? SkippedToPrevious; // Вызывается при перемотки до предыдущей песни
event IPlayer.DisposePlayer? Disposed; // Вызывается при очистке

Поля:

TimeSpan Position { get; set; } // Текущее время проигрывания
TimeSpan Duration { get; } // Продолжительность аудио
float Speed { get; set; } // Скорость проигрывания
float Volume { get; set; } // Громкость плеера
bool Loop { get; set; } // Повторение аудио
bool IsPlaying { get; } // Проигрывается ли сейчас аудио
bool SourceSetted { get; } // Установлено ли аудио
bool AutoPlay { get; set; } // Автоматически проигрывать после смены аудио
SimplePlayerState State { get; } // Состояние плеера
IMediaItem Source { get; } // Информация о текущем аудио

Управление плеером:

void Pause(); // Пауза
void Play(); // Воспроизвести
void Stop(); // Остановить

void Release(); // Очистить

Установка аудио

Для установки аудио доступны следующие методы:

Task SetSource(byte[] Data);
Task SetSource(Stream SourceStream);
Task SetSource(string SourceUrl);
Task SetSource(IMediaItem Item);

Последний метод устанавливает источник аудио и данные о медиа, которые будут отображаться при удалённом управлении плеером:

public interface IMediaItem
{
    public string Title { get; set; }
    public string Artist { get; set; }
    public TimeSpan Duration { get; set; }
    public string AudioUrl { get; set; }
    public string? ImageUrl { get; set; }
}
Product Compatible and additional computed target framework versions.
.NET net8.0-android34.0 is compatible.  net8.0-windows10.0.19041 is compatible.  net9.0-android was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.51 386 3/24/2025
1.3.5 381 3/24/2025
1.3.4 244 3/23/2025
1.3.3 126 3/20/2025
1.3.2 124 3/20/2025
1.3.1 125 3/20/2025
1.3.0 127 3/20/2025
1.2.5 160 6/21/2024
1.2.4 115 6/20/2024
1.2.3 108 6/20/2024
1.2.2 97 6/20/2024
1.2.1 107 6/20/2024
1.2.0 120 6/20/2024
1.1.1 110 6/19/2024
1.1.0 120 6/19/2024
1.0.0 108 6/18/2024