共用方式為


PlayToConnectionStateChangedEventArgs 類別

定義

提供 StateChanged 事件的相關信息。

public ref class PlayToConnectionStateChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Deprecated("PlayToConnectionStateChangedEventArgs may be altered or unavailable for releases after Windows 10.", Windows.Foundation.Metadata.DeprecationType.Deprecate, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PlayToConnectionStateChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Deprecated("PlayToConnectionStateChangedEventArgs may be altered or unavailable for releases after Windows 10.", Windows.Foundation.Metadata.DeprecationType.Deprecate, 65536, "Windows.Foundation.UniversalApiContract")]
class PlayToConnectionStateChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Deprecated("PlayToConnectionStateChangedEventArgs may be altered or unavailable for releases after Windows 10.", Windows.Foundation.Metadata.DeprecationType.Deprecate, 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class PlayToConnectionStateChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Deprecated("PlayToConnectionStateChangedEventArgs may be altered or unavailable for releases after Windows 10.", Windows.Foundation.Metadata.DeprecationType.Deprecate, 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class PlayToConnectionStateChangedEventArgs
Public NotInheritable Class PlayToConnectionStateChangedEventArgs
繼承
Object Platform::Object IInspectable PlayToConnectionStateChangedEventArgs
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

 private Windows.Media.PlayTo.PlayToManager ptm = 
         Windows.Media.PlayTo.PlayToManager.GetForCurrentView();

 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     ptm.SourceRequested += sourceRequestHandlerWithEvents;
     ptm.SourceSelected += sourceSelectedHandler;
 }

 private void sourceRequestHandlerWithEvents(
 Windows.Media.PlayTo.PlayToManager sender,
 Windows.Media.PlayTo.PlayToSourceRequestedEventArgs e)
 {
     try
     {
         var controller = mediaElement.PlayToSource;

         controller.Connection.Error += playToConnectionError;
         controller.Connection.StateChanged += playToConnectionStageChanged;
         controller.Connection.Transferred += playToConnectionTransferred;

         e.SourceRequest.SetSource(controller);
     }
     catch (Exception ex)
     {
         messageBlock.Text += "Exception encountered: " + ex.Message + "\n";
     }
 }

 // Called when the user selects a Play To device to stream to.

 private void sourceSelectedHandler(
     Windows.Media.PlayTo.PlayToManager sender,
     Windows.Media.PlayTo.PlayToSourceSelectedEventArgs e)
 {
     if (mediaElement.Name == "iplayer") {
         if (!e.SupportsImage) {
             messageBlock.Text += e.FriendlyName + " does not support streaming images. " +
                                  "Please select a different device.";
             return;
         }
     }

     if (mediaElement.Name == "vplayer") {
         if (!e.SupportsVideo) {
             messageBlock.Text += e.FriendlyName + " does not support streaming video. " +
                                  "Please select a different device.";
             return;
         }
     }

     if (mediaElement.Name == "aplayer") {
         if (!e.SupportsAudio) {
             messageBlock.Text += e.FriendlyName + " does not support streaming audio. " +
                                  "Please select a different device.";
             return;
         }
     }

     Windows.Storage.Streams.IRandomAccessStream iconStream = e.Icon;
     Windows.UI.Xaml.Media.Imaging.BitmapImage iconBitmap = 
             new Windows.UI.Xaml.Media.Imaging.BitmapImage();
     iconBitmap.SetSource(iconStream);
     playToDeviceIconImage.Source = iconBitmap;

     playToDeviceFriendlyNameBlock.Text = e.FriendlyName;
 }

 private void playToConnectionError(
     Windows.Media.PlayTo.PlayToConnection connection,
     Windows.Media.PlayTo.PlayToConnectionErrorEventArgs e)
 {
     if (e.Code == Windows.Media.PlayTo.PlayToConnectionError.DeviceError ||
         e.Code == Windows.Media.PlayTo.PlayToConnectionError.DeviceNotResponding) 
     {
         messageBlock.Text += "Error occurred. Disconnecting.\n";
     }

     messageBlock.Text += "Error: Message = " + e.Message.ToString() + "\n";
 }

private void playToConnectionStageChanged(
    Windows.Media.PlayTo.PlayToConnection connection, 
    Windows.Media.PlayTo.PlayToConnectionStateChangedEventArgs e) 
 {
     messageBlock.Text += "StateChanged: PreviousState = " + e.PreviousState.ToString() + "\n";
     messageBlock.Text += "StateChanged: CurrentState = " + e.CurrentState.ToString() + "\n";
 }

private void playToConnectionTransferred(
    Windows.Media.PlayTo.PlayToConnection connection, 
    Windows.Media.PlayTo.PlayToConnectionTransferredEventArgs e)
 {
     messageBlock.Text += "Transferred: PreviousSource = " + e.PreviousSource.ToString() + "\n";
     messageBlock.Text += "Transferred: CurrentSource = " + e.CurrentSource.ToString() + "\n";
 }
Private ptm As Windows.Media.PlayTo.PlayToManager =
        Windows.Media.PlayTo.PlayToManager.GetForCurrentView()

Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
    AddHandler ptm.SourceRequested, AddressOf sourceRequestHandlerWithEvents
    AddHandler ptm.SourceSelected, AddressOf sourceSelectedHandler
End Sub

Private Sub sourceRequestHandlerWithEvents(
    sender As Windows.Media.PlayTo.PlayToManager,
    e As Windows.Media.PlayTo.PlayToSourceRequestedEventArgs)

    Try
        Dim controller = mediaElement.PlayToSource

        AddHandler controller.Connection.Error, AddressOf playToConnectionError
        AddHandler controller.Connection.StateChanged, AddressOf playToConnectionStageChanged
        AddHandler controller.Connection.Transferred, AddressOf playToConnectionTransferred

        e.SourceRequest.SetSource(controller)
    Catch ex As Exception
        messageBlock.Text &= "Exception encountered: " & ex.Message & vbCrLf
    End Try
End Sub

' Called when the user selects a Play To device to stream to.

Private Sub sourceSelectedHandler(
    sender As Windows.Media.PlayTo.PlayToManager,
    e As Windows.Media.PlayTo.PlayToSourceSelectedEventArgs)

    If mediaElement.Name = "iplayer" Then
        If Not e.SupportsImage Then
            messageBlock.Text &= e.FriendlyName & " does not support streaming images. " &
                                 "Please select a different device."
            Return
        End If
    End If

    If mediaElement.Name = "vplayer" Then
        If Not e.SupportsVideo Then
            messageBlock.Text &= e.FriendlyName & " does not support streaming video. " &
                                 "Please select a different device."
            Return
        End If
    End If

    If mediaElement.Name = "aplayer" Then
        If Not e.SupportsAudio Then
            messageBlock.Text &= e.FriendlyName & " does not support streaming audio. " &
                                 "Please select a different device."
            Return
        End If
    End If

    Dim iconStream = e.Icon
    Dim iconBitmap = New Windows.UI.Xaml.Media.Imaging.BitmapImage()
    iconBitmap.SetSource(iconStream)
    playToDeviceIconImage.Source = iconBitmap

    playToDeviceFriendlyNameBlock.Text = e.FriendlyName
End Sub

Private Sub playToConnectionError(
    connection As Windows.Media.PlayTo.PlayToConnection,
    e As Windows.Media.PlayTo.PlayToConnectionErrorEventArgs)

    If e.Code = Windows.Media.PlayTo.PlayToConnectionError.DeviceError OrElse
        e.Code = Windows.Media.PlayTo.PlayToConnectionError.DeviceNotResponding Then

        messageBlock.Text &= "Error occurred. Disconnecting." & vbCrLf
    End If

    messageBlock.Text &= "Error: Message = " & e.Message.ToString() & vbCrLf
End Sub

Private Sub playToConnectionStageChanged(
    connection As Windows.Media.PlayTo.PlayToConnection,
    e As Windows.Media.PlayTo.PlayToConnectionStateChangedEventArgs)

    messageBlock.Text &= "StateChanged: PreviousState = " & e.PreviousState.ToString() & vbCrLf
    messageBlock.Text &= "StateChanged: CurrentState = " & e.CurrentState.ToString() & vbCrLf
End Sub

Private Sub playToConnectionTransferred(
    connection As Windows.Media.PlayTo.PlayToConnection,
    e As Windows.Media.PlayTo.PlayToConnectionTransferredEventArgs)

    messageBlock.Text &= "Transferred: PreviousSource = " & e.PreviousSource.ToString() & vbCrLf
    messageBlock.Text &= "Transferred: CurrentSource = " & e.CurrentSource.ToString() & vbCrLf
End Sub

備註

如需如何在應用程式中使用 Play To 的範例,請參閱 PlayReady DRM

屬性

CurrentState

取得播放到連線狀態變更后的目前狀態。

PreviousState

取得在 [播放到連線] 狀態變更之前的狀態。

適用於

另請參閱