예제 #1
0
        private void Characteristic_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
        {
            if (sender == this.Characteristic)
            {
                var valueBytes = WindowsRuntimeBufferExtensions.ToArray(args.CharacteristicValue);

                // Convert the bytes array to the structure
                GCHandle pinnedPacket = GCHandle.Alloc(valueBytes, GCHandleType.Pinned);
                var      msg          = Marshal.PtrToStructure <NotificationSourceData>(pinnedPacket.AddrOfPinnedObject());
                pinnedPacket.Free();

                //We dont care about old notifications
                if (msg.EventFlags.HasFlag(EventFlags.EventFlagPreExisting))
                {
                    return;
                }

                switch (msg.EventId)
                {
                case EventID.NotificationAdded:
                    this.NotificationAdded?.Invoke(this, msg);
                    break;

                case EventID.NotificationModified:
                    this.NotificationModified?.Invoke(this, msg);
                    break;

                case EventID.NotificationRemoved:
                    this.NotificationRemoved?.Invoke(this, msg);
                    break;
                }
            }
        }
예제 #2
0
        public async Task <string> PostAsync(string url, IDictionary <string, object> toPost)
        {
            var    result   = string.Empty;
            string postData = GetQueryString(toPost);
            var    cts      = new CancellationTokenSource();

            try
            {
                using (var client = new HttpClient())
                {
                    var httpContent = new HttpStringContent(postData, Windows.Storage.Streams.UnicodeEncoding.Utf8);
                    httpContent.Headers.ContentType.MediaType = "application/x-www-form-urlencoded";

                    var response = await client.PostAsync(new Uri(url), httpContent).AsTask(cts.Token);

                    var buf = await response.Content.ReadAsBufferAsync();

                    byte[] bytes = WindowsRuntimeBufferExtensions.ToArray(buf, 0, (int)buf.Length);
                    result = gbk.GetString(bytes, 0, bytes.Length);
                }
            }
            catch (Exception ex)
            {
                cts.Cancel();
                await new MessageDialog(ex.Message + "\n\n请尝试刷新或检查网络连接是否正常!", "POST请求失败").ShowAsync();
            }

            return(result);
        }
예제 #3
0
        private void messageReceived(ProximityDevice proximityDevice, ProximityMessage message)
        {
            var rawMsg = WindowsRuntimeBufferExtensions.ToArray(message.Data);
            //このrawMsgをNDEF解析すればよいようだ
            //NDEF解析はOSでやってくれないらしい。OSがやるのはNFPだけか。

            string str = "メッセージ";

            switch (rawMsg[3])
            {
            case (byte)'T':
                str += "TEXT";
                break;

            case (byte)'U':
                str += "URI";
                break;

            case (byte)'S':
                if (rawMsg[4] == (byte)'p')
                {
                    str += "SmartPoster";
                }
                break;
            }
            showToast(str);
        }
예제 #4
0
        public async Task <string> GetAsync(string url)
        {
            var result = string.Empty;
            var cts    = new CancellationTokenSource();

            try
            {
                using (var client = new HttpClient())
                {
                    // 在异步任务中加入进度监控
                    var response = await client.GetAsync(new Uri(url)).AsTask(cts.Token);

                    var buf = await response.Content.ReadAsBufferAsync();

                    byte[] bytes = WindowsRuntimeBufferExtensions.ToArray(buf, 0, (int)buf.Length);
                    result = gbk.GetString(bytes, 0, bytes.Length);
                }
            }
            catch (Exception ex)
            {
                cts.Cancel();
                await new MessageDialog(ex.Message + "\n\n请尝试刷新或检查网络连接是否正常!", "GET请求失败").ShowAsync();
            }

            return(result);
        }
예제 #5
0
        private async Task <string> EncryptedPassword(string passWord)
        {
            string base64String;

            try
            {
                HttpBaseProtocolFilter httpBaseProtocolFilter = new HttpBaseProtocolFilter();
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Expired);
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Untrusted);
                var    jObjects = (await accountApi.GetKey().Request()).GetJObject();
                string str      = jObjects["data"]["hash"].ToString();
                string str1     = jObjects["data"]["key"].ToString();
                string str2     = string.Concat(str, passWord);
                string str3     = Regex.Match(str1, "BEGIN PUBLIC KEY-----(?<key>[\\s\\S]+)-----END PUBLIC KEY").Groups["key"].Value.Trim();
                byte[] numArray = Convert.FromBase64String(str3);
                AsymmetricKeyAlgorithmProvider asymmetricKeyAlgorithmProvider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
                CryptographicKey cryptographicKey = asymmetricKeyAlgorithmProvider.ImportPublicKey(WindowsRuntimeBufferExtensions.AsBuffer(numArray), 0);
                IBuffer          buffer           = CryptographicEngine.Encrypt(cryptographicKey, WindowsRuntimeBufferExtensions.AsBuffer(Encoding.UTF8.GetBytes(str2)), null);
                base64String = Convert.ToBase64String(WindowsRuntimeBufferExtensions.ToArray(buffer));
            }
            catch (Exception)
            {
                base64String = passWord;
            }
            return(base64String);
        }
