/// <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); }