Có, có. Các ACTION_TIME_CHANGED
Intent được phát sóng khi thời gian thiết bị được thay đổi, và bạn có thể có một phương pháp sẽ kích hoạt khi Intent này được phát hiện.
Mục đích này đã ở trong Android kể từ API cấp 1, vì vậy nó sẽ hoạt động trên bất kỳ nền tảng nào bạn có thể cần phải tương thích.
Bạn sẽ cần phải xử lý các Broadcast với một BroadcastReceiver
:
public class TimeChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do whatever you need to
}
}
Bạn cũng sẽ cần phải thêm một cái gì đó như thế này để Manifest của bạn:
<receiver android:name=".TimeChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
</receiver>
này sẽ cho phép Android để biết kích hoạt bộ thu của bạn khi phát hiện loại ý định này.
Dường như điều này không quan tâm ai chỉnh sửa thời gian, nhưng cũng không kích hoạt trên các điều chỉnh tự động khi bạn được đồng bộ hóa với mạng. Nếu bạn mất mạng và lấy lại nó, tuy nhiên, điều này có thể sẽ cháy vì thời gian của bạn sẽ hơi khác (giả sử bạn đang sử dụng thời gian mạng tự động).
Tuy nhiên, trong khi đồng hồ trên điện thoại di động không phải là đặc biệt là chính xác (vì chúng thường dựa vào đồng bộ hóa với tín hiệu thời gian mà chúng nhận được) trong kinh nghiệm của chúng, chúng hoàn toàn không được mất quá 30 giây hoặc một phút mỗi giờ, ở mức tối đa tuyệt đối, vì vậy nếu thay đổi thời gian nhỏ, bạn có thể giả sử nó là tự động. Leap giây, khi chúng được thêm vào, cũng sẽ có khả năng tạo ra một thông báo thay đổi thời gian, mặc dù đây rõ ràng là nhỏ và không thường xuyên.
Bạn có thể sử dụng ConnectivityManager
để theo dõi xem điện thoại có kết nối hay không và bạn có thể thay đổi hành vi dựa trên đó (ví dụ: miễn là kết nối mạng và thời gian tự động/mạng, bỏ qua thời gian thay đổi hoặc một cái gì đó) nhưng tôi không thể tìm thấy bất kỳ ý định liên quan đến mất/lấy lại kết nối mạng, do đó bạn có thể sẽ phải sử dụng một phương pháp bỏ phiếu.
Phương pháp này có khác biệt giữa người dùng ** thay đổi thời gian và thời gian thay đổi do cập nhật mạng không? –
Đó là một câu hỏi rất hay. Câu trả lời dường như là không, vì nó đã kích hoạt khi tôi đặt điện thoại của tôi vào chế độ trên máy bay trong vài phút và sau đó bật radio trở lại. Tuy nhiên, nó không xuất hiện để kích hoạt khi bạn đang nhận được cập nhật thời gian tự động từ mạng và nó làm cho điều chỉnh nhỏ của nó để giữ cho thời gian của bạn chính xác. Có một vài lựa chọn để nhận thời gian rất chính xác: bạn có thể sử dụng dấu thời gian trên một đối tượng địa điểm, rất chính xác nhưng không thể yêu cầu theo yêu cầu (bạn có thể nghe chúng vào và khi nào bạn biết thời gian tại thời điểm đó). – matt5784
Xem http://stackoverflow.com/a/12320918/1003511 để có thể triển khai thời gian từ vị trí. Dường như có thể là một cách để kích hoạt cài đặt đồng bộ hóa thời gian tự động của thiết bị nhưng điều này có lẽ không phải là điều tốt nhất cho người dùng của bạn nếu họ đã đặt thời gian theo cách thủ công vì một lý do nào đó. Xem http://stackoverflow.com/a/8214204/1003511 để biết thêm thông tin về điều này. Tôi cũng đã chỉnh sửa câu trả lời của mình. – matt5784