android獲取位置location為null的問題


  12:38:542016-12-23

很多人經常遇到這種問題,主要是獲取到位置的信息為null,第一個主要要有權限  

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

第二個我們調用的方法是 Location location = locationManager.getLastKnownLocation(provider);

 這個方法主要是獲取上一次的經緯度信息,上一次的話肯定是空的啦。。這是要注冊一下獲取事件的監聽器

等一會以后就可以拿到了經緯度了。。所以說一開始不要着急獲取經緯度。。等待一會就有了。。不會報空指針異常。

LocationManager locationManager;
   String serviceName = Context.LOCATION_SERVICE;
   locationManager = (LocationManager) con.getSystemService(serviceName); // 查找到服務信息
   //locationManager.setTestProviderEnabled("gps", true);
  
   locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, mLocationListener01);
   locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, mLocationListener01);

 

 

獲取數據和監聽器

 

  * 通過location獲取當前設備的具體位置
   *
   * @param location
   * @param rowId
   * @param params
   * @param rowId
   */
 private Location updateToNewLocation(Location location) {
  System.out.println("--------zhixing--2--------");
   String latLongString;
   double lat = 0;
   double lng=0;
  
   if (location != null) {
    lat = location.getLatitude();
    lng = location.getLongitude();
    latLongString = "緯度:" + lat + "\n經度:" + lng;
    System.out.println("經度:"+lng+"緯度:"+lat);
   } else {
    latLongString = "無法獲取地理信息,請稍后...";
   }
   if(lat!=0){
    System.out.println("--------反饋信息----------"+ String.valueOf(lat));
   }
  
   Toast.makeText(getApplicationContext(), latLongString, Toast.LENGTH_SHORT).show();
 
   return location;
  
 }
  
      // 設置監聽器,自動更新的最小時間為間隔N秒(1秒為1*1000,這樣寫主要為了方便)或最小位移變化超過N米
 public final LocationListener mLocationListener01 = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            updateToNewLocation(location);
        }
   

        @Override
        public void onProviderDisabled(String provider) {
         updateToNewLocation(null);
        }

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}
};
經過測試。。沒有問題。。希望幫到你們。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM