@@ -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