zoukankan      html  css  js  c++  java
  • GPS获取Location 获取所在地点的经纬度

    利用手机获取所在地点的经纬度:

    Location 在Android 开发中还是经常用到的,比如 通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发).等。而在Android 中通过LocationManager 来获取Location .通常获取Location 有GPS 获取,WIFI 获取. 如下介绍GPS获取Location:

    第一步:

    创建一个Android 工程命名为GPS

    第二步:

    在MainActivity中利用LocationManager获取经纬度:

    import java.util.List;

    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.location.Criteria;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;

    public class MainActivity extends Activity {
        private LocationManager manager;
        private SharedPreferences sp;
        
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            manager = (LocationManager) getSystemService(LOCATION_SERVICE);//获取手机位置信息
            
            List<String> providers = manager.getAllProviders();
            
    //        for (String provider : providers) {
    //            System.out.println(provider);
    //        }
           

           //获取的条件
            Criteria criteria = new Criteria();
            criteria.setAccuracy(Criteria.ACCURACY_FINE);//获取精准位置
            criteria.setCostAllowed(true);//允许产生开销
            criteria.setPowerRequirement(Criteria.POWER_HIGH);//消耗大的话,获取的频率高
            criteria.setSpeedRequired(true);//手机位置移动
            criteria.setAltitudeRequired(true);//海拔
            
            //获取最佳provider: 手机或者模拟器上均为gps
            String bestProvider = manager.getBestProvider(criteria, true);//使用GPS卫星
            
            System.out.println("最好的位置提供者是"+bestProvider);
            sp = getSharedPreferences("config",MODE_PRIVATE);
            
            //parameter: 1. provider 2. 每隔多少时间获取一次  3.每隔多少米  4.监听器触发回调函数
            manager.requestLocationUpdates(bestProvider,60000,100, new MyLocationListener());
        }
        
        private class MyLocationListener implements LocationListener{
            /**
             * 手机位置发生变动
             */
            public void onLocationChanged(Location location) {
                location.getAccuracy();//精确度
                String  latitude = location.getLatitude()+"";//经度
                String longitude = location.getLongitude()+"";//纬度
               

                //将获取到的经纬度信息存入SharedPreferences
                Editor editor = sp.edit();
                editor.putString("lastloaction", latitude + "-" + longitude);
                editor.commit();
                
            }
            
            /**
             * 当某个位置提供者的状态发生改变时
             */
            public void onStatusChanged(String provider, int status, Bundle extras) {
                
            }
            
            
            /**
             * 某个设备打开时
             */
            public void onProviderEnabled(String provider) {
                
            }

            
            /**
             * 某个设备关闭时
             */
            public void onProviderDisabled(String provider) {
                
            }
            
        }
    }

    第三步:

    在AndroidManifest.xml中进行如下配置(加入Location相关权限):

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cn.itcast.gps"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk android:minSdkVersion="8" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".DemoActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

    第四步:

    部署应用程序,可在代码中加入Log.i() ,在LogCat中观察打印信息

    或者直接导出 data/data/<packagename>/share_pre/config.xml 文件直接观察

    可以将经纬度自行在网站上进行查询

    注意:

    android2.3 有bug,定位后没有提示

    2.3模拟器不支持手动发送模拟的经纬度

    可采用2.2的模拟器

  • 相关阅读:
    基于docker安装pxc集群
    PXC集群的概述及搭建
    十,StatefulSet简介及简单使用
    九,configMap及secret的基本使用
    八,kubernetes集群存储卷基础。
    七,ingress及ingress cluster
    六,k8s集群service资源
    mysql的优化
    ORACLE11g:No Dialect mapping for JDBC type: -9解决方案
    Oracle数据库的分页
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3993159.html
Copyright © 2011-2022 走看看