예제 #6
0
        /// <summary>
        /// 加密密码
        /// </summary>
        /// <param name="password">密码</param>
        /// <returns></returns>
        private async Task <string> EncryptedPasswordAsync(string password)
        {
            string base64String;

            try
            {
                string param   = BiliTool.UrlContact("").TrimStart('?');
                string content = await BiliTool.PostContentToWebAsync(Api.PASSPORT_KEY_ENCRYPT, param);

                JObject jobj     = JObject.Parse(content);
                string  str      = jobj["data"]["hash"].ToString();
                string  str1     = jobj["data"]["key"].ToString();
                string  str2     = string.Concat(str, password);
                string  str3     = Regex.Match(str1, "BEGIN PUBLIC KEY-----(?<key>[\\s\\S]+)-----END PUBLIC KEY").Groups["key"].Value.Trim();
                byte[]  numArray = Convert.FromBase64String(str3);
                AsymmetricKeyAlgorithmProvider asymmetricKeyAlgorithmProvider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
                CryptographicKey cryptographicKey = asymmetricKeyAlgorithmProvider.ImportPublicKey(WindowsRuntimeBufferExtensions.AsBuffer(numArray), 0);
                IBuffer          buffer           = CryptographicEngine.Encrypt(cryptographicKey, WindowsRuntimeBufferExtensions.AsBuffer(Encoding.UTF8.GetBytes(str2)), null);
                base64String = Convert.ToBase64String(WindowsRuntimeBufferExtensions.ToArray(buffer));
            }
            catch (Exception)
            {
                base64String = password;
            }
            return(base64String);
        }
예제 #7
0
        /// <summary>
        /// ZipFolder and its sub folders
        /// </summary>
        /// <param name="tcpSocket"></param>
        async private static Task ZipFolderContents(StorageFolder sourceFolder, ZipArchive archive, string baseDirPath)
        {
            IReadOnlyList <StorageFile> files = await sourceFolder.GetFilesAsync();

            foreach (StorageFile file in files)
            {
                ZipArchiveEntry readmeEntry = archive.CreateEntry(GetCompressedFileName(baseDirPath, file));

                byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(file));

                // And write the contents to it
                using (Stream entryStream = readmeEntry.Open())
                {
                    await entryStream.WriteAsync(buffer, 0, buffer.Length);
                }
            }

            IReadOnlyList <StorageFolder> subFolders = await sourceFolder.GetFoldersAsync();

            if (subFolders.Count() == 0)
            {
                return;
            }

            foreach (StorageFolder subfolder in subFolders)
            {
                await ZipFolderContents(subfolder, archive, baseDirPath);
            }
        }
        private async Task <SolidColorBrush> GetPixelColor()
        {
            RenderTargetBitmap retarbi = new RenderTargetBitmap();
            await retarbi.RenderAsync(PocketPaintApplication.GetInstance().PaintingAreaCanvas,
                                      (int)PocketPaintApplication.GetInstance().PaintingAreaCanvas.ActualWidth,
                                      (int)PocketPaintApplication.GetInstance().PaintingAreaCanvas.ActualHeight);

            Windows.Storage.Streams.IBuffer buffer = await(retarbi.GetPixelsAsync());
            var pixels = WindowsRuntimeBufferExtensions.ToArray(buffer);

            var width  = retarbi.PixelWidth;
            var height = retarbi.PixelHeight;

            double NormfactorX = (double)width / (double)PocketPaintApplication.GetInstance().Bitmap.PixelWidth;
            double NormfactorY = (double)height / (double)PocketPaintApplication.GetInstance().Bitmap.PixelHeight;

            double doubleY = ((double)Y) * NormfactorY;
            double doubleX = ((double)X) * NormfactorX;

            int intX = (int)Math.Round(doubleX, 0);
            int intY = (int)Math.Round(doubleY, 0);

            int intTemp  = intY * width;
            int intXTemp = intTemp + intX;
            int intValue = intXTemp * 4;

            var a = pixels[intValue + 3];
            var r = pixels[intValue + 2];
            var g = pixels[intValue + 1];
            var B = pixels[intValue];

            return(new SolidColorBrush(Windows.UI.Color.FromArgb(a, r, g, B)));
        }
