예제 #1
0
        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;
            }
        }
예제 #2
0
        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()
            });
        }