android 原生方法获取定位

package com.example.getlocation;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends Activity
{

   private double latitude=0.0;
   private double longitude =0.0;
   LocationManager locationManager =null ;

   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      final TextView showText = (TextView)findViewById(R.id.show_text);

      locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
       
      LocationListener locationListener = new LocationListener() {
            
            // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
               
            }
            
            // Providerenable时触发此函数,好比GPS被打开
            @Override
            public void onProviderEnabled(String provider) {
               Log.e("Map", "onProviderEnabled "  );
            }
            
            // Providerdisable时触发此函数,好比GPS被关闭 
            @Override
            public void onProviderDisabled(String provider) {
               
            }
            
            //当坐标改变时触发此函数,若是Provider传进相同的坐标,它就不会被触发 
            @Override
            public void onLocationChanged(Location location) {
               if (location != null) 
               {   
                  Log.e("Map", "Location changed : Lat: "  
                  + location.getLatitude() + " Lng: "  
                  + location.getLongitude());   
                  showText.setText("Latitude:"+ location.getLatitude() +"Longitude"+location.getLongitude()); 
                  stopLister(this);
               }
            }
         };
         
         if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
         {
            //第一个参数,与取
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 0,locationListener);   
         }
         else
         {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 0,locationListener); 
         }
  
         //取上一次定位的位置
//       Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);   
//       if(location != null){   
//          latitude = location.getLatitude(); //经度   
//          longitude = location.getLongitude(); //纬度
//          
//          Log.e("Map", "NETWORK_PROVIDER changed : Lat: "  
//          + location.getLatitude() + " Lng: "  
//          + location.getLongitude());   
//       }
         
   }

   /**
    * 销毁定位
    */
   private void stopLister(LocationListener listener) {
      if (locationManager != null) {
         locationManager.removeUpdates(listener);
      }
      locationManager = null;
}
}
相关文章
相关标签/搜索