2011-11-21 42 views
19

Phiên bản ngắn:Đồng bộ hóa thiết bị Android qua GPS?

Vấn đề: Tôi cần một số thiết bị Android để làm điều gì đó cùng một lúc (trong khoảng 100 mili giây). Ví dụ: tôi muốn tất cả các thiết bị phát âm thanh nhất định tại thời điểm được xác định trước đó.

Câu hỏi: Tôi có thể sử dụng thời gian GPS để đảm bảo đồng hồ của thiết bị được đồng bộ hóa không?

phiên bản dài hơn:

Một số người có các thiết bị Android đang ở vị trí ngoài trời cùng (đối với một số sự kiện thể thao cụ thể). Tất cả các thiết bị sẽ báo hiệu các sự kiện nhất định cùng một lúc. (Thời gian nào sẽ được xác định trước khi bàn tay và điều quan trọng là họ làm điều đó vào đúng thời điểm đó, miễn là họ làm điều đó cùng một lúc). FWIW: những sự kiện đó sẽ giúp mọi người bắt đầu hoạt động thể thao của họ cùng một lúc.

Dưới đây là các giả định tôi có thể làm:

  • Có thể hoặc không thể phủ sóng di động. (Ở ngoài trời và có thể ở xa khu vực đô thị)
  • Các thiết bị có thể hoặc không thể kết nối với internet. (Một số người có thể không có gói dữ liệu)
  • Thiết bị có thể nói chuyện với nhau. Nếu các thiết bị không được kết nối với internet, chúng sẽ được kết nối qua wifi (mặc dù wifi có thể không có cổng internet).
  • Thiết bị ở bên ngoài (chứ không phải bên trong các tòa nhà). (Tốt, điều đó có nghĩa là tất cả các thiết bị đều có thể sửa chữa GPS)
  • Các thiết bị này gần nhau (nghĩa là trong phạm vi 300 m2). (Không chắc chắn nếu điều đó quan trọng)

Tôi không thể sử dụng đồng hồ bên trong để biết thời điểm phát sự kiện: người dùng có thể thay đổi thời gian theo cách thủ công và ngay cả khi thiết bị được đặt để lấy thời gian từ mạng di động, mạng đó có thể không cung cấp thời gian chính xác. Hai thiết bị có thể được đặt vào các mạng khác nhau và do đó thời gian của chúng có thể không được đồng bộ hóa rất tốt.

Khi khởi động ứng dụng, mỗi thiết bị có thể yêu cầu sửa chữa GPS và lưu sự khác biệt giữa thời gian GPS và đồng hồ bên trong của thiết bị. Bây giờ các bậc thầy có thể công bố các sự kiện dựa trên thời gian GPS này (bằng cách sử dụng nó là đồng hồ nội bộ và trừ đi các bù đắp nó đã lưu trước đó).

Điều này có đủ chính xác và đáng tin cậy không?

Nhiều cảm ơn trước, Andreas Leitner

+0

bạn có thể sử dụng ứng dụng GPS Thời gian từ thị trường https://market.android.com/details?id=net.sourcewalker.gpstime – andreasg

+0

Đó là một ý tưởng tuyệt vời. Tôi có thể sử dụng ứng dụng này để thử nếu nó hoạt động. Cuối cùng tôi muốn xây dựng chức năng này vào ứng dụng của tôi mặc dù. Tôi không muốn yêu cầu người dùng của mình cài đặt một ứng dụng khác (mặc dù họ không cần nó) và thậm chí còn có vấn đề hơn đòi hỏi quyền truy cập root. – user1057534

+0

Xin chào, tôi đang theo đuổi điều tương tự. Bạn đã bao giờ có thể đạt được điều này? –

Trả lời

13

Bạn có thể nhận được sự khác biệt thời gian trong mili giây từ currentTimeMillis()Location.getTime() trong onLocationChanged() gọi lại. Sử dụng requestSingleUpdate()


Tôi chỉ muốn nói thêm rằng, nếu người dùng có một kết nối dữ liệu mà họ có thể sử dụng NTP thời gian, mà thậm chí chính xác hơn, như GPS đồng hồ nội bộ có thể trôi dạt và sửa chữa phải mất một thời gian.


EDIT: Tôi muốn chỉnh sửa câu trả lời này.Sau khi làm việc như một nhà phát triển GNSS trong hệ điều hành Android, tôi nhận ra rằng nhiều OEM 'lớn' đã làm hỏng điều này. Thông thường các câu NMEA được tạo ra ở ngăn xếp của chipset hoặc GNSS. Đôi khi thời gian là đúng, nó phụ thuộc vào việc thực hiện.

Ngoài ra còn có sự cố về bước nhảy vọt thứ hai. Thời gian GPS không phải là giờ UTC. Và kể từ ngày writing it is 18 seconds ahead này.

Cũng GPS thời gian từ Location đối tượng hiện nay có thời gian hệ thống theo các tài liệu

TLDR: sử dụng NTP time

+3

Âm thanh tuyệt vời. Tôi không cần phải thay đổi thời gian của hệ thống. Nó là đủ nếu mọi thiết bị (trong đó có ứng dụng của tôi cài đặt) tính toán bù đắp đó và do đó có thể làm việc với một thời gian tham khảo chung. – user1057534

2

Bạn không thể dựa hoàn toàn vào thời gian GPS là có một vấn đề được biết đến với một số thiết bị mà thời gian được truy xuất cho một số thiết bị trước một ngày. Trong trường hợp đó, bạn có thể nhận được khoản chênh lệch lớn.

http://code.google.com/p/android/issues/detail?id=23937

Một cách giải quyết để giải quyết vấn đề này đã được thảo luận ở đây: Android : Samsung Galaxy Tabs and Android 2.2 Devices Showing GPS date 1 Day Advance from 1st jan 2012

0

UTC không có nguồn gốc từ GPS, apk đè GPS. Android được thiết lập để bỏ qua đồng hồ GPS. Bạn là getTime() là NIST. không phải GPS

+0

Nếu điều này được cho là một câu trả lời cho câu hỏi ban đầu, thì bạn cần cải thiện nó. – DuncanKinnear

Các vấn đề liên quan