2011-10-14 44 views
5

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

  1. 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).
  2. 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:

Trả lời

5
  1. Khi điện thoại được kết nối với bộ sạc u có thể có được wakelock như ua lập kế hoạch để có được vị trí GPS thường xuyên, AlarmManager không có vẻ là một ý tưởng tuyệt vời trong trường hợp này.

  2. Khi điện thoại không được kết nối với bộ sạc, bạn có thể sử dụng trình quản lý báo thức vì bạn sẽ chỉ thăm dò ý kiến ​​cho một vị trí sau mỗi 5-30 phút. Nhận được wakelock sẽ ảnh hưởng đến tuổi thọ pin ur đáng kể.

Thực hiện tùy thuộc vào bạn.

Chúc mừng .... !!

+0

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

+0

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

6

Bạn có thể sử dụng bộ thu phát sóng nếu nguồn được kết nối hoặc không và thực hiện hành động của bạn cho phù hợp.

Ví điện kết nối:

public class PowerConnected extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_CONNECTED")){ 
     //Initialize your listener here... 
    } 
    } 

} 

Trong file manifest của bạn:

<receiver android:name=".receiver.PowerConnected" > 
<intent-filter > 
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> 
</intent-filter> 
</receiver> 

Khi điện được ngắt kết nối:

public class PowerDisconnected extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_DISCONNECTED")){ 
    //Do your task here...  
    } 
} 
} 

Trong file manifest của bạn:

<receiver android:name=".receiver.PowerDisconnected" > 
<intent-filter > 
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> 
</intent-filter> 
</receiver> 

Bây giờ bạn nên sử dụng service và khởi tạo GPS của mình tại đó. Khi nguồn được kết nối, hãy sử dụng GPS_Provider nếu không, hãy sử dụng network provider. Sử dụng wakelock nếu cần.

+0

Cảm ơn, điều này rất hữu ích. – Ralf

+0

bạn nên chấp nhận câu trả lời khác nó sẽ nổi như chưa trả lời. Thanks .. –

+2

Trong khi tôi chắc chắn sẽ sử dụng điều này, tôi cảm thấy nó không trả lời câu hỏi cốt lõi của tôi về chiến lược tốt nhất là để theo dõi GPS. – Ralf

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