public async Task Play(SeekInfo position = null) { if (_playerInfo != null) { if (position != null) { _playerInfo.Position = position; } await CrossMediaManager.Current.Play( new MediaItem { Title = _playerInfo.Position.CurrentTitle, MediaLocation = MediaLocation.FileSystem, MediaUri = $"{Session.Instance.GetDataDir()}/{_book.Id}/{_playerInfo.CurrentFilename}" } ); _seekToCurrentTC = true; } }
public static Envelope CreateSeekInfoEnvelope(TransactionContext transactionContext, SeekInfo seekInfo, byte[] tlsCertHash) { ChannelHeader seekInfoHeader = CreateChannelHeader(HeaderType.DeliverSeekInfo, transactionContext.TxID, transactionContext.ChannelID, transactionContext.Epoch, transactionContext.FabricTimestamp, null, tlsCertHash); SignatureHeader signatureHeader = new SignatureHeader { Creator = transactionContext.Identity.ToByteString(), Nonce = transactionContext.Nonce }; Header seekHeader = new Header { SignatureHeader = signatureHeader.ToByteString(), ChannelHeader = seekInfoHeader.ToByteString() }; Payload seekPayload = new Payload { Header = seekHeader, Data = seekInfo.ToByteString() }; return(new Envelope { Signature = transactionContext.SignByteStrings(seekPayload.ToByteString()), Payload = seekPayload.ToByteString() }); }