/// <summary> /// Returns the index of current playing media. /// </summary> /// <returns>The index of current playing media.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <since_tizen> 5 </since_tizen> public string GetIndexOfCurrentPlayingMedia() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); var(name, index) = NativePlaylist.GetPlaylistInfo(playbackHandle); return(index); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle).ThrowIfError("Failed to destroy playback handle."); } } }
/// <summary> /// Returns the playback state set by the server. /// </summary> /// <returns>The playback state.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <seealso cref="MediaControlServer.SetPlaybackState(MediaControlPlaybackState, long)"/> /// <since_tizen> 4 </since_tizen> public MediaControlPlaybackState GetPlaybackState() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); Native.GetPlaybackState(playbackHandle, out var playbackCode).ThrowIfError("Failed to get state."); return(playbackCode.ToPublic()); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle); } } }
/// <summary> /// Gets the age rating of current playing media. /// </summary> /// <returns>The Age rating of current playing media. The range is 0 to 19, inclusive.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <since_tizen> 5 </since_tizen> public int GetAgeRatingOfCurrentPlayingMedia() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); Native.GetAgeRating(playbackHandle, out int ageRating).ThrowIfError("Failed to get age rating."); return(ageRating); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle); } } }
/// <summary> /// Returns the playback position set by the server. /// </summary> /// <returns>The playback position in milliseconds.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <seealso cref="MediaControlServer.SetPlaybackState(MediaControlPlaybackState, long)"/> /// <since_tizen> 4 </since_tizen> public long GetPlaybackPosition() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); Native.GetPlaybackPosition(playbackHandle, out var position).ThrowIfError("Failed to get position."); return((long)position); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle); } } }
/// <summary> /// Gets the content type of current playing media. /// </summary> /// <returns>The <see cref="MediaControlContentType"/>.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <since_tizen> 5 </since_tizen> public MediaControlContentType GetContentTypeOfCurrentPlayingMedia() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); Native.GetPlaybackContentType(playbackHandle, out MediaControlContentType type). ThrowIfError("Failed to get playback content type"); return(type); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle); } } }
/// <summary> /// Returns the playlist name of current playing media. /// </summary> /// <returns>The playlist name.</returns> /// <exception cref="InvalidOperationException"> /// The server has already been stopped.<br/> /// -or-<br/> /// An internal error occurs. /// </exception> /// <exception cref="ObjectDisposedException">The <see cref="MediaControllerManager"/> has already been disposed.</exception> /// <since_tizen> 5 </since_tizen> public MediaControlPlaylist GetPlaylistOfCurrentPlayingMedia() { ThrowIfStopped(); IntPtr playbackHandle = IntPtr.Zero; // Get the playlist name of current playing media. try { Native.GetServerPlaybackHandle(Manager.Handle, ServerAppId, out playbackHandle).ThrowIfError("Failed to get playback."); var(name, index) = NativePlaylist.GetPlaylistInfo(playbackHandle); return(GetPlaylists().FirstOrDefault(playlist => playlist.Name == name)); } finally { if (playbackHandle != IntPtr.Zero) { Native.DestroyPlayback(playbackHandle).ThrowIfError("Failed to destroy playback handle."); } } }