2010-10-22 24 views
5

Tôi gặp sự cố rằng dịch vụ của tôi đã được cài đặt LocationListener, nhận được GPSupdate mỗi 500ms dường như. Không có vấn đề gì minTime tôi đưa vào chức năng requestLocationUpdates.requestLocationCập nhật không cập nhật vào khoảng thời gian trong Android

Piece of mã của tôi:

public class LocationService extends Service implements LocationListener { 

    LocationManager locMan; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER; 
     locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 1, this); 

    } 

    public void onLocationChanged(Location location) { 
     Log.d("Loc", "Location has been changed"); 
    } 
} 

Từ một nút trong hoạt động chính của tôi tôi sẽ gọi startService(), sau này nó sẽ chạy ở chế độ nền, nhưng nó mang lại cho cập nhật liên tục.

Trả lời

1

Tôi thấy có một vài điều sai với trường hợp của bạn:

Độ chính xác của GPS là tốt nhất khoảng 3 mét và trong điều kiện tối ưu. Vì vậy, nó không có ý nghĩa để yêu cầu một bản cập nhật nếu vị trí thay đổi bởi 1 mét. Tiếng ồn GPS có thể dễ dàng chỉ ra chuyển động khi trên thực tế thiết bị đang ngồi yên. Làm cho minDistance ít nhất 10 sẽ là khuyến nghị của tôi.

Tôi không thấy lý do bạn gọi isProviderEnabled() vì bạn không làm bất kỳ điều gì với giá trị trả về.

Bạn nói rằng sau khi startService() mọi thứ sẽ chạy trong nền, nhưng đó không phải là trường hợp. Dịch vụ không chạy trong nền trừ khi bạn tạo một số loại chuỗi nền cho nó. Có quá nhiều thứ để trả lời trong câu trả lời này để giải thích cách dịch vụ hoạt động. Truy cập trực tuyến và thực hiện một số việc đọc hoặc có một cuốn sách hay về phát triển Android.

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