예제 #9
0
        public static async Task <string> GetEncryptedPassword(string passWord)
        {
            string base64String;

            try
            {
                //https://secure.bilibili.com/login?act=getkey&rnd=4928
                //https://passport.bilibili.com/login?act=getkey&rnd=4928
                HttpBaseProtocolFilter httpBaseProtocolFilter = new HttpBaseProtocolFilter();
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Expired);
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Untrusted);
                Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient(httpBaseProtocolFilter);
                //WebClientClass wc = new WebClientClass();
                string stringAsync = await httpClient.GetStringAsync((new Uri("https://passport.bilibili.com/login?act=getkey&rnd=" + new Random().Next(1000, 9999), UriKind.Absolute)));

                JObject jObjects = JObject.Parse(stringAsync);
                string  str      = jObjects["hash"].ToString();
                string  str1     = jObjects["key"].ToString();
                string  str2     = string.Concat(str, passWord);
                string  str3     = Regex.Match(str1, "BEGIN PUBLIC KEY-----(?<key>[\\s\\S]+)-----END PUBLIC KEY").Groups["key"].Value.Trim();
                byte[]  numArray = Convert.FromBase64String(str3);
                AsymmetricKeyAlgorithmProvider asymmetricKeyAlgorithmProvider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
                CryptographicKey cryptographicKey = asymmetricKeyAlgorithmProvider.ImportPublicKey(WindowsRuntimeBufferExtensions.AsBuffer(numArray), 0);
                IBuffer          buffer           = CryptographicEngine.Encrypt(cryptographicKey, WindowsRuntimeBufferExtensions.AsBuffer(Encoding.UTF8.GetBytes(str2)), null);
                base64String = Convert.ToBase64String(WindowsRuntimeBufferExtensions.ToArray(buffer));
            }
            catch (Exception)
            {
                //throw;
                base64String = passWord;
            }
            return(base64String);
        }
예제 #10
0
        private static async Task <string> EncryptedPassword(string passWord)
        {
            string base64String;

            try
            {
                HttpBaseProtocolFilter httpBaseProtocolFilter = new HttpBaseProtocolFilter();
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Expired);
                httpBaseProtocolFilter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Untrusted);
                Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient(httpBaseProtocolFilter);
                string url     = "https://passport.bilibili.com/api/oauth2/getKey";
                string content = $"appkey={ApiHelper.AndroidKey.Appkey}&mobi_app=android&platform=android&ts={ApiHelper.GetTimeSpan}";
                content += "&sign=" + ApiHelper.GetSign(content);
                string stringAsync = await WebClientClass.PostResults(new Uri(url), content);

                JObject jObjects = JObject.Parse(stringAsync);
                string  str      = jObjects["data"]["hash"].ToString();
                string  str1     = jObjects["data"]["key"].ToString();
                string  str2     = string.Concat(str, passWord);
                string  str3     = Regex.Match(str1, "BEGIN PUBLIC KEY-----(?<key>[\\s\\S]+)-----END PUBLIC KEY").Groups["key"].Value.Trim();
                byte[]  numArray = Convert.FromBase64String(str3);
                AsymmetricKeyAlgorithmProvider asymmetricKeyAlgorithmProvider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
                CryptographicKey cryptographicKey = asymmetricKeyAlgorithmProvider.ImportPublicKey(WindowsRuntimeBufferExtensions.AsBuffer(numArray), 0);
                IBuffer          buffer           = CryptographicEngine.Encrypt(cryptographicKey, WindowsRuntimeBufferExtensions.AsBuffer(Encoding.UTF8.GetBytes(str2)), null);
                base64String = Convert.ToBase64String(WindowsRuntimeBufferExtensions.ToArray(buffer));
            }
            catch (Exception)
            {
                base64String = passWord;
            }
            return(base64String);
        }
예제 #11
0
        public override byte[] GetHashAndReset()
        {
            IBuffer result  = hasher.GetValueAndReset();
            var     asBytes = WindowsRuntimeBufferExtensions.ToArray(result);

            return(asBytes);
        }
예제 #12
0
        public async Task ZipFolderContents(StorageFolder sourceFolder, ZipArchive archive, string baseDirPath)
        {
            IReadOnlyList <StorageFile> files = await sourceFolder.GetFilesAsync();

            foreach (StorageFile file in files)
            {
                ZipArchiveEntry readmeEntry = archive.CreateEntry(file.Path.Remove(0, baseDirPath.Length));
                IBuffer         FileBuffer  = await FileIO.ReadBufferAsync(file);

                if (FileBuffer.Length != 0)
                {
                    //byte[] buffer=FileBuffer.ToArray();
                    byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(FileBuffer);
                    using (Stream entryStream = readmeEntry.Open())
                    {
                        await entryStream.WriteAsync(buffer, 0, buffer.Length);
                    }
                }
            }

            IReadOnlyList <StorageFolder> subFolders = await sourceFolder.GetFoldersAsync();

            if (subFolders.Count() == 0)
            {
                return;
            }

            foreach (StorageFolder subfolder in subFolders)
            {
                await ZipFolderContents(subfolder, archive, baseDirPath);
            }
        }
        async public Task <int> preparePaintingAreaCanvasForEraser()
        {
            RenderTargetBitmap retarbi      = new RenderTargetBitmap();
            Canvas             eraserCanvas = PocketPaintApplication.GetInstance().EraserCanvas;

            try
            {
                if (eraserCanvas.Visibility == Visibility.Collapsed)
                {
                    eraserCanvas.Visibility = Visibility.Visible;
                }
                await retarbi.RenderAsync(eraserCanvas);

                Windows.Storage.Streams.IBuffer buffer = await(retarbi.GetPixelsAsync());
                pixelsCanvasEraser = WindowsRuntimeBufferExtensions.ToArray(buffer);

                this.pixelHeightCanvas = retarbi.PixelHeight;
                this.pixelWidthCanvas  = retarbi.PixelWidth;
            }
            catch
            {
                return(1);
            }
            return(0);
        }
        public void TestSha512ProviderConsistency()
        {
            byte[] message = System.Text.Encoding.UTF8.GetBytes(
                "abcdefghbcdefghicDEFghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu");
            int digestExpectedLength = 64; //for SHA 512, this is the expected length

            //The Bouncy Castle way
            org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider provider = new org.whispersystems.curve25519.BouncyCastleDotNETSha512Provider();
            byte[] digestActual = new byte[digestExpectedLength];
            provider.calculateDigest(digestActual, message, message.Length);

            //The WinRT way
            HashAlgorithmProvider sha512Provider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512);
            IBuffer bMessage = WindowsRuntimeBufferExtensions.AsBuffer(message);
            IBuffer bDigest  = sha512Provider.HashData(bMessage);

            byte[] digestWinRT = WindowsRuntimeBufferExtensions.ToArray(bDigest);

            //The PCLCrypto way
            PCLCrypto.IHashAlgorithmProvider sha512PCLProvider = PCLCrypto.WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(PCLCrypto.HashAlgorithm.Sha512);
            byte[] digestPCL = sha512PCLProvider.HashData(message);

            //Did we get the same value for all ways?
            CollectionAssert.AreEqual(digestWinRT, digestActual);
            CollectionAssert.AreEqual(digestPCL, digestWinRT);
        }
예제 #15
0
        private async Task <WriteableBitmap> SaveRecognitionCanvas1(Canvas canvas, double width, double height)
        {
            //Create a temporary image file for the recognition canvas - recogCanvas.png
            StorageFolder pictureFolder = ApplicationData.Current.LocalFolder;
            var           savefile      = await pictureFolder.CreateFileAsync("recogCanvas.png", CreationCollisionOption.GenerateUniqueName);

            if (savefile == null)
            {
                return(null);
            }
            IRandomAccessStream stream = await savefile.OpenAsync(FileAccessMode.ReadWrite);

            //Retrieve the pixel data from the canvas
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap();
            await renderBitmap.RenderAsync(canvas, (int)width, (int)height);

            IBuffer x = await renderBitmap.GetPixelsAsync();

            //Set the IsTooLarge flag if the IBuffer is too long for writing. This prevents an exception and writes only half the image.
            //7664640 - max buffer size
            int value;

            if ((int)x.Length > 7664640)
            {
                //Write only the max length of data
                IsTooLarge = true;
                value      = 7664640;
            }
            else
            {
                //Write the whole lenght of data
                value = (int)x.Length;
            }

            //Write the image pixels to a bitmap
            WriteableBitmap WBitmap = new WriteableBitmap((int)width, (int)height);

            using (Stream pb = WBitmap.PixelBuffer.AsStream())
            {
                //This method will throw and exception if he pixel array is too large
                await pb.WriteAsync(WindowsRuntimeBufferExtensions.ToArray(x), 0, value);
            }

            Stream pixelStream = WBitmap.PixelBuffer.AsStream();

            byte[] pixels = new byte[pixelStream.Length];
            var    length = pixels.Length;
            await pixelStream.ReadAsync(pixels, 0, pixels.Length);

            // Save the image file with png extension so the image is transparent for merging
            BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)WBitmap.PixelWidth, (uint)WBitmap.PixelHeight, 96.0, 96.0, pixels);
            await encoder.FlushAsync();

            return(WBitmap);
        }
예제 #16
0
        /// <summary>
        /// method to compress files
        /// </summary>
        public async void Compress()
        {
            // Retrieve files to compress


            // Created new file to store compressed files
            //This will create a file under the selected folder in the name “Compressed.zip”
            StorageFile zipFile = await SelectedFolder.CreateFileAsync("Compressed.zip", CreationCollisionOption.ReplaceExisting);

            // Create stream to compress files in memory (ZipArchive can't stream to an IRandomAccessStream, see
            // http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/62541424-ba7d-43d3-9585-1fe53dc7d9e2
            // for details on this issue)
            using (MemoryStream zipMemoryStream = new MemoryStream())
            {
                InProgress = true;
                // Create zip archive
                using (ZipArchive zipArchive = new ZipArchive(zipMemoryStream, ZipArchiveMode.Create))
                {
                    // For each file to compress...
                    foreach (StorageFile fileToCompress in filesToCompress)
                    {
                        BasicProperties fileProp = await fileToCompress.GetBasicPropertiesAsync();

                        if (fileProp.Size > 0)
                        {
                            //Read the contents of the file
                            byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(fileToCompress));

                            string fileEntry = fileToCompress.Path.Replace(zipFile.Path.Replace(zipFile.Name, string.Empty), string.Empty);
                            // Create a zip archive entry
                            ZipArchiveEntry entry = zipArchive.CreateEntry(fileEntry, CompressionLevelSelected);

                            // And write the contents to it
                            using (Stream entryStream = entry.Open())
                            {
                                await entryStream.WriteAsync(buffer, 0, buffer.Length);
                            }
                        }
                    }
                }

                using (IRandomAccessStream zipStream = await zipFile.OpenAsync(FileAccessMode.ReadWrite))
                {
                    // Write compressed data from memory to file
                    using (Stream outstream = zipStream.AsStreamForWrite())
                    {
                        byte[] buffer = zipMemoryStream.ToArray();
                        outstream.Write(buffer, 0, buffer.Length);
                        outstream.Flush();
                    }
                }

                InProgress    = false;
                StatusMessage = "Files Zipped...";
            }
        }
예제 #17
0
        private async Task <byte[]> PostWebData(Uri uri, byte[] data)
        {
            HttpClient          client   = new HttpClient();
            HttpBufferContent   body     = data != null ? new HttpBufferContent(WindowsRuntimeBufferExtensions.AsBuffer(data)) : (HttpBufferContent)null;
            HttpResponseMessage response = await client.PostAsync(uri, (IHttpContent)body);

            IBuffer ibuff = await response.get_Content().ReadAsBufferAsync();

            byte[] buff = WindowsRuntimeBufferExtensions.ToArray(ibuff);
            return(buff);
        }
예제 #18
0
        async void SaveCheckPhoto(StorageFile ImageFile)
        {
            IBuffer fileBuffer = await FileIO.ReadBufferAsync(ImageFile);

            byte[] btsImage           = WindowsRuntimeBufferExtensions.ToArray(fileBuffer, 0, (int)fileBuffer.Length);
            Data.DoctorCheckLog photo = NewPhoto();
            photo.Photo = btsImage;
            Views.CheckPhotoDetailEventArgs cva = new Views.CheckPhotoDetailEventArgs();
            cva.InhosID    = iCommon.Patient.InhosID;
            cva.CheckPhoto = photo;
            OnSaveCheckPhoto(null, cva);
        }
예제 #19
0
        public async Task Render(RenderTargetBitmap image)
        {
            var buffer = await image.GetPixelsAsync();

            const int kMaxSPISize = 65000; /// 19200;

            int spilines = kMaxSPISize / (image.PixelWidth * 2);
            int spiblock = spilines * (image.PixelWidth * 2);

            var numPixels     = image.PixelWidth * image.PixelHeight;
            var numPixelBytes = numPixels * 2;

            byte[] framebuffer = new byte[spiblock];

            var y      = 0;
            var offset = 0;

            for (int buff = 0; buff < numPixelBytes / spiblock; buff++)
            {
                offset = buff * spiblock * 2;
                byte[] pixels = WindowsRuntimeBufferExtensions.ToArray(buffer, (uint)offset, spiblock * 2);
                for (int frameBuff = 0, source = 0; frameBuff < framebuffer.Length; frameBuff += 2, source += 4)
                {
                    int color565 = (((pixels[source + 0] & 0xF8) << 8) | ((pixels[source + 1] & 0xFC) << 3) | ((pixels[source + 2] & 0xF8) >> 3));
                    framebuffer[frameBuff]     = (byte)((color565 >> 8) & 0xFF);
                    framebuffer[frameBuff + 1] = (byte)((color565 & 0xFF));
                }

                setWindow(0, y, image.PixelWidth, spilines);
                sendC(0x2C);
                sendD(framebuffer);
                y += spilines;
            }

            offset += spiblock * 2;
            var remainder = numPixelBytes % spiblock;

            if (remainder > 0)
            {
                byte[] framebuffer2 = new byte[remainder];
                byte[] pixels       = WindowsRuntimeBufferExtensions.ToArray(buffer, (uint)(offset), remainder * 2);
                for (int frameBuff = 0, source = 0; frameBuff < framebuffer2.Length; frameBuff += 2, source += 4)
                {
                    int color565 = (((pixels[source + 0] & 0xF8) << 8) | ((pixels[source + 1] & 0xFC) << 3) | ((pixels[source + 2] & 0xF8) >> 3));
                    framebuffer2[frameBuff]     = (byte)((color565 >> 8) & 0xFF);
                    framebuffer2[frameBuff + 1] = (byte)((color565 & 0xFF));
                }
                var linesLeft = image.PixelHeight - y;
                setWindow(0, y, image.PixelWidth, linesLeft);
                sendC(0x2C);
                sendD(framebuffer2);
            }
        }
