我编码为:
Criteria cri = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
String tower = locationManager.getBestProvider(cri, false);
Location location = locationManager.getLastKnownLocation(tower);
我的设备android启用了wifi,gps(启用了互联网),但是location = null。为什么呢?
答案 0 :(得分:2)
试试这个,在代码下方使用当前位置。
String location;
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
location = LocationManager.PASSIVE_PROVIDER;
else
location = LocationManager.GPS_PROVIDER;
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(location, 0, 0, mlocListener);
mlocManager.requestLocationUpdates(location, 0, 1, mlocListener);
Location locate = mlocManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (locate != null) {
lati = locate.getLatitude();
longi = locate.getLongitude();
} else {
locate = mlocManager
.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
if (locate != null) {
lati = locate.getLatitude();
longi = locate.getLongitude();
}
}
MyLocationListener类
public class MyLocationListener implements LocationListener {
public void onLocationChanged(Location loc) {
lati = loc.getLatitude();
longi = loc.getLongitude();
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public MainActivity getLocationCordinates() {
MainActivity location_Gps = new MainActivity();
return location_Gps;
}
}
在manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
答案 1 :(得分:0)
尝试使用:
Criteria cri = new Criteria();
cri.setAccuracy(Criteria.ACCURACY_FINE);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
String tower = locationManager.getBestProvider(cri, false);
Location location = locationManager.getLastKnownLocation(tower);