tôi cần phải làm theo dõi nền GPS trên điện thoại Android, và tôi hiện đang có kế hoạch trên có hai kịch bản:theo dõi GPS Android và WakeLock
- Khi điện thoại được kết nối với một (ô tô) sạc, có được vị trí GPS thường xuyên (mỗi phút).
- Khi điện thoại không được kết nối với bộ sạc, chỉ có cuộc thăm dò ý kiến cho một vị trí sau mỗi 5-30 phút, tùy thuộc vào mức độ ảnh hưởng của pin.
Tôi biết rằng tôi cần triển khai theo dõi trong dịch vụ và có thể hiển thị thông báo để giữ cho dịch vụ luôn hoạt động. Tuy nhiên, tôi thu thập rằng điện thoại có thể chuyển sang chế độ ngủ bất cứ lúc nào, điều này sẽ dừng theo dõi GPS.
Đối với các trường hợp này, cách tốt nhất để thực hiện theo dõi GPS nền liên tục là gì, không có điện thoại đi ngủ và không tiêu hao quá nhiều điện?
Cho đến nay tôi thu thập được như sau:
Đối với kịch bản 1, tôi có lẽ sẽ cần một có được một WakeLock, và giữ cho CPU tỉnh táo mọi lúc (nhưng màn hình có thể ngủ). Ứng dụng MyTracks dường như đang thực hiện việc này trong TrackRecordingService. OpenGPSTracking dường như làm the same.
Đối với kịch bản 2, tôi có thể sử dụng AlarmManager để lên lịch kiểm tra sau mỗi x phút. Dịch vụ của tôi sẽ cần có một WakeLock tạm thời, chờ một vị trí GPS duy nhất, sau đó dừng lại và nhả WakeLock một lần nữa.
Cách sử dụng năng lượng so sánh với hai phương pháp này (WakeLock và AlarmManager vĩnh viễn)? GPS có thể nhận được vị trí chính xác trong một khoảng thời gian hợp lý khi chỉ kiểm tra sau mỗi 30 phút không?
Có một số câu hỏi liên quan đến StackOverflow, nhưng không có câu hỏi nào phù hợp với câu trả lời thỏa mãn. Một số người bán hữu ích:
- how to keep application running in background? keep collecting data? (chỉ cho tôi để MyTracks)
- Tracking user's sms and geo position in the background - is my idea working?
- Android service with always on GPS
Bất kỳ ý tưởng bao nhiêu wakelock ảnh hưởng đến pin? Và sẽ mất bao lâu để có được một vị trí nếu nó chỉ được thực hiện một lần sau mỗi vài phút? – Ralf
Tuổi thọ pin của thiết bị sẽ bị ảnh hưởng đáng kể bởi việc sử dụng API này. Không có được WakeLocks trừ khi bạn thực sự cần chúng, sử dụng mức tối thiểu có thể, và chắc chắn để phát hành nó càng sớm càng tốt. http://developer.android.com/reference/android/os/PowerManager.html#ACQUIRE_CAUSES_WAKEUP – Rohit