zoukankan      html  css  js  c++  java
  • android GPS 定位,取位置信息

           现在很多app ,需要取位置信息,所以我也做了一个模块用来取位置信息;

       加入位置服务所需的权限:

      

        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />


      //首先 获取 LocationManager ;

         final LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

      //创建监听;

              final LocationListener locationListener = new LocationListener() {
                    
                    // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
                    @Override
                    public void onStatusChanged(String provider, int status, Bundle extras) {
                        
                    }
                    
                    // Provider被enable时触发此函数,比如GPS被打开
                    @Override
                    public void onProviderEnabled(String provider) {
                        Log.e("Map", "onProviderEnabled "  );
                    }
                    
                    // Provider被disable时触发此函数,比如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());   

                        
                        }
                    }
                };

        

        ////判断使用哪种方式取位置信息;注册监听(最小时间间隔为1秒,最小距离间隔为0米) 

                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());  

                    stopLister(this);      

             }

     

        // 去掉监听;

          private void stopLister(LocationListener listener) {
            if (locationManager != null) {
                locationManager.removeUpdates(listener);
            }
            locationManager = null;

    具体代码见demo;

    http://download.csdn.net/detail/q610098308/8858059

     但现在有一个很严重的问题就是,一般用户可能不会开启GPS,这样的话,只能通过网络定位来获取位置信息,但大概手机是定制的手机,无法从网络取到位置信息;

    所以我是通过第三方来取位置信息的

    见demo;

    http://download.csdn.net/detail/q610098308/8858067

    
  • 相关阅读:
    Spring HandlerInterceptor的使用
    JAVE 视音频转码
    习课的redis配置记录
    原 HttpClient 4.3超时设置
    IPMI
    Tomcat redis 配置
    JVM route
    linux swap空间的swappiness=0
    【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
    英特尔高速存储技术
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5621070.html
Copyright © 2011-2022 走看看