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

时间: 2024-07-31 07:43:38

GPS获取Location 获取所在地点的经纬度的相关文章

根据百度地图API获取指定地点的经纬度

做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用 package com.hpzx.data; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.n

欧美斯项目签到功能,实时获取当前所在位置的经纬度

由于欧美斯项目需要签到功能,因此需要给后台传一个当前位置的经纬度,以下是获取经纬度的方法 1>导入CoreLocation.frameWork 2>引入头文件,并遵循协议 #import <CoreLocation/CoreLocation.h> <CLLocationManagerDelegate> 3>代码 @interface YYAboutUsViewController ()<UIWebViewDelegate,CLLocationManagerD

获取IP,调用新浪接口获取所在地点的辅助类

1 using System; 2 using System.IO; 3 using System.Net; 4 using System.Text; 5 using System.Web.Script.Serialization; 6 7 namespace IpUtils 8 { 9 public class IpDetail 10 { 11 public String Ret { get; set; } 12 13 public String Start { get; set; } 14

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

php获取ip地址所在的地理位置的实现

1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似) <?php    function getIPLocation($queryIP){     $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP; //如果是新浪,这里的URL是:'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;     $ch = curl

asp.net Core 获取应用程序所在目录的2种方式

//获取应用程序所在目录的2种方式(绝对,不受工作目录影响,建议采用此方法获取路径).如:d:\Users\xk\Desktop\WebApplication1\WebApplication1\bin\Debug\netcoreapp2.0 String basePath1 = AppContext.BaseDirectory; String basePath2 =Path.GetDirectoryName(typeof(Program).Assembly.Location); //注意:对于

JAVA 获取jar包所在的文件夹

相信很多新手们都可能会像我一样,刚开始在写JAVA程序时,如果需要获取当前类所在的目录(例如:我习惯在开发时,日志就会写在当前程序的目录下,动态建立文件夹及日志文件TXT),那是没有什么问题的,可是打包成jar文件后,问题就来了,总是在获取路径的时候报错,原因是路径根本不正确,或者是得到的路径根本不是自己想要的(例:在jar包中得到的类似路径:file:/H:/JAVA/Test1/MyJar/demo1_fat.jar!/main/main.jar   而直接在Eclipse运行时得到:/H:

MSSQL 获取指定日期所在星期的第一天和最后一天日期 获取指定日期坐在月的第一天和最后一天

ufn_GetWeekFirstAndEndDay    获取指定日期所在星期的第一天和最后一天日期 ALTER FUNCTION [dbo].[ufn_GetWeekFirstAndEndDay](@tmpDate DATETIME)RETURNS  @tmpTable TABLE(            FirstDay DATETIME ,          EndDay DATETIME   )ASBEGIN    INSERT INTO @tmpTable    SELECT a.Fi

C#使用HttpClient获取Location

之前使用HttpWebRequest的时候,只需要设置HttpWebRequest对象的AllowAutoRedirect属性值为false即可在Respomse的Header中获取Location: 但是后来在SilverLight中使用HttpWebRequest的时候,没有AllowAutoRedirect这个属性了,各种点也点不出来,于是只能用HttpClient 了,代码如下: 1 public string GetLocation(string URL) 2 { 3 HttpClie