GPS Speedometer 6/9/2026 · 13 phút đọc

Bản đồ dòng thời gian: xem lại từng giây của mỗi chuyến đi, hoàn toàn ngoại tuyến

GPS Speedometer 1.3 có thêm bản đồ dòng thời gian — lộ trình tô màu theo tốc độ, thanh thời gian kéo được, và phát lại 10x/60x/300x để trả lời 'lúc 7h42 tôi đang ở đâu?' mà không gửi đi một toạ độ nào.

Ảnh chụp GPS Speedometer

Bảng tóm tắt một chuyến đi cho bạn biết chuyến đó dài 12,7 km và mất 32 phút. Nó không cho bạn biết rằng tám phút trong số đó là đứng yên ở ba chỗ khác nhau, rằng cây số đầu tiên bạn bò từng mét rồi mới giữ được 50 km/h ở đoạn giữa, hay chính xác lúc 21:10 — khi điện thoại đổ chuông — bạn đang ở đâu.

Bản đồ dòng thời gian trong GPS Speedometer 1.3 lấp đúng khoảng trống đó. Nó trải một chuyến đi đã ghi ra theo hai chiều cùng lúc: theo không gian, là một lộ trình trên bản đồ tô màu theo tốc độ; và theo thời gian, là một thanh kéo được mà mỗi cột là một khoảnh khắc của chuyến đi. Kéo thanh thì một điểm đánh dấu chạy dọc lộ trình. Bấm phát thì cả chuyến được tua lại ở 10×, 60× hoặc 300× thời gian thật.

Mọi thứ diễn ra trong máy. Toạ độ không rời khỏi thiết bị.

Bản đồ dòng thời gian thực chất là gì

Nếu bạn từng dùng một timeline visualizer cho file GPX hay bản xuất lịch sử vị trí, bạn đã hiểu ý tưởng: một vệt đường không chỉ là một đường kẻ, nó là một đường kẻ có gắn đồng hồ. Mỗi điểm mang theo một mốc giờ, nên cùng một dữ liệu có thể đọc theo hai cách.

  • Đọc như địa lý, bạn có lộ trình: đi đâu, qua phố nào, được bao xa.
  • Đọc như dòng thời gian, bạn có câu chuyện: khởi hành lúc mấy giờ, ngồi bao lâu ở cái ngã tư đó, đoạn nào mới thực sự chạy được.

Phần lớn app tốc độ kế và app ghi lộ trình chỉ cho bạn cách đọc thứ nhất: một đường kẻ tĩnh và một thẻ tóm tắt. Bản đồ dòng thời gian đặt hai cách đọc cạnh nhau và khoá chúng vào nhau — kéo đầu đọc trên thanh thời gian thì điểm đánh dấu trên bản đồ chạy theo, chạm vào một chặng thì cả hai cùng nhảy tới.

Bản đồ dòng thời gian của GPS Speedometer hiển thị lộ trình 12,7 km qua Hà Nội, tô màu theo tốc độ, đầu đọc ở đầu chuyến Cùng chuyến đi được kéo tới 21:10, số liệu hiển thị 26 km/h và 9,42 km đã đi, bản đồ căn lại theo điểm đánh dấu
Trái: toàn bộ lộ trình trong một khung hình. Phải: cũng chuyến đó, kéo tới +0:19:55 — 26 km/h, 9,42 km đã đi, độ cao 10 m.

Lộ trình được tô theo tốc độ, không phải tô cho có

Một vệt đường một màu là lãng phí cả tấm bản đồ. Trong bản đồ dòng thời gian, từng mét lộ trình được tô bằng đúng tốc độ bạn đang chạy ở đó:

MàuTốc độThường có nghĩa là
Xám xanhdưới 5 km/hĐứng yên, chờ, dắt xe
Xanh lá5–30 km/hBò trong phố, kẹt xe, đường đông
Xanh dương30–60 km/hNhịp bình thường trong đô thị
Camtrên 60 km/hĐường thoáng
Đỏvượt giới hạn của bạnNgưỡng bạn đặt trong cảnh báo tốc độ

Dòng cuối mới là dòng đáng giá: nếu bạn đã đặt giới hạn tốc độ cho tính năng cảnh báo, chính giới hạn đó tô lại lộ trình. Một chuyến mà bạn lỡ vượt ngưỡng sẽ hiện màu đỏ đúng chỗ đã vượt, trên bản đồ, kèm mốc giờ — chứ không phải một con số trong bảng tóm tắt mà bạn buộc phải tin.

Màu được chọn theo tốc độ đã làm mượt nhẹ (trung bình trượt 5 mẫu), chỉ để vệt đường nhìn ra một đường liền. Tốc độ GPS thô nhảy vài km/h mỗi giây, tô thẳng theo nó qua một ngưỡng màu thì con đường thành một vệt lấm tấm. Con số bạn đọc và các cột bạn kéo luôn là mẫu thô — làm mượt là chuyện của mắt, không phải của dữ liệu.

Chỗ dừng được tìm tự động, không phải đoán