예제 #20
0
        public async Task CompressSession(bool deleteSourceFolder)
        {
            // The folder where a Session is stored.
            var folder = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFolderAsync(Id.ToString());

            var files = await folder.GetFilesAsync();

            using (var memoryStream = new MemoryStream())
            {
                // Create zip archive stream.
                using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create))
                {
                    // For each file in the Session folder.
                    foreach (var sessionFile in files)
                    {
                        // Store the contents of the file into a byte array.
                        byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(sessionFile));
                        // Create an entry in the archive.
                        var entry = archive.CreateEntry(sessionFile.Name);
                        // Open a stream to the new entry to write the buffer.
                        using (var entryStream = entry.Open())
                        {
                            await entryStream.WriteAsync(buffer, 0, buffer.Length);
                        }
                    }
                }
                // Attempt to find the zip file and delete if it exists.
                var item = await ApplicationData.Current.LocalFolder.TryGetItemAsync($"{Id.ToString()}.zip");

                if (item != null)
                {
                    await item.DeleteAsync();
                }
                // Create the new zip file.
                var file = await ApplicationData.Current.LocalFolder.CreateFileAsync($"{Id.ToString()}.zip");

                using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    // Write compressed data from memory to file
                    using (var zipStream = fileStream.AsStreamForWrite())
                    {
                        byte[] buffer = memoryStream.ToArray();
                        zipStream.Write(buffer, 0, buffer.Length);
                        zipStream.Flush();
                    }
                }
            }
            // Delete the source folder after it's been compressed.
            if (deleteSourceFolder)
            {
                await folder.DeleteAsync();
            }
        }
        private void GattCharacteristic_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
        {
            var valueBytes = WindowsRuntimeBufferExtensions.ToArray(args.CharacteristicValue);
            var dat        = ByteArrayToNotificationSourceData(valueBytes);

            //We dont care about old notifications
            if (dat.EventFlags.HasFlag(EventFlags.EventFlagPreExisting))
            {
                return;
            }

            ValueChanged?.Invoke(dat);
        }
        async public Task <int> preparePaintingAreaCanvasPixel()
        {
            RenderTargetBitmap retarbi = new RenderTargetBitmap();
            Canvas             canvas  = PocketPaintApplication.GetInstance().PaintingAreaCanvas;
            await retarbi.RenderAsync(canvas);

            Windows.Storage.Streams.IBuffer buffer = await(retarbi.GetPixelsAsync());
            pixelsCanvas = WindowsRuntimeBufferExtensions.ToArray(buffer);

            this.pixelHeightCanvas = retarbi.PixelHeight;
            this.pixelWidthCanvas  = retarbi.PixelWidth;
            return(0);
        }
예제 #23
0
        private async Task <byte[]> GetWebData(Uri uri, bool bypassCahce)
        {
            HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();

            if (bypassCahce)
            {
                filter.get_CacheControl().put_ReadBehavior((HttpCacheReadBehavior)1);
            }
            HttpClient client = new HttpClient((IHttpFilter)filter);
            IBuffer    ibuff  = await client.GetBufferAsync(uri);

            byte[] buff = WindowsRuntimeBufferExtensions.ToArray(ibuff);
            return(buff);
        }
예제 #24
0
        private static async Task <JsonObject> makeJson(HttpResponseMessage response)
        {
            var contentBuffer = await response.Content.ReadAsBufferAsync();

            var bytes   = WindowsRuntimeBufferExtensions.ToArray(contentBuffer);
            var content = Encoding.UTF8.GetString(bytes);

            Debug.WriteLine(content);

            var rJson = new JsonObject();

            JsonObject.TryParse(content, out rJson);

            return(rJson);
        }
