//デバイスから睡眠データを取得する IEnumerator GetSleepData(int dataCount, Action <List <string> > onGetCSVPathList, Action <List <string> > onGetCSVNameList) { //スリープしないように設定 Screen.sleepTimeout = SleepTimeout.NeverSleep; //データが存在すれば以下の処理を実行 Debug.Log("データ取得コマンド"); CsvHeaderSet(); //GET前に必ず実行する //データ取得開始 LoadingDialog.Show("本体から睡眠データを取得しています。\n" + 0 + "/" + dataCount + "件"); bool isSuccess = false; bool isFailed = false; List <string> filePathList = new List <string>(); //CSVの添付パスリスト List <string> fileNameList = new List <string>(); //CSVのファイル名リスト BluetoothManager.Instance.SendCommandId( 3, (string data) => { //エラー時 Debug.Log("GetData:failed:" + data); isFailed = true; }, (bool success) => { Debug.Log("GetData:commandWrite:" + success); if (!success) { isFailed = true; } }, (string data) => { Debug.Log("GetData:commandResponse:" + data); var j = Json.Deserialize(data) as Dictionary <string, object>; bool success = Convert.ToBoolean(j["KEY2"]); if (!success) { isFailed = true; } }, (string data) => { //データ取得情報 var json = Json.Deserialize(data) as Dictionary <string, object>; int currentDataCount = Convert.ToInt32(json["KEY1"]); //現在の取得カウント(例:1件取得完了したら1で返される) bool isExistNextData = Convert.ToBoolean(json["KEY2"]); //TRUEなら次のデータがある bool isEndData = Convert.ToBoolean(json["KEY3"]); //TRUEなら次のデータはな(Unity側でアプリ処理を行ってから、5秒以内にデータ取得完了応答を返す) string csvFilePath = (string)json["KEY4"]; //CSVのパスの添付パス。dataフォルダ以下のパスが返される(例:/1122334455:66/yyyyMMdd/tmp01.csv) csvFilePath = csvFilePath.Substring(1); //先頭のスラッシュを取り除く string csvFileName = (string)json["KEY5"]; //CSVのファイル名。最終的にUnity側でDB登録時にリネームしてもらうファイル名(例:20180624182431.csv) filePathList.Add(csvFilePath); fileNameList.Add(csvFileName); LoadingDialog.ChangeMessage("本体から睡眠データを取得しています。\n" + currentDataCount + "/" + dataCount + "件"); if (isEndData) { //最後のデータを取得完了すれば isSuccess = true; } }); yield return(new WaitUntil(() => { return isSuccess || isFailed; })); //スリープ設置解除 Screen.sleepTimeout = SleepTimeout.SystemSetting; LoadingDialog.Dismiss(); onGetCSVPathList(filePathList.Count > 0 ? filePathList : null); onGetCSVNameList(fileNameList.Count > 0 ? fileNameList : null); Debug.Log("Return Get Data"); }