AR文件更新流程&AR网络延时问题
This commit is contained in:
1 parent
16cd2fd26b
commit
74ba5790f9
18 files changed
+867
-508
No files matched your search
@@ -17,48 +17,55 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
//private readonly MapWorkoutService service = new MapWorkoutService();
|
||||
|
||||
public UserResultModel CurrentUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属人ID
|
||||
/// </summary>
|
||||
public int BelongUserId
|
||||
{
|
||||
get
|
||||
{
|
||||
return App.CurrentUser.Id;
|
||||
}
|
||||
get { return App.CurrentUser.Id; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录是否完毕
|
||||
/// </summary>
|
||||
public bool IsCompleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否需要计算排名
|
||||
/// </summary>
|
||||
public bool IsNeedRanking { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 骑行记录索引(用于中断骑行,继续骑行)
|
||||
/// </summary>
|
||||
public int ContinueIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 骑行状态
|
||||
/// </summary>
|
||||
public CyclingStateEnum CyclingState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 赛事Id
|
||||
/// </summary>
|
||||
public int Competitionid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前已经骑行的距离(表示用户现在在的距离,并不是实际骑的距离)
|
||||
/// </summary>
|
||||
public double EndDistance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上次骑行的距离
|
||||
/// </summary>
|
||||
public double PreDistance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 继续骑行记录标志
|
||||
/// </summary>
|
||||
public string ContinueMark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 厂商Id
|
||||
/// </summary>
|
||||
@@ -67,14 +74,17 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
public string ManufacturerName { get; set; }
|
||||
|
||||
public int? AntModelId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 骑行数据
|
||||
/// </summary>
|
||||
public List<TargetData> RiderDatas = new List<TargetData>();
|
||||
|
||||
/// <summary>
|
||||
/// 当前路线
|
||||
/// </summary>
|
||||
public Route CurrentRoute { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 骑行记录Id
|
||||
/// </summary>
|
||||
@@ -88,14 +98,17 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
/// 当前给骑行台发送数据的模式
|
||||
/// </summary>
|
||||
public SendDataMode SendDataMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 临时使用的坡度
|
||||
/// </summary>
|
||||
public double SlopeGrade { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 临时使用的海拔
|
||||
/// </summary>
|
||||
public double Elevation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前路书开始的距离
|
||||
/// </summary>
|
||||
@@ -108,6 +121,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
public int? LastFrame { get; set; }
|
||||
|
||||
public int RoomId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否已经保存成功
|
||||
/// </summary>
|
||||
@@ -123,25 +137,25 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
|
||||
public RouteResultParam selectParam { get; set; }
|
||||
|
||||
public int SaveWithLocalRecordAysnc(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName,string recordId,string path)
|
||||
public int SaveWithLocalRecordAysnc(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName,
|
||||
string recordId, string path)
|
||||
{
|
||||
Saved = true;
|
||||
Dictionary<MapInterruptRecord, List<string>> recordData = new Dictionary<MapInterruptRecord, List<string>>();
|
||||
var recordData = new Dictionary<MapInterruptRecord, List<string>>();
|
||||
if (RiderDatas.Count <= 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
string newFileName = Guid.NewGuid().ToString();
|
||||
int FTP = Helper.GetFtp();
|
||||
double NP = Helper.GetNP(RiderDatas);
|
||||
|
||||
var newFileName = Guid.NewGuid().ToString();
|
||||
var FTP = Helper.GetFtp();
|
||||
var NP = Helper.GetNP(RiderDatas);
|
||||
//强度
|
||||
double IF = NP / FTP;
|
||||
var IF = NP / FTP;
|
||||
//训练量
|
||||
double TSS = (RiderDatas.Count * NP * IF) / (FTP * 3600) * 100;
|
||||
var TSS = (RiderDatas.Count * NP * IF) / (FTP * 3600) * 100;
|
||||
var averagePower = Helper.AveragePower(RiderDatas);
|
||||
|
||||
// AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId).data;
|
||||
//var recordId = Guid.NewGuid().ToString();
|
||||
|
||||
var ticks = RiderDatas.Last().Ticks;
|
||||
var interruptRecord = new MapInterruptRecord
|
||||
{
|
||||
@@ -151,17 +165,15 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
TotalDistance = CurrentRoute.RouteInstance.Distance,
|
||||
UserId = BelongUserId,
|
||||
RecordFileName = newFileName + ".txt",
|
||||
Ftp = FTP,//FTP设置
|
||||
Ftp = FTP,
|
||||
IF = Math.Round(IF, 2),
|
||||
Kj = RiderDatas.Sum(a => a._Power) / 1000,//消耗
|
||||
Kj = RiderDatas.Sum(a => a._Power) / 1000, //消耗
|
||||
Tss = Math.Round(TSS, 2),
|
||||
EndDistance = EndDistance,
|
||||
IsCompleted = IsCompleted,
|
||||
|
||||
//TrainingTime = TimeHelper.FormatSeconds(RiderDatas.Last().Ticks),//训练时间
|
||||
NormalizedPower = Math.Floor(NP),//标准化功率
|
||||
AveragePower = averagePower,//平均功率
|
||||
MaxPower = RiderDatas.Max(a => a._Power),//最大功率
|
||||
NormalizedPower = Math.Floor(NP), //标准化功率
|
||||
AveragePower = averagePower, //平均功率
|
||||
MaxPower = RiderDatas.Max(a => a._Power), //最大功率
|
||||
WeightKg = Math.Round(averagePower / App.CurrentUser.Weight, 2),
|
||||
Weight = App.CurrentUser.Weight,
|
||||
BicycleWeight = App.CurrentUser.BicycleWeight,
|
||||
@@ -169,14 +181,14 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
ContinueIndex = ContinueIndex,
|
||||
IsDelete = false,
|
||||
MapCompetitionId = Competitionid,
|
||||
ManufacturerName = ManufacturerName,//manufacturer == null ? "" : manufacturer.Name,
|
||||
ManufacturerName = ManufacturerName,
|
||||
DeviceNumber = DeviceNumber,
|
||||
IsRanking = IsNeedRanking,
|
||||
CurrentRouteStartDistance = CurrentRouteStartDistance,
|
||||
ManufacturerId = ManufacturerId,
|
||||
AntModelId = AntModelId,
|
||||
StartTime = StartTime,
|
||||
CreateTime = EndTime, //StartTime.AddSeconds(ticks),
|
||||
CreateTime = EndTime,
|
||||
Ticks = ticks,
|
||||
Mode = cyclingModel.ToString(),
|
||||
Param = Newtonsoft.Json.JsonConvert.SerializeObject(selectParam),
|
||||
@@ -185,10 +197,10 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
LastFrame = LastFrame,
|
||||
RoomId = RoomId
|
||||
};
|
||||
//var range = new MapSpeedRange().GetSpeedRange(RiderDatas, CurrentRoute.RouteInstance.Distance);
|
||||
interruptRecord.SpeedRange = null; //JsonConvert.SerializeObject(range);
|
||||
|
||||
double process = Math.Round((EndDistance - interruptRecord.CurrentRouteStartDistance) / CurrentRoute.RouteInstance.Distance, 2);
|
||||
interruptRecord.SpeedRange = null;
|
||||
|
||||
var process = Math.Round((EndDistance - interruptRecord.CurrentRouteStartDistance) / CurrentRoute.RouteInstance.Distance, 2);
|
||||
interruptRecord.Progress = process > 1 ? 1 : process;
|
||||
|
||||
var cadences = RiderDatas.Where(a => a._Cadence.HasValue && a._Cadence.Value > 0);
|
||||
@@ -196,19 +208,16 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
{
|
||||
interruptRecord.AverageCadence = Math.Round(cadences.Average(a => a._Cadence.GetValueOrDefault(0)));
|
||||
}
|
||||
|
||||
interruptRecord.MaxCadence = Math.Round(RiderDatas.Max(a => a._Cadence.GetValueOrDefault(0)));
|
||||
interruptRecord.AverageHeartRate = Math.Round(RiderDatas.Average(a => a._HeartRate.GetValueOrDefault(0)));
|
||||
interruptRecord.MaxHeartRate = RiderDatas.Max(a => a._HeartRate.GetValueOrDefault(0));
|
||||
//service.CreateRecordCyclingData(interruptRecord);
|
||||
//保存骑行记录txt
|
||||
|
||||
//var path = Helper.GetDataDir("MapWorkoutRecords" + "/" + interruptRecord.Id);
|
||||
//var path = PFConstants.MapWorkoutRecordFolder + "/" + interruptRecord.Id;
|
||||
var files = new List<string>();
|
||||
try
|
||||
{
|
||||
var fname = path + "/" + newFileName + ".txt";
|
||||
using (var fs = new FileInfo(fname).OpenWrite())
|
||||
var fileName = path + "/" + newFileName + ".txt";
|
||||
using (var fs = new FileInfo(fileName).OpenWrite())
|
||||
{
|
||||
var stream = new StreamWriter(fs);
|
||||
stream.BaseStream.Seek(0, SeekOrigin.End);
|
||||
@@ -218,13 +227,15 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
}
|
||||
stream.Flush();
|
||||
stream.Close();
|
||||
files.Add(fname);
|
||||
files.Add(fileName);
|
||||
}
|
||||
|
||||
//图片
|
||||
if (!string.IsNullOrEmpty(imageName))
|
||||
{
|
||||
files.Add(imageName);
|
||||
}
|
||||
|
||||
//持久化序列化对象
|
||||
var recordString = JsonConvert.SerializeObject(interruptRecord);
|
||||
var recordFilePath = path + "/" + "record" + ".txt";
|
||||
@@ -235,48 +246,44 @@ namespace Assets.Scenes.Ride.Scripts.Model
|
||||
Helper.DelectDir(path);
|
||||
Debug.Log(ex.Message);
|
||||
}
|
||||
|
||||
recordData.Add(interruptRecord, files);
|
||||
return SaveDataAysnc(recordData, path);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存数据
|
||||
/// </summary>
|
||||
/// <param name="base64Image"></param>
|
||||
/// <returns></returns>
|
||||
public int SaveDataAysnc(Dictionary<MapInterruptRecord, List<string>> data,string path)
|
||||
public int SaveDataAysnc(Dictionary<MapInterruptRecord, List<string>> data, string path)
|
||||
{
|
||||
if (data != null && data.Count > 0)
|
||||
if (data == null || data.Count <= 0) return -1;
|
||||
|
||||
try
|
||||
{
|
||||
//var path = Helper.GetDataDir("MapWorkoutRecords");
|
||||
//Task.Run(() => {
|
||||
try
|
||||
{
|
||||
var record = data.FirstOrDefault();
|
||||
MapInterruptRecordApi service = new MapInterruptRecordApi();
|
||||
var result = service.Add(record.Key, record.Value);
|
||||
var record = data.FirstOrDefault();
|
||||
var service = new MapInterruptRecordApi();
|
||||
var result = service.Add(record.Key, record.Value);
|
||||
|
||||
if (result.result)
|
||||
if (result.result)
|
||||
{
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
//删除文件
|
||||
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
Helper.DelectDir(path);
|
||||
}
|
||||
//});
|
||||
return result.data.RankingId;
|
||||
Helper.DelectDir(path);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Log(e.Message);
|
||||
return result.data.RankingId;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Log(e.Message);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class TempRecordData
|
||||
{
|
||||
public int RoomId { get; set; }
|
||||
|
||||
Reference in new issue
Block a user