2012-08-29 17 views
6

Đôi khi, Android LocationManager có sử dụng nhiều megabyte dữ liệu internet khi nhận được các bản sửa lỗi vị trí không? Và nếu có, trong hoàn cảnh nào? Điều đó có thể xảy ra ngay cả khi ứng dụng sử dụng Trình quản lý vị trí không có quyền rõ ràng để truy cập Internet không?Sử dụng dữ liệu Internet của Android LocationManager

Tôi hỏi điều này vì gần đây tôi đã nhận thấy rằng dữ liệu internet được sử dụng bởi "Hệ điều hành Android" (như được báo cáo bởi Cài đặt -> "Sử dụng dữ liệu" trên Samsung Galaxy Note của tôi với Android 4.0.4) đôi khi là 10 megabyte hoặc nhiều hơn mỗi ngày. Thử nghiệm cho thấy rằng việc sử dụng dữ liệu này chỉ xảy ra khi tôi chạy một ứng dụng mà tôi đã viết và sử dụng dữ liệu vị trí GPS do Trình quản lý vị trí cung cấp. Khi ứng dụng này không chạy "Hệ điều hành Android" chỉ sử dụng vài kilobyte dữ liệu mỗi ngày.

Quyền duy nhất trong tệp kê khai của ứng dụng là "android.permission.ACCESS_FINE_LOCATION" và "android.permission.WRITE_EXTERNAL_STORAGE". Không có quyền truy cập internet.

phương pháp của hoạt động onStart() chứa mã:

  if (!mapview .ignoreGPS) { 
      lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this); 
    }  

đang tương tự được gọi khi cờ ignoreGPS là toggled off.

Ngoài ra còn có một() phương pháp gotoLastLocation chứa mã:

  Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER); 

      if (l == null) { 
       l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER); 
      } 

Phương pháp này chỉ được gọi là hiếm, khi lá cờ ignoreGPS là toggled tắt hoặc khi người sử dụng chọn một tùy chọn trình đơn để đi đến cuối cùng vị trí đã biết.

Ngoài phương pháp hiếm khi được gọi này, không có tham chiếu đến "NETWORK_PROVIDER".

Theo mặc định, GPS_PROVIDER có sử dụng "GPS được hỗ trợ" không? Nếu vậy, điều này có thể sử dụng nhiều megabyte dữ liệu không? Ngay cả khi không có sự cho phép internet?

Nếu GPS_PROVIDER không thể sửa lỗi từ tín hiệu GPS, Trình quản lý vị trí có mặc định sử dụng mạng điện thoại di động không? Ngay cả khi ứng dụng không có quyền mạng? Điều này có được tính bởi nhà cung cấp điện thoại khi truy cập dữ liệu internet không?

+0

[này] (http://developer.android.com/training/efficient-downloads/ index.html) có thể có liên quan đến sở thích của bạn. – Josh

+0

Cảm ơn, Josh, vì đề nghị này nhưng tôi không thể thấy bất cứ điều gì ở đó giúp tôi. Tui bỏ lỡ điều gì vậy? Ứng dụng của tôi không có quyền truy cập internet và không yêu cầu tải xuống rõ ràng; tuy nhiên nó dường như tiêu thụ nhiều megabyte dữ liệu ... Tôi đoán điều này phải thông qua việc sử dụng GPS có Hỗ trợ. Vấn đề của tôi là làm thế nào để ngăn chặn hoặc hạn chế điều này. – prepbgg

Trả lời

1

Không bao giờ, giao thức SUPL tải dữ liệu hỗ trợ chỉ sử dụng vài kilobyte dữ liệu. Ngay cả khi bạn chạy nó rất nhiều trong ngày nó sẽ không được nhiều so với nói cách sử dụng trình duyệt.

Đôi khi Google tải lên dữ liệu WiFi và việc sử dụng ứng dụng (đáng sợ tôi biết), khi sử dụng NETWORK_PROVIDER. Nhưng ngay cả điều đó cũng không nhiều.

Bạn có thể thử giết tất cả các quy trình nền hoặc gỡ cài đặt ứng dụng không mong muốn tốt hơn không?

đoán tốt nhất của tôi là bạn có thể sử dụng một MapView mà tải gạch Bản đồ và hình ảnh vệ tinh - dữ liệu này là nặng

+0

Rất tiếc để trả lời chậm. Tôi đã đi rồi. Re SUPL: ứng dụng của tôi yêu cầu cập nhật vị trí cứ sau 2 giây (để đảm bảo hiển thị thông suốt trên bản đồ), vì vậy truy cập internet có thể là 60 x 30 x "vài kilobyte" mỗi giờ nếu giao thức SUPL được sử dụng cho mọi yêu cầu. Đây có phải là câu trả lời không? SUPL có được sử dụng ngay cả khi không có quyền truy cập Internet không? Quy trình nền lại: loại quy trình nào sẽ chỉ truy cập internet khi ứng dụng của tôi đang chạy? Xếp lại các ô bản đồ: ứng dụng của tôi chỉ sử dụng các lát bản đồ được lưu trữ trên thiết bị. – prepbgg

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