Điều hữu ích nhất mà một dòng thời gian nói được về chuyến đi thường là: thời gian đã đi đâu mất. Nên trước khi vẽ bất cứ thứ gì, app cắt mỗi chuyến thành các chặng di chuyển và các chỗ dừng.

Quy tắc cố ý đặt chặt tay:

  • Một mẫu được tính là đứng yên khi tốc độ dưới 1 m/s (3,6 km/h).
  • Một mạch mẫu đứng yên chỉ thành chỗ dừng thật nếu kéo dài ít nhất 45 giây. Một cái đèn đỏ không đáng có điểm đánh dấu riêng.
  • Một mạch mẫu di chuyển chỉ thành chặng thật nếu kéo dài ít nhất 20 giây. Ba giây nhúc nhích giữa một lần chờ dài không phải là “lên đường”.
  • Mạch nào ngắn hơn ngưỡng sẽ bị nhập vào hai bên, ngắn nhất trước, cho tới khi chỉ còn các chặng thật.

Kết quả là dòng tóm tắt — Tổng 0:32:09 · chạy 21 phút · 3 lần dừng (10 phút) — và một hàng thẻ chạm được ở dưới: 20:50 · 1.20 km trong 3 phút, 20:53 · dừng 2 phút, 20:56 · 3.30 km trong 6 phút… Chạm vào thẻ nào thì cả bản đồ lẫn đầu đọc nhảy tới đầu chặng đó. Mỗi chỗ dừng cũng có một chấm xám riêng trên bản đồ, vì một chỗ bạn ngồi sáu phút thì nhìn vệt đường trơn không thể nào thấy được.

Cận cảnh thanh dòng thời gian: các cột tốc độ xanh lá và xanh dương, khối xám đánh dấu chỗ dừng, vạch giờ cách nhau năm phút, đầu đọc trắng ở 21:10
Thanh thời gian. Mỗi cột là một lát giờ; khối xám là chỗ dừng đã nhận ra; vạch dưới là giờ đồng hồ thật.

Thanh thời gian là cái đồng hồ, không phải cái thước đo quãng đường

Đây chính là chi tiết làm nên khác biệt giữa một bản đồ dòng thời gian và một bản đồ lộ trình gắn thêm thanh trượt.

Thanh được vẽ theo thời gian, không theo quãng đường hay theo số thứ tự mẫu. Mười phút đứng yên và mười phút chạy 60 km/h chiếm đúng một bề rộng như nhau. Đó chính là thứ bạn cần khi câu hỏi là “chuyện này mất bao lâu?” — một thanh vẽ theo quãng đường sẽ bóp các chỗ dừng của bạn xuống còn con số không, mà đó lại đúng là thông tin bạn đang tìm.

Mỗi cột lấy tốc độ lớn nhất trong lát của nó, không bao giờ lấy trung bình. Mười giây phóng nhanh nằm trong một cột hai phút là chuyện có thật và phải nhìn thấy được; lấy trung bình là xoá nó đi. Cột xám đánh dấu các chặng dừng, còn nhãn vạch dưới đáy là giờ đồng hồ thật, giãn theo bước vừa vặn — 1, 2, 5, 10, 15, 30 phút, hoặc theo giờ với chuyến dài.

Kéo bất cứ đâu trên thanh, thẻ số liệu cập nhật ngay:

  • Giờ đồng hồ và thời gian đã trôi (21:10:14 · +0:19:55)
  • Tốc độ ngay tại thời điểm đó, theo đơn vị bạn chọn — km/h, mph hay hải lý/giờ — chuyển đỏ nếu vượt giới hạn
  • Quãng đường đã đi được tới lúc đó
  • Độ cao tại điểm đó

Giá trị giữa hai mẫu GPS được nội suy, nên kéo thanh cho cảm giác liên tục chứ không giật từng nấc.

Phát lại ở 10×, 60× và 300×

Thời gian thật là vô dụng với một chuyến đi mất cả tiếng. Bản đồ dòng thời gian có ba mức:

  • 10× — chuyến sáu phút xem hết trong 36 giây. Hợp để xem kỹ một pha xử lý hay một ngã tư khó.
  • 60× — mỗi giây là một phút chạy xe. Mức mặc định, và là mức đúng cho một chuyến đi làm bình thường.
  • 300× — năm phút mỗi giây. Dành cho những chuyến đường dài khi bạn chỉ muốn thấy hình dáng của cả ngày.

Phát lại chạy 25 khung/giây, bản đồ bám theo điểm đánh dấu nhưng chỉ khi điểm đó tới gần mép khung. Căn lại mỗi khung hình thì bản đồ rung và không zoom được; căn lại ở mép thì bạn vẫn phóng to vào một ngã tư mà xem tiếp được. Chạm vào bản đồ lúc nào là chế độ bám tắt hẳn, khung ở nguyên chỗ bạn đặt. Kéo thanh thời gian thì phát lại dừng — không thể vừa giằng cái đồng hồ vừa giằng đầu đọc.

Ngoại tuyến hoàn toàn, vì đó vốn là lý do tồn tại của app này

