上传记录增加本地保存逻辑

This commit is contained in:
lishuo 2021-04-28 17:23:29 +08:00
parent 614d067d25
commit 9993752ff5
6 changed files with 4200 additions and 3948 deletions

File diff suppressed because it is too large Load Diff

View File

@ -302,7 +302,9 @@ public class CyclingController : DeviceServiceMonoBase
var rs = resultPanel.GetComponent<ResultPanelScript>();
rs.InjectController(this);
rs.SetDataSource(cyclingController.recorderData);
cyclingController.recorderData.SaveData(cyclingModel, selectParamModel, imageFileName);
var localData = cyclingController.recorderData.SaveLocal(cyclingModel, selectParamModel, imageFileName);
//异步上传
cyclingController.recorderData.SaveDataAysnc(localData);
}
protected string CaptureCamera(Camera camera, Rect rect)
@ -330,7 +332,9 @@ public class CyclingController : DeviceServiceMonoBase
GameObject.Destroy(rt);
// 最后将这些纹理数据,成一个图片文件
byte[] bytes = screenShot.EncodeToPNG();
string filename = Application.dataPath + "/" + Guid.NewGuid().ToString() + ".png";
var path = Helper.GetDataDir("MapWorkoutRecords/images");
string filename = path + "/" + Guid.NewGuid().ToString() + ".png";
System.IO.File.WriteAllBytes(filename, bytes);
//Debug.Log(string.Format("截屏了一张照片: {0}", filename));
return filename;

View File

@ -16,9 +16,14 @@ namespace Assets.Scenes.Ride.Scripts
{
public class Helper
{
public static string GetDataDire(string pathName)
public static string GetDataDir(string pathName)
{
return @"D:\unityproject\Test\"+ pathName;
var dirName = Application.dataPath + "/" + pathName;
if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
}
return dirName;
}
public static double AveragePower(IList<TargetData> list)
{

View File

@ -1,11 +1,13 @@
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts.Model
{
@ -104,16 +106,12 @@ namespace Assets.Scenes.Ride.Scripts.Model
public int GlobalCyclingId { get; set; }
/// <summary>
/// 保存数据
/// </summary>
/// <param name="base64Image"></param>
/// <returns></returns>
public JsonResult<AddMapRecordResultModel> SaveData(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName = "")
public Dictionary<MapInterruptRecord, List<string>> SaveLocal(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName = "")
{
Dictionary<MapInterruptRecord, List<string>> recordData = new Dictionary<MapInterruptRecord, List<string>>();
if (RiderDatas.Count <= 0)
{
return new JsonResult<AddMapRecordResultModel> { result = true };
return recordData;
}
string newFileName = Guid.NewGuid().ToString();
int FTP = Helper.GetFtp();
@ -123,8 +121,8 @@ namespace Assets.Scenes.Ride.Scripts.Model
//训练量
double TSS = (RiderDatas.Count * NP * IF) / (FTP * 3600) * 100;
var averagePower = Helper.AveragePower(RiderDatas);
MapInterruptRecordApi service = new MapInterruptRecordApi();
// AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId).data;
// AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId).data;
var recordId = Guid.NewGuid().ToString();
var ticks = RiderDatas.Last().Ticks;
var interruptRecord = new MapInterruptRecord
@ -182,7 +180,8 @@ namespace Assets.Scenes.Ride.Scripts.Model
interruptRecord.AverageHeartRate = Math.Round(RiderDatas.Average(a => a._HeartRate.GetValueOrDefault(0)));
interruptRecord.MaxHeartRate = RiderDatas.Max(a => a._HeartRate.GetValueOrDefault(0));
//service.CreateRecordCyclingData(interruptRecord);
var path = Helper.GetDataDire("MapWorkoutRecords");
//保存骑行记录txt
var path = Helper.GetDataDir("MapWorkoutRecords" + "/" + interruptRecord.Id);
var fname = path + "/" + newFileName + ".txt";
var files = new List<string>();
using (var fs = new FileInfo(fname).OpenWrite())
@ -197,14 +196,35 @@ namespace Assets.Scenes.Ride.Scripts.Model
stream.Close();
files.Add(fname);
}
#region
//图片
if (!string.IsNullOrEmpty(imageName))
{
files.Add(imageName);
files.Add(imageName);
}
//持久化序列化对象
var recordString = JsonConvert.SerializeObject(interruptRecord);
var recordFilePath = path + "/" + "record" + ".txt";
System.IO.File.WriteAllText(recordFilePath, recordString);
recordData.Add(interruptRecord, files);
return recordData;
}
/// <summary>
/// 保存数据
/// </summary>
/// <param name="base64Image"></param>
/// <returns></returns>
public void SaveDataAysnc(Dictionary<MapInterruptRecord, List<string>> data)
{
if (data != null && data.Count > 0)
{
Task.Run(() => {
var record = data.FirstOrDefault();
MapInterruptRecordApi service = new MapInterruptRecordApi();
var result = service.Add(record.Key, record.Value);
//return new JsonResult<AddMapRecordResultModel> { result = result.result, errMsg = result.errMsg, data = result.data };
});
}
#endregion
var result = service.Add(interruptRecord, files);
return new JsonResult<AddMapRecordResultModel> { result = result.result, errMsg = result.errMsg, data = result.data };
}
}
}

View File

@ -22,6 +22,7 @@ namespace Assets.Scenes.Ride.Scripts
slider = transform.Find("Sensitivity").GetComponent<Slider>();
text = transform.Find("Sensitivity/Text").GetComponent<Text>();
text.text = App.rideSetting.sensitivity.ToString("#0")+ "%";
slider.value =(float)App.rideSetting.sensitivity;
slider.onValueChanged.AddListener((f) =>
{
text.text = $"{(f).ToString("#0")}%";

View File

@ -85,6 +85,7 @@ namespace Assets.Scenes.Ride.Scripts
GameObject startPanel;
GameObject headPanel;
GameObject settingPanel;
Button abandonButton;
void Awake()
{
#region
@ -137,6 +138,7 @@ namespace Assets.Scenes.Ride.Scripts
saveButton = transform.Find("Panel/QuitPanel/SaveButton").GetComponent<Button>();
cancelQuitButton = transform.Find("Panel/QuitPanel/CancelButton").GetComponent<Button>();
closeQuitButton = transform.Find("Panel/QuitPanel/CloseButton").GetComponent<Button>();
abandonButton = transform.Find("Panel/QuitPanel/AbandonButton").GetComponent<Button>();
viewButton =transform.Find("Panel/ViewButton").GetComponent<Button>();
altitudeGraph = transform.Find("Panel/TitlePanel/AltitudeGraph").GetComponent<RawImage>();
leftImage = transform.Find("Panel/TitlePanel/Left").GetComponent<Image>();
@ -156,8 +158,9 @@ namespace Assets.Scenes.Ride.Scripts
UIManager.AddEvent(shadowButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, ShadowRide);
UIManager.AddEvent(addButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, ShowSelectPlayer);
UIManager.AddEvent(saveButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, SaveRide);
UIManager.AddEvent(cancelQuitButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, CancelQuit);
UIManager.AddEvent(abandonButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, CancelQuit);
UIManager.AddEvent(closeQuitButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, CloseQuit);
UIManager.AddEvent(cancelQuitButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, CloseQuit);
UIManager.AddEvent(viewButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, ChangeView);
UIManager.AddEvent(singleButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, OnPointEnter);
UIManager.AddEvent(shadowButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, OnPointEnter);