Beispiel #1
0
        async void SerchClicked(object sender, EventArgs e)
        {
            try
            {
                requestUrl = url + "&isbn=" + serch_isbn.Text; //URLにISBNコードを挿入

                //HTTPアクセスメソッドを呼び出す
                string APIdata = await GetApiAsync(); //jsonをstringで受け取る

                //HTTPアクセス失敗処理(404エラーとか名前解決失敗とかタイムアウトとか)
                if (APIdata is null)
                {
                    await DisplayAlert("接続エラー", "接続に失敗しました", "OK");
                }

                /*
                 * //レスポンス(JSON)をstringに変換-------------->しなくていい
                 * Stream s = GetMemoryStream(APIdata); //GetMemoryStreamメソッド呼び出し
                 * StreamReader sr = new StreamReader(s);
                 * string json = sr.ReadToEnd();
                 */
                /*
                 * //デシリアライズ------------------>しなくていい
                 * var rakutenBooks = JsonConvert.DeserializeObject<RakutenBooks>(json.ToString());
                 */

                //パースする *重要*   パースとは、文法に従って分析する、品詞を記述する、構文解析する、などの意味を持つ英単語。
                var json  = JObject.Parse(APIdata);                 //stringのAPIdataをJObjectにパース
                var Items = JArray.Parse(json["Items"].ToString()); //Itemsは配列なのでJArrayにパース

                //結果を出力
                foreach (JObject jobj in Items)
                {
                    //↓のように取り出す
                    JValue titleValue = (JValue)jobj["title"];
                    string title      = (string)titleValue.Value;

                    JValue titleKanaValue = (JValue)jobj["titleKana"];
                    string titleKana      = (string)titleKanaValue.Value;

                    JValue subTiv   = (JValue)jobj["subTitle"];
                    string subTitle = (string)subTiv.Value;

                    JValue subTiKv      = (JValue)jobj["subTitleKana"];
                    string subTitleKana = (string)subTiKv.Value;

                    JValue authorValue = (JValue)jobj["author"];
                    string author      = (string)authorValue.Value;

                    JValue authorKanaValue = (JValue)jobj["authorKana"];
                    string authorKana      = (string)authorKanaValue.Value;

                    JValue pubV      = (JValue)jobj["publisherName"];
                    string publisher = (string)pubV.Value;

                    JValue sizeV = (JValue)jobj["size"];
                    string size  = (string)sizeV.Value;

                    JValue isbnValue = (JValue)jobj["isbn"];
                    string isbn      = (string)isbnValue.Value;

                    JValue itemCaptionValue = (JValue)jobj["itemCaption"];
                    string itemCaption      = (string)itemCaptionValue.Value;

                    JValue salesDateV = (JValue)jobj["salesDate"];
                    string salesDate  = (string)salesDateV.Value;

                    JValue priceV  = (JValue)jobj["itemPrice"];
                    var    priceVV = priceV.ToString();
                    int    price   = int.Parse(priceVV);

                    JValue gazoValue = (JValue)jobj["largeImageUrl"];
                    string gazo      = (string)gazoValue.Value;

                    JValue genreV  = (JValue)jobj["booksGenreId"];
                    string genreId = (string)genreV.Value;


                    bool x = await DisplayAlert("この内容で登録してよろしいですか?", "タイトル:" + title + "\r\n著者:" + author, "OK", "CANCEL");

                    if (x == true)
                    {
                        BookDB.insertBook(isbn, title, titleKana, subTitle, subTitleKana, author, authorKana, publisher, size, itemCaption, salesDate, price, gazo, genreId);
                    }
                }
                ;
            }
            catch (Exception ex)
            {
                //await DisplayAlert("Error", ex.ToString(), "ok"); //デバック用なのでリリース時は削除かコメントアウト
                //try catch自体は置いとかないと落ちそう
            }
        }
        async void ScanButtonClicked(object sender, EventArgs s)
        {
            var scanPage = new ZXingScannerPage()
            {
                DefaultOverlayTopText    = "バーコードを読み取ります",
                DefaultOverlayBottomText = "",
            };

            // スキャナページを表示
            await Navigation.PushAsync(scanPage);

            scanPage.OnScanResult += (result) =>
            {
                // スキャン停止
                scanPage.IsScanning = false;

                // PopAsyncで元のページに戻り、結果を表示
                Device.BeginInvokeOnMainThread(async() =>
                {
                    await Navigation.PopAsync();
                    string isbncode = result.Text;
                    requestUrl      = url + "&isbn=" + isbncode; //URLにISBNコードを挿入

                    //HTTPアクセスメソッドを呼び出す
                    string APIdata = await GetApiAsync(); //jsonをstringで受け取る

                    //パースする *重要*   パースとは、文法に従って分析する、品詞を記述する、構文解析する、などの意味を持つ英単語。
                    var json  = JObject.Parse(APIdata);                 //stringのAPIdataをJObjectにパース
                    var Items = JArray.Parse(json["Items"].ToString()); //Itemsは配列なのでJArrayにパース

                    //結果を出力
                    foreach (JObject jobj in Items)
                    {
                        //↓のように取り出す
                        JValue titleValue = (JValue)jobj["title"];
                        string title      = (string)titleValue.Value;

                        JValue titleKanaValue = (JValue)jobj["titleKana"];
                        string titleKana      = (string)titleKanaValue.Value;

                        JValue itemCaptionValue = (JValue)jobj["itemCaption"];
                        string itemCaption      = (string)itemCaptionValue.Value;

                        JValue gazoValue = (JValue)jobj["largeImageUrl"];
                        string gazo      = (string)gazoValue.Value;

                        JValue isbnValue = (JValue)jobj["isbn"];
                        string isbn      = (string)isbnValue.Value;

                        JValue authorValue = (JValue)jobj["author"];
                        string author      = (string)authorValue.Value;

                        bool x = await DisplayAlert("この内容で登録してよろしいですか?", "タイトル:" + title + "\r\n著者:" + author, "OK", "CANCEL");
                        if (x == true)
                        {
                            BookDB.insertBook(isbn, title, titleKana, author, itemCaption);
                        }
                    }
                    ;
                });
            };
        }
        async void ScanButtonClicked(object sender, EventArgs s)
        {
            var scanPage = new ZXingScannerPage()
            {
                DefaultOverlayTopText    = "バーコードを読み取ります",
                DefaultOverlayBottomText = "",
            };



            // スキャナページを表示
            await Navigation.PushAsync(scanPage);

            scanPage.OnScanResult += (result) =>
            {
                // スキャン停止
                scanPage.IsScanning = false;

                // PopAsyncで元のページに戻り、結果を表示
                Device.BeginInvokeOnMainThread(async() =>
                {
                    //phoneならこっち
                    if (_device == "Phone")
                    {
                        List <Manage> hoge2;
                        hoge2 = Manage._camera();
                        if (hoge2 == null)
                        {
                            Manage.insertCamera();
                            hoge2 = Manage._camera();
                        }
                        foreach (var x in hoge2)
                        {
                            c_bool = x.camera_bool;
                        }

                        if (c_bool == 0)
                        {
                            DependencyService.Get <IDeviceService>().PlayVibrate();
                            await Navigation.PopAsync();//元のページに戻る
                        }
                        if (c_bool == 1)
                        {
                            DependencyService.Get <IDeviceService>().PlayVibrate();
                            scanPage.IsScanning = false;
                        }
                    }
                    //タブレットならこっち
                    else
                    {
                        if (c_bool == 0)
                        {
                            await Navigation.PopAsync();//元のページに戻る
                        }
                        if (c_bool == 1)
                        {
                        }
                    }

                    string isbncode = result.Text;
                    requestUrl      = url + "&isbn=" + isbncode; //URLにISBNコードを挿入

                    //HTTPアクセスメソッドを呼び出す
                    string APIdata = await GetApiAsync(); //jsonをstringで受け取る

                    //パースする *重要*   パースとは、文法に従って分析する、品詞を記述する、構文解析する、などの意味を持つ英単語。
                    var json  = JObject.Parse(APIdata);                 //stringのAPIdataをJObjectにパース
                    var Items = JArray.Parse(json["Items"].ToString()); //Itemsは配列なのでJArrayにパース

                    //結果を出力
                    foreach (JObject jobj in Items)
                    {
                        //↓のように取り出す
                        JValue titleValue = (JValue)jobj["title"];
                        string title      = (string)titleValue.Value;

                        JValue titleKanaValue = (JValue)jobj["titleKana"];
                        string titleKana      = (string)titleKanaValue.Value;

                        JValue subTiv   = (JValue)jobj["subTitle"];
                        string subTitle = (string)subTiv.Value;

                        JValue subTiKv      = (JValue)jobj["subTitleKana"];
                        string subTitleKana = (string)subTiKv.Value;

                        JValue authorValue = (JValue)jobj["author"];
                        string author      = (string)authorValue.Value;

                        JValue authorKanaValue = (JValue)jobj["authorKana"];
                        string authorKana      = (string)authorKanaValue.Value;

                        JValue pubV      = (JValue)jobj["publisherName"];
                        string publisher = (string)pubV.Value;

                        JValue sizeV = (JValue)jobj["size"];
                        string size  = (string)sizeV.Value;

                        JValue isbnValue = (JValue)jobj["isbn"];
                        string isbn      = (string)isbnValue.Value;

                        JValue itemCaptionValue = (JValue)jobj["itemCaption"];
                        string itemCaption      = (string)itemCaptionValue.Value;

                        JValue salesDateV = (JValue)jobj["salesDate"];
                        string salesDate  = (string)salesDateV.Value;

                        JValue priceV = (JValue)jobj["itemPrice"];
                        var priceVV   = priceV.ToString();
                        int price     = int.Parse(priceVV);

                        JValue gazoValue = (JValue)jobj["largeImageUrl"];
                        string gazo      = (string)gazoValue.Value;

                        JValue genreV  = (JValue)jobj["booksGenreId"];
                        string genreId = (string)genreV.Value;



                        bool x = await DisplayAlert("この内容で登録してよろしいですか?", "タイトル:" + title + "\r\n著者:" + author, "OK", "CANCEL");
                        if (x == true)
                        {
                            BookDB.insertBook(isbn, title, titleKana, subTitle, subTitleKana, author, authorKana, publisher, size, itemCaption, salesDate, price, gazo, genreId);
                        }
                        if (title == null)
                        {
                            await DisplayAlert("警告", "本が楽天ブックスに登録されていない可能性があります", "OK");
                        }
                        if (scanPage.IsScanning == false)
                        {
                            scanPage.IsScanning = true;
                        }
                    }
                    ;
                });
            };
        }