예제 #25
0
        /// <summary>
        /// 分享网页
        /// </summary>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="url"></param>
        /// <param name="thumbnailUri"></param>
        /// <returns></returns>
        public static async Task ShareWebAsync(string title, string description, string url, string thumbnailUri)
        {
            if (!DeviceUtils.IsMobile)
            {
                ToastService.SendToast("PC上不支持微信分享");
                return;
            }

            try
            {
                var scene = SendMessageToWX.Req.WXSceneChooseByUser;

                var message = new WXWebpageMessage
                {
                    WebpageUrl  = url,
                    Title       = title,
                    Description = description
                };

                if (!string.IsNullOrEmpty(thumbnailUri))
                {
                    IBuffer buffer = await HttpBaseService.GetBytesAsync(thumbnailUri);

                    message.ThumbData = WindowsRuntimeBufferExtensions.ToArray(buffer);
                }
                else
                {
                    var thumbnail = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Images/ic_logo.png"));

                    using (var stream = await thumbnail.OpenReadAsync())
                    {
                        byte[] pic = new byte[stream.Size];
                        await stream.AsStream().ReadAsync(pic, 0, pic.Length);

                        message.ThumbData = pic;
                    }
                }

                SendMessageToWX.Req req = new SendMessageToWX.Req(message, scene);
                IWXAPI api = WXAPIFactory.CreateWXAPI(APP_ID);
                await api.SendReq(req);
            }
            catch (WXException ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
예제 #26
0
        public static async Task <string> GetNews(string page, string list)
        {
            //获取数据
            HttpClient client = new HttpClient();


            //client.Encoding = System.Text.Encoding.UTF8;
            //获取战队数据
            //var json = await client.GetStringAsync(new Uri("http://qt.qq.com/php_cgi/lol_mobile/club/varcache_team_entrancev2.php?plat=android&version=9676"));

            //http://apps.game.qq.com/lol/act/website2013/videoApp.php?page=1&p1=0&p2=0&p3=0&p4=0&p5=0 精彩视频
            //http://apps.game.qq.com/lol/act/website2013/videoApp.php?page=2&p1=0&p2=0&p3=0&p4=0&p5=0
            //http://apps.game.qq.com/lol/act/website2013/videoApp.php?page=1&p1=0&p2=0&p3=0&p4=9999&p5=0 解说
            //http://apps.game.qq.com/lol/act/website2013/videoApp.php?page=1&p1=0&p2=9999&p3=0&p4=0&p5=0 职业联赛
            //http://apps.game.qq.com/lol/act/website2013/videoApp.php?page=1&p1=2&p2=0&p3=0&p4=0&p5=0  娱乐


            //http://ossweb-img.qq.com/upload/qqtalk/lol_hero/hero_22.js 返回英雄数据 格式为json
            //http://ossweb-img.qq.com/upload/qqtalk/lol_hero/goods_list.js  返回物品列表 格式为json


            //list_2 3 4代表页面 c12代表常规页面 c13代表推荐页面 c73赛事 c18娱乐 c3官方 c17美女 c10攻略 c23活动
            //拼接字符串
            var apiUrl = string.Format("http://qt.qq.com/static/pages/news/phone/{0}_list_{1}.shtml", page, list);

            try
            {
                var json2 = await client.GetBufferAsync(new Uri(apiUrl));

                //将ibuffer转变为byte[];
                byte[] bytes = WindowsRuntimeBufferExtensions.ToArray(json2, 0, (int)json2.Length);
                //设置请求头
                //从byte[]转为字符串;
                string str = System.Text.Encoding.UTF8.GetString(bytes);

                //返回的str带有/r换行符,无法识别
                var str2 = cleanString(str);
                str2 = str2.Replace(" ", "");
                return(str2);
            }
            catch (Exception e)
            {
                toast.Show();
                return(null);
            }
        }
예제 #27
0
        private async Task <WriteableBitmap> SaveRecognitionCanvas2(Canvas canvas, double width, double height)
        {
            //Create a temporary image file for the recognition canvas - recogCanvas.png
            StorageFolder pictureFolder = ApplicationData.Current.LocalFolder;
            var           savefile      = await pictureFolder.CreateFileAsync("recogCanvas.png", CreationCollisionOption.GenerateUniqueName);

            if (savefile == null)
            {
                return(null);
            }
            IRandomAccessStream stream = await savefile.OpenAsync(FileAccessMode.ReadWrite);

            //Retrieve the pixel data from the canvas
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap();
            await renderBitmap.RenderAsync(canvas, (int)width, (int)height);

            IBuffer x = await renderBitmap.GetPixelsAsync();

            //Write the image pixels to a bitmap
            WriteableBitmap WBitmap = new WriteableBitmap((int)width, (int)height);

            byte[] pixelArray = WindowsRuntimeBufferExtensions.ToArray(x);
            //Reverse the array to write the rest of the pixel data, since writing can only start from the beginning of an array
            Array.Reverse(pixelArray);
            using (Stream pb = WBitmap.PixelBuffer.AsStream())
            {
                //Write the remaing length of the pixels (the original array - first 7664640 values that were written)
                await pb.WriteAsync(pixelArray, 7664640, (int)x.Length - 7664640);
            }

            Stream pixelStream = WBitmap.PixelBuffer.AsStream();

            byte[] pixels = new byte[pixelStream.Length];
            var    length = pixels.Length;
            await pixelStream.ReadAsync(pixels, 0, pixels.Length);

            // Save the image file with png extension so the image is transparent for merging
            BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)WBitmap.PixelWidth, (uint)WBitmap.PixelHeight, 96.0, 96.0, pixels);
            //Rotate the image 180 degreees, as it was written upside down due to reversing the pixel array
            encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise180Degrees;
            await encoder.FlushAsync();

            return(WBitmap);
        }
        public async Task <bool> WriteBitmapToPngFileIsolatedStorage(WriteableBitmap bitmap, String filenameWithEnding)
        {
            //var file = await _pocketPaintFolder.CreateFileAsync(filenameWithEnding,
            //CreationCollisionOption.ReplaceExisting);

            //if (file == null)
            //{
            //    return false;
            //}

            // var stream = await file.OpenAsync(FileAccessMode.ReadWrite);

            //await bitmap.SetSourceAsync(stream);

            RenderTargetBitmap retarbi = new RenderTargetBitmap();
            await retarbi.RenderAsync(PocketPaintApplication.GetInstance().PaintingAreaCanvas,
                                      (int)PocketPaintApplication.GetInstance().PaintingAreaCanvas.ActualWidth,
                                      (int)PocketPaintApplication.GetInstance().PaintingAreaCanvas.ActualHeight);


            Windows.Storage.Streams.IBuffer buffer = await(retarbi.GetPixelsAsync());
            var pixels = WindowsRuntimeBufferExtensions.ToArray(buffer);

            StorageFile outputFile = await KnownFolders.PicturesLibrary.CreateFileAsync("myTestFile.png", CreationCollisionOption.ReplaceExisting);

            using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
            {
                var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, writeStream);

                encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)retarbi.PixelWidth, (uint)retarbi.PixelHeight, 96, 96, pixels);
                await encoder.FlushAsync();
            }
            // TODO: var img = bitmap.ToImage();
            // TODO: var encoder = new PngEncoder();
            // using (var s = await file.OpenStreamForWriteAsync())
            // {
            //
            //     // TODO: encoder.Encode(img, s);
            //    // TODO s.Close();
            // }



            return(true);
        }
