Tôi muốn chọn một LocationProvider được bật trong Android. Mục tiêu xây dựng dự án là Android 2.1.LocationManager: nhà cung cấp "mạng" có luôn được bật không?
Đây là những gì tôi làm trong onCreate().
// ...
LocationManager locationMgr = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
criteria.setCostAllowed(false);
String bestProvider = locationMgr.getBestProvider(criteria, true);
Toast.makeText(getApplicationContext(), "Provider = " + bestProvider + " enabled= " + locationMgr.isProviderEnabled(bestProvider), Toast.LENGTH_LONG).show();
// ...
Bây giờ, tôi tắt mỗi giao diện mạng và đặt chế độ trên thiết bị của mình (HTC Desire, Android 2.2). Tôi ngắt kết nối thiết bị khỏi USB. Rõ ràng là không có nhà cung cấp nào có thể cung cấp dữ liệu vị trí cho thiết bị. Tôi đặc biệt yêu cầu getBestProvider chỉ dành cho nhà cung cấp được bật, vì vậy tôi hy vọng nó trả về null hoặc một chuỗi trống trong trường hợp đó. Tôi mong đợi isProviderEnabled để trả về false.
Kết quả thực tế là getBestProvider Thu nhập "mạng" và isProviderEnabled báo cáo nó được "kích hoạt". Có phải "mạng" luôn "bật" ngay cả khi nó không?
Điều này cũng có thể do vị trí mạng trong bộ nhớ cache của Android gây ra, vì nó không thể thay đổi sớm do độ chi tiết thô. Đó chỉ là một đoán mặc dù. –