Ứng dụng dự đoán thành tích chạy bộ theo thời gian thực - Pace Teller
(paceteller.tera.co.kr)Xin chào, tôi đang phát triển sản phẩm một mình.
Dạo này chạy bộ là sở thích của tôi, nhưng các ứng dụng nổi tiếng hiện có lại không có tính năng tôi cần nên tôi đã tự làm thử.
Tôi phát triển bằng Flutter, và phiên bản đầu tiên để kiểm chứng ý tưởng ban đầu được hoàn thành chỉ trong khoảng 2 tuần, nhưng để trau chuốt và nâng nó lên mức có thể phát hành thì mất khoảng 3~4 tháng.
Hiện ứng dụng đã được phát hành trên Apple và Google Store nên có thể tải về, bạn cũng có thể truy cập website rồi nhấn vào liên kết của từng store để cài đặt thuận tiện hơn.
Giới thiệu dịch vụ
Pace Teller là ứng dụng cho biết thành tích dự kiến theo thời gian thực của cự ly 10km, bán marathon và marathon đầy đủ trong khi đang chạy.
Vì sao tôi làm ra nó
- Trong lúc thực hiện thử thách “mỗi ngày chạy 5~6km”, tôi chợt tò mò rằng nếu cứ tiếp tục chạy với tốc độ hiện tại đến cuối thì thành tích dự kiến cho 10km sẽ là bao nhiêu.
- Các ứng dụng chạy bộ có chức năng xem tốc độ trung bình, nhưng không dễ để tự hình dung trong đầu thành tích thực tế sẽ ra sao tùy theo trạng thái ở đoạn cuối.
- Người chạy thường xuyên có thể dự đoán đại khái, nhưng với những ai khó tính ra thành tích ước lượng thì tôi đã phát triển ứng dụng này cho họ.
- Khi thực sự vừa chạy vừa nghe thành tích dự kiến, nó giúp tôi rất nhiều trong việc tạo động lực hướng tới mục tiêu và điều chỉnh thể trạng như giảm pace.
- Ban đầu tôi làm để dùng một mình, nhưng sau khi dùng thử thấy quá ổn nên mạnh dạn viết bài lên Show GN.
Cách tính thành tích dự kiến
- Quãng đường đã chạy được tính theo tốc độ trung bình, còn quãng đường còn lại được tính dựa trên pace của 20% đoạn gần nhất để cung cấp thành tích dự kiến theo thời gian thực.
- Ngoài ra, tôi cũng cho phép nghe thành tích qua hướng dẫn bằng giọng nói (TTS).
- Tuy nhiên, hạn chế của cách tính này là nếu pace ở đoạn cuối quá tốt thì thành tích dự kiến có thể trở nên tốt quá mức.
- Hiện tại tôi chưa tính đến trường hợp pace cải thiện hay xấu đi theo thể trạng, nhưng sau này tôi dự định hiệu chỉnh bằng cách hỏi người dùng về tình trạng thể lực sau khi kết thúc buổi tập.
Đặc điểm dịch vụ
- Có thể ghi lại hầu hết các chỉ số mà một ứng dụng chạy bộ cơ bản thường cung cấp.
- Cung cấp các chức năng lọc theo buổi tập, xem lịch và xem thống kê.
- Hỗ trợ nhập/xuất file GPX. (Tôi đã làm để việc mang dữ liệu từ ứng dụng này sang dịch vụ khác được thuận tiện hơn)
- Có chức năng nhập dữ liệu Strava hoặc gửi (tự động) lên Strava.
- Với các dịch vụ cho export toàn bộ GPX như RunKeeper, chỉ cần tải file về, giải nén rồi nhập vào là dữ liệu sẽ được thêm một lần.
- Người dùng thiết bị Galaxy có thể nhập dữ liệu sức khỏe và ánh xạ nhịp tim với dữ liệu bài tập.
- Ứng dụng sử dụng SQLite DB nội bộ nên chạy nhanh vì không lưu dữ liệu lên máy chủ bên ngoài.
- Nếu cá nhân tự nhập Open Weather Map API key thì thông tin thời tiết cũng sẽ được ghi lại tự động (dù độ chính xác có thể hơi thấp).
- Hỗ trợ tiếng Anh/tiếng Hàn.
Các tính năng dự định trong tương lai
- Tôi muốn thử làm một ứng dụng chạy trên đồng hồ.
- Đặc biệt, vì nhiều người dùng Garmin nói rằng họ rất tò mò về thành tích dự kiến cho cự ly marathon đầy đủ, nên nếu làm thì có lẽ tôi sẽ phải tạo một ứng dụng Garmin.
- Hiện giờ tôi đang chạy trong tình trạng vừa mở ứng dụng trên đồng hồ vừa mở ứng dụng này, rồi bấm cả hai cùng lúc.
- Tôi dự định cải thiện những điểm còn thiếu liên quan đến cadence và biểu đồ pace.
- Tôi vẫn đang cân nhắc chức năng lưu dữ liệu lên máy chủ, nhưng khả năng cao sẽ phát triển. Hiện tại nếu không xuất ra file GPX thì khi xóa ứng dụng, toàn bộ dữ liệu có thể biến mất. Tuy nhiên, nếu đã bật thiết lập tự động gửi lên Strava thì dữ liệu sẽ được lưu trên Strava nên có thể yên tâm.
- Tôi cũng đang cân nhắc bổ sung các tính năng xã hội như cộng đồng hoặc khoe thành tích. Dù vậy, vì Strava đã làm rất tốt rồi nên tôi vẫn băn khoăn không biết có thực sự cần thêm hay không.
- Tôi cũng đang suy nghĩ về việc biến các tuyến chạy thành “Route” để cung cấp kiểu dịch vụ như “ở khu này thì cung đường nào là tốt”, nhưng vì các ứng dụng khác cũng đã làm nên phần này tôi vẫn đang cân nhắc.
Cảm nhận sau khi phát triển
- Điều tôi cảm nhận trong quá trình phát triển là... “Wow, một ứng dụng như thế này mà một người làm một mình, lại có thể làm nhanh đến vậy sao??” và đây cũng là một sản phẩm khiến tôi trực tiếp cảm nhận được sự đáng kinh ngạc của việc “phát triển có tận dụng AI” mà chắc hẳn nhiều người cũng từng trải nghiệm.
- Trước đây khi làm cả ứng dụng iOS và Android theo native, mỗi lần hoàn thành một bên rồi phải làm tiếp bên còn lại, tôi thường bị hụt hẫng tinh thần.
- Vì thế tôi thử bắt đầu với Flutter, và ít nhất về mặt “căng thẳng tinh thần” thì tôi rất hài lòng.
- Tuy nhiên, các package và library thường xuyên được nâng cấp, kéo theo các vấn đề phụ thuộc nên tôi đã khá vất vả, và đây có lẽ vẫn sẽ là điều đáng lo về sau.
- Dữ liệu như tốc độ mà GPS trả về không hoàn hảo, nên trong quá trình tìm nhiều cách để nâng độ chính xác của công thức tính, tôi đã tốn khá nhiều thời gian để tăng độ hoàn thiện.
- Tất nhiên tôi cũng nhận được rất nhiều trợ giúp từ AI, nên cũng có không ít lúc bị quay vòng vòng, nhưng vẫn không thể không dùng.
- Như thường lệ, việc gắn thanh toán định kỳ trên cả hai store vẫn rất vất vả.
4 bình luận
Thật ra các vấn đề như phụ thuộc thì dù làm native cũng vẫn phải lo như nhau.. hehe
Bạn có thể chia sẻ đó là package nào không?
Vâng, đúng là vậy ^^ Ý bạn là gói nào vậy? Bạn đang muốn nói là đã gặp vấn đề phụ thuộc ở gói nào phải không? Vì chuyện này xảy ra khá thường xuyên, và đó cũng là vấn đề tôi gặp phải khi còn chưa hiểu rõ về Flutter nên thật ra tôi cũng không nhớ rõ lắm ^^
Strava sắp ngừng dịch vụ tại Hàn Quốc..!
Vâng, ứng dụng đó đã bị gỡ khỏi cửa hàng rồi. Nhưng không phải là không thể sử dụng dịch vụ. Người dùng hiện tại vẫn có thể dùng, và cũng có thể dùng trên web.