Skip to content

Commit a6cf023

Browse files
author
theweavr
committed
2 parents 8aa504d + 7adddca commit a6cf023

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

BreadPlayer.Views.UWP/ViewModels/ShellViewModel.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,6 @@ private async void HandleExecuteCmdMessage(Message message)
254254
List<Mediafile> mediafileList = new List<Mediafile>(files.Count);
255255
foreach (IStorageItem item in files)
256256
{
257-
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(item);
258257
if (item.IsOfType(StorageItemTypes.File))
259258
{
260259
mediafileList.Add(await TagReaderHelper.CreateMediafile(item as StorageFile));
@@ -788,16 +787,33 @@ private async void OnAudioEndpointChanged(AudioRoutingManager sender, object arg
788787

789788
private async void OnDefaultAudioRenderDeviceChanged(object sender, DefaultAudioRenderDeviceChangedEventArgs args)
790789
{
790+
// If we have a device ID but Play is disabled, enable it. This handles when an audio device has been been reset.
791+
if (!String.IsNullOrEmpty(args.Id) && !PlayPauseCommand.IsEnabled)
792+
PlayPauseCommand.IsEnabled = true;
791793
if (args.Role != AudioDeviceRole.Default || args.Id == _audioDeviceId)
792794
return;
795+
// If no device ID is supplied we cannot play media.
796+
if (String.IsNullOrEmpty(args.Id))
797+
{
798+
if (SharedLogic.Instance.Player.PlayerState == PlayerState.Playing)
799+
{
800+
PlayPause();
801+
}
802+
PlayPauseCommand.IsEnabled = false;
803+
BLogger.I("Audio device disabled or not found.");
804+
await SharedLogic.Instance.NotificationManager.ShowMessageAsync("It appears your audio device has been disabled or stopped functioning. Please re-enable your audio device to continue. You may need to restart BreadPlayer to resume playback.");
805+
}
806+
else
807+
{
808+
PlayPauseCommand.IsEnabled = true;
809+
var oldDevice = await DeviceInformation.CreateFromIdAsync(_audioDeviceId);
810+
var device = await DeviceInformation.CreateFromIdAsync(args.Id);
811+
BLogger.I($"Switching audio render device from [{oldDevice.Name}] to [{device.Name}]");
793812

794-
var oldDevice = await DeviceInformation.CreateFromIdAsync(_audioDeviceId);
795-
var device = await DeviceInformation.CreateFromIdAsync(args.Id);
796-
BLogger.I($"Switching audio render device from [{oldDevice.Name}] to [{device.Name}]");
797-
798-
_audioDeviceId = args.Id;
813+
_audioDeviceId = args.Id;
799814

800-
await SharedLogic.Instance.Player.ChangeDevice(device.Name);
815+
await SharedLogic.Instance.Player.ChangeDevice(device.Name);
816+
}
801817
}
802818

803819
private async void Player_MediaAboutToEnd(object sender, MediaAboutToEndEventArgs e)

0 commit comments

Comments
 (0)