public void onCreate() {
locationListener = new GeoUpdateHandler();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
try {
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch (Exception ex) {
}
if(gps_enabled) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_DURATION, 100, locationListener);
} else if(network_enabled) { // Checking for GSM
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TIME_DURATION, DISTANCE, locationListener);
}
}
public class GeoUpdateHandler implements LocationListener {
private void getPresentLocation(Location location) {
...
//Fetch the locations
...
}
@Override
public void onProviderDisabled(String provider) { }
@Override
public void onProviderEnabled(String provider) { }
@Override
public void onStatusChanged(String provider, int status, Bundle extras) { }
@Override
public void onLocationChanged(Location location) {
getPresentLocation(location);
}
}
đây là đoạn mã của tôi và vấn đề của tôi là khi ứng dụng được cài đặt với GPS được BẬT, thì nó không chuyển sang GSM để tìm vị trí khi chúng tôi TẮT GPS , và ngược lại.Chuyển đổi giữa nhà cung cấp gps và mạng theo tính sẵn có
Vì vậy, hãy cho tôi biết cách chuyển đổi hiệu quả giữa GPS và GSM tùy theo tính khả dụng của nhà cung cấp vị trí.
LƯU Ý: Ứng dụng của tôi là dịch vụ.
Cảm ơn.
Chỉnh sửa: Tôi có một BroadcastReceiver, đó là lý do tại sao tôi giả sử onCreate() sẽ được gọi khi bật/tắt GPS xảy ra.
Tôi cũng đã thử kiểm tra tính khả dụng của nhà cung cấp trong onLocationChanged (Vị trí vị trí). Nhưng nó không giúp được gì.
EDIT: Tôi sửa đổi của tôi onProviderDisabled & onProviderEnabled như thế này, Xin vui lòng cho những gì tôi đang làm sai ở đây ..
public void onProviderDisabled(String provider) {
locationManager.removeUpdates(locationListener);
if (provider.toLowerCase().equals(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TIME_DURATION, 1, locationListener);
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_DURATION, 1, locationListener);
}
}
@Override
public void onProviderEnabled(String provider) {
locationManager.removeUpdates(locationListener);
if (provider.toLowerCase().equals(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_DURATION, 1, locationListener);
} else {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TIME_DURATION, 1, locationListener);
}
}
có ở đây tôi đã tìm thấy một vấn đề khác, onProviderEnabled() của tôi không được gọi. – Lenin