当前位置: 首页 > news >正文

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的模拟器

相关文章:

  • 音标输入对照表
  • 注册系统级热键
  • .NET Remoting学习笔记(三)信道
  • DHCP服务器的作用
  • 数据库索引的作用和长处缺点
  • Java 将自己定义的对象作为HashMap的key
  • SQL中declare申明变量
  • 常用命令
  • STL之容器适配器queue的实现框架
  • DNS添加/修改/查询/删除A记录
  • 大道至简 电话号码重新成为O2O新宠
  • tomcat日志catalina.out 按天分片分割
  • 【Android-视频播放】实用vitamio自定义控制条位置
  • HBase之MemStore+Flush详解
  • Pair Project 1 elevator
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【css3】浏览器内核及其兼容性
  • Bootstrap JS插件Alert源码分析
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Median of Two Sorted Arrays
  • Mithril.js 入门介绍
  • php中curl和soap方式请求服务超时问题
  • spring security oauth2 password授权模式
  • 分布式任务队列Celery
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 检测对象或数组
  • 浅谈Golang中select的用法
  • 如何编写一个可升级的智能合约
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 容器镜像
  • #微信小程序:微信小程序常见的配置传旨
  • (javascript)再说document.body.scrollTop的使用问题
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)pulsar安装在独立的docker中,python测试
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校实验室 毕业设计 800008
  • (离散数学)逻辑连接词
  • (小白学Java)Java简介和基本配置
  • (转)socket Aio demo
  • ... 是什么 ?... 有什么用处?
  • .apk文件,IIS不支持下载解决
  • .chm格式文件如何阅读
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net8 Blazor 尝鲜
  • .NET单元测试
  • [ 转载 ] SharePoint 资料
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Asp.net mvc]国际化
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [CISCN2019 华东南赛区]Web4