2013-03-19 79 views
0

我代码:为什么不能在android设备上获取当前位置?

Criteria cri = new Criteria(); 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    String tower = locationManager.getBestProvider(cri, false); 
    Location location = locationManager.getLastKnownLocation(tower); 

我的设备的Android已经打开WIFI,GPS(网络连接使能),但位置= NULL。为什么?

+0

您还没有实现监听器。没有返回。 – 2013-03-19 07:22:13

+0

查看MuraliGanesan的答案。 – 2013-03-19 07:22:41

+0

你会得到什么塔? GPS或网络? – 2013-03-19 07:33:05

回答

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); 
+0

我已经添加了代码:cri.setAccuracy(Criteria.ACCURACY_FINE);但位置仍然为空 – 2013-03-19 07:43:45

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" />