Example #1
0
        /// <summary>
        /// Gets the play position in nanoseconds.
        /// </summary>
        /// <returns>The current position in nanoseconds.</returns>
        /// <remarks>The player must be in the <see cref="PlayerState.Ready"/>, <see cref="PlayerState.Playing"/>,
        /// or <see cref="PlayerState.Paused"/> state.</remarks>
        /// <exception cref="ObjectDisposedException">The player has already been disposed of.</exception>
        /// <exception cref="InvalidOperationException">The player is not in the valid state.</exception>
        /// <seealso cref="SetPlayPositionAsync(int, bool)"/>
        /// <seealso cref="SetPlayPositionNanosecondsAsync(long, bool)"/>
        /// <seealso cref="GetPlayPosition"/>
        /// <since_tizen> 5 </since_tizen>
        public long GetPlayPositionNanoseconds()
        {
            ValidatePlayerState(PlayerState.Ready, PlayerState.Paused, PlayerState.Playing);

            NativePlayer.GetPlayPositionNanoseconds(Handle, out long playPosition).
            ThrowIfFailed(this, "Failed to get the play position(nsec) of the player");

            Log.Info(PlayerLog.Tag, $"get play position(nsec) : {playPosition}");

            return(playPosition);
        }