GPS Speedometer từ đầu đã là một tốc độ kế 100% ngoại tuyến: không tài khoản, không đăng nhập, một quyền duy nhất. Bản đồ dòng thời gian không làm thay đổi điều đó.

  • Toạ độ lấy từ cơ sở dữ liệu SQLite ngay trong máy. Không có lệnh gọi máy chủ nào để tải chuyến đi về, vì không có máy chủ nào cả.
  • Không có gì về chuyến đi được gửi đi. Không lộ trình, không mốc giờ, không chỗ dừng.
  • Lưu lượng mạng duy nhất là tile bản đồ OpenStreetMap, và chỉ với những ô bản đồ bạn chưa từng xem. Những request đó mang theo toạ độ ô bản đồ, không mang danh tính bạn; và khi một tile đã nằm trong cache thì mở lại vùng đó không cần mạng nữa.
  • Bản đồ vẽ bằng osmdroid chứ không phải Google Maps, nên app vẫn không phụ thuộc Google Play Services và vẫn cài được trên máy cũ hay máy đã gỡ dịch vụ Google.

Nếu bạn lên máy bay, bật chế độ máy bay và mở lại một chuyến đã từng xem, bản đồ dòng thời gian chạy y hệt như lúc còn dưới đất.

Làm để chạy mượt trên máy rẻ tiền

GPS Speedometer hỗ trợ từ Android 5.0 trở lên và vẫn được chạy thử trên thứ phần cứng không ai gọi là nhanh. Một chuyến ghi mỗi giây một mẫu trong hai tiếng là 7.200 điểm, và vẽ 7.200 đoạn bản đồ mỗi khung hình trên máy phổ thông thì không thể có kết cục tốt.

Nên bản đồ lược bớt: nhiều nhất 3.000 điểm được vẽ, lấy đều khắp chuyến đi — vẫn nhiều hơn hẳn mức màn hình điện thoại phân giải nổi. Thanh thời gian gom điểm vào các cột rộng 3 dp, nên chuyến hai tiếng và chuyến mười phút tốn công vẽ như nhau. Việc cắt chặng và tính quãng đường luỹ kế chạy trên luồng nền trước khi có gì chạm tới màn hình, nên mở một chuyến dài không làm giao diện đứng hình.

Cả tính năng này không thêm một thư viện nào. Không thư viện biểu đồ, không Compose, không đổi SDK bản đồ — chỉ một View tự vẽ hình chữ nhật lên Canvas, và cái osmdroid mà app vốn đã có.

Mở nó ở đâu

Danh sách lịch sử chuyến đi của GPS Speedometer, mỗi chuyến mở ra màn chi tiết có nút bản đồ dòng thời gian
Chuyến đi lưu trong máy và không bao giờ rời khỏi điện thoại.
  1. Ghi một chuyến như bình thường — tốc độ kế tự ghi trong lúc đang đo.
  2. Mở tab Chuyến đi và chạm vào chuyến bạn muốn xem.
  3. Ở màn chi tiết chuyến, chạm Bản đồ dòng thời gian.

Xong. Chuyến đi mở ra vừa khít toàn bộ lộ trình, ở giây đầu tiên, sẵn sàng để phát.

Những gì nó không làm

Nói thẳng về giới hạn:

  • Nó phát lại những chuyến do chính bạn ghi. Nó không phải công cụ nhập lịch sử vị trí; chưa có nhập từ Google Takeout hay từ file GPX.
  • Độ cao lấy từ định vị GPS, vốn kém chính xác hơn nhiều so với vị trí ngang trên điện thoại. Hãy đọc nó như một con số tham khảo.
  • Chuyến quá ngắn (vài phút) sẽ cho một thanh ít cột và gần như không có chỗ dừng nào được nhận ra — đúng, nhưng không có gì thú vị để xem.
  • Việc nhận chỗ dừng dùng ngưỡng cố định. Bò trong kẹt xe ở 4 km/h vẫn được tính là đang di chuyển, vì đúng là đang di chuyển.

Vì sao chúng tôi làm tính năng này

Mỗi con số mà một tốc độ kế đưa cho bạn là một con số bạn buộc phải tin. Bản đồ dòng thời gian thì ngược lại: nó trao cho bạn hình dáng thô của chuyện đã xảy ra và để bạn tự đối chiếu với bảng tóm tắt. Hai mươi mốt phút di chuyển trên tổng ba mươi hai phút không còn là con số trừu tượng, khi bạn nhìn thấy ba khối xám chiếm nốt phần còn lại.

Và vì tất cả chạy trong máy, đọc từ một cơ sở dữ liệu trong máy, nên không có gì để đăng ký và cũng không có gì để rò rỉ.

GPS Speedometer miễn phí trên Google Play — tốc độ kế GPS ngoại tuyến với đồng hồ kim và số, chế độ HUD, km/h / mph / hải lý, cảnh báo quá tốc độ, đồng hồ đo quãng đường, lịch sử chuyến đi lưu trong máy, và giờ là bản đồ dòng thời gian.

Google Play ↗
← Tất cả bài viết