Update version
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.ApplicationModel.Core;
|
||||
using Windows.Media.Control;
|
||||
using Windows.Storage.Streams;
|
||||
using Windows.System;
|
||||
using Windows.UI.Core;
|
||||
using Windows.UI.Xaml.Media.Imaging;
|
||||
|
||||
namespace NotificationFlyoutSample
|
||||
{
|
||||
|
||||
public class NowPlayingPageViewModel : ObservableObject, INavigation
|
||||
{
|
||||
private string _artist;
|
||||
private bool _isPlaying;
|
||||
private bool _isPaused;
|
||||
private GlobalSystemMediaTransportControlsSession _session;
|
||||
private string _song;
|
||||
private BitmapImage _thumbnail;
|
||||
|
||||
public bool IsPaused
|
||||
{
|
||||
get => _isPaused;
|
||||
set => SetProperty(ref _isPaused, value);
|
||||
}
|
||||
|
||||
public string Artist
|
||||
{
|
||||
get => _artist;
|
||||
set => SetProperty(ref _artist, value);
|
||||
}
|
||||
|
||||
public bool IsPlaying
|
||||
{
|
||||
get => _isPlaying;
|
||||
set => SetProperty(ref _isPlaying, value);
|
||||
}
|
||||
|
||||
public string Song
|
||||
{
|
||||
get => _song;
|
||||
set => SetProperty(ref _song, value);
|
||||
}
|
||||
|
||||
public async Task Next()
|
||||
{
|
||||
await _session.TrySkipNextAsync();
|
||||
}
|
||||
|
||||
DispatcherQueue d;
|
||||
public async void OnNavigatedTo()
|
||||
{
|
||||
d = DispatcherQueue.GetForCurrentThread();
|
||||
|
||||
var sessionManager = await GlobalSystemMediaTransportControlsSessionManager.RequestAsync();
|
||||
_session = sessionManager.GetCurrentSession();
|
||||
if (_session != null)
|
||||
{
|
||||
_session.MediaPropertiesChanged += OnMediaPropertiesChanged;
|
||||
}
|
||||
}
|
||||
|
||||
public BitmapImage Thumbnail
|
||||
{
|
||||
get => _thumbnail;
|
||||
set => SetProperty(ref _thumbnail, value);
|
||||
}
|
||||
|
||||
private async void OnMediaPropertiesChanged(GlobalSystemMediaTransportControlsSession sender, MediaPropertiesChangedEventArgs args)
|
||||
{
|
||||
var mediaProperties = await _session.TryGetMediaPropertiesAsync();
|
||||
|
||||
await d.EnqueueAsync(async () => {
|
||||
Artist = mediaProperties.Artist;
|
||||
|
||||
var foo = mediaProperties.Thumbnail;
|
||||
|
||||
|
||||
if (foo != null)
|
||||
{
|
||||
var f = await foo.OpenReadAsync();
|
||||
var image = new BitmapImage();
|
||||
await image.SetSourceAsync(f);
|
||||
|
||||
Thumbnail = image;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public async Task Pause()
|
||||
{
|
||||
var result = await _session.TryPauseAsync().AsTask().ConfigureAwait(false);
|
||||
if (result)
|
||||
{
|
||||
IsPlaying = false;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Play()
|
||||
{
|
||||
await _session.TryPlayAsync().AsTask().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public async Task Previous()
|
||||
{
|
||||
await _session.TrySkipPreviousAsync().AsTask().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private async Task UpdateNowPlaying()
|
||||
{
|
||||
var playbackInfo = _session.GetPlaybackInfo();
|
||||
var mediaProperties = await _session.TryGetMediaPropertiesAsync();
|
||||
|
||||
Artist = mediaProperties.Artist;
|
||||
Song = mediaProperties.Title;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user