Пример #1
0
        public async Task DecodeAsync(MemoryActivity dest = null)
        {
            Name = _file.GetNameWithoutExtension();
            var input = await _file.OpenForReadAsync(); // file stream

            if (input.Length == 0)
            {
                return;
            }
            MemoryActivity activity = dest != null ? dest : new MemoryActivity();
            // use the appropriate importer type
            ActivityImporter importer = null;

            if (_file.Name.EndsWith(".fit", StringComparison.OrdinalIgnoreCase))
            {
                importer = new FitImporter(activity);
            }
            else if (_file.Name.EndsWith(".tcx", StringComparison.OrdinalIgnoreCase))
            {
                importer = new TcxImporter(activity);
            }
            if (importer != null)
            {
                await importer.LoadAsync(input);
            }

            await UpdateMetadata(ActivitySummary.FromActivity(dest));
        }
Пример #2
0
        /// <summary>
        /// Recodes the activity
        /// </summary>
        /// <returns></returns>
        public MemoryActivity Repair()
        {
            var activity = new MemoryActivity();

            foreach (var frame in TimeFrames)
            {
                activity.AddTimeFrame(frame);
            }

            return(activity);
        }
Пример #3
0
        public override async Task GetPropertiesAsync()
        {
            try
            {
                var folder = await GetFolderAsync();

                Name = Path.GetFileNameWithoutExtension(_file.Name);
                var metaDataFile = await folder.GetFileAsync(MetaDataFileName);

                bool decodedFromMetaData = false;
                if (metaDataFile != null)
                {
                    try
                    {
                        // read properties from JSON metadata file - way faster than decoding FIT file
                        using (var stream = await metaDataFile.OpenForReadAsync())
                        {
                            using (var textReader = new StreamReader(stream))
                            {
                                using (var jsonReader = new JsonTextReader(textReader))
                                {
                                    var serializer = new JsonSerializer();
                                    var summary    = serializer.Deserialize <ActivitySummary>(jsonReader);
                                    CopyFrom(summary);
                                    // workaround (v1.8): start time has not been serialized in the first versions
                                    if (StartTime != System.DateTime.MinValue)
                                    {
                                        decodedFromMetaData = true;
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex);
                    }
                }

                if (!decodedFromMetaData)
                {
                    await _file.GetPropertiesAsync(); // get file properties

                    var time = Environment.TickCount;
                    // decode activity and refresh summary info
                    var activityTmp = new MemoryActivity()
                    {
                        Name = this.Name
                    };
                    await DecodeAsync(activityTmp);

                    CopyFrom(activityTmp);

                    Log.Diagnostics("Decoding of {0} took {1} sec", _file.Name, (Environment.TickCount - time) / 1000.0f);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
        }