예제 #29
0
        /// <summary>
        /// Resolves the battery information.
        /// </summary>
        public async Task ReadDeviceBatteryInformationAsync()
        {
            if (_batteryInfoService != null)
            {
                IReadOnlyList <GattCharacteristic> characteristicList = _batteryInfoService.GetAllCharacteristics();

                foreach (var characteristic in characteristicList)
                {
                    if (characteristic.Uuid == GattCharacteristic.ConvertShortIdToUuid(IHSUuids.BatteryLevel))
                    {
                        GattReadResult readResult = await characteristic.ReadValueAsync();

                        byte[] data = WindowsRuntimeBufferExtensions.ToArray(readResult.Value);
                        // TODO: Store value
                    }
                }
            }
        }
예제 #30
0
        private byte[] HandleReceive(uint bytesRead, DataReader readPacket, int length = 1024 *1024 *5)
        {
            var bufferSpace = length * 2;

            byte[] tmpRet = new byte[length];
            Windows.Storage.Streams.IBuffer ibuffer = readPacket.ReadBuffer(readPacket.UnconsumedBufferLength);
            Byte[] convBuffer = WindowsRuntimeBufferExtensions.ToArray(ibuffer);

            if (bytesRead > 0)
            {
                System.Buffer.BlockCopy(convBuffer, 0, tmpRet, (int)0, (int)length);
            }
            _transferredSize += bytesRead;

            var kucing = System.Text.Encoding.UTF8.GetString(tmpRet, 0, tmpRet.Length);

            WhatsAPI.UniversalApps.Libs.Utils.Logger.Log.WriteLog("Receive Message => " + System.Text.Encoding.UTF8.GetString(tmpRet, 0, tmpRet.Length));
            return(tmpRet);
        }