Android实现地理定位功能

最近试着写了一下Android的定位,代码在下面,比较简单
首先需要的权限有

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 <uses-permission android:name="android.permission.INTERNET"/>

然后是里面的代码

package com.example.a5.myapplication; 

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  //全屏
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
  setContentView(R.layout.activity_main);
  Button button = (Button) findViewById(R.id.button);
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    //获取位置服务
    LocationManager locationManager = (LocationManager) MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    //ACCURACY_HIGH/ACCURACY_LOW精度选择
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    //高度
    criteria.setAltitudeRequired(true);
    //方位信息
    criteria.setBearingRequired(true);
    //是否允许付费
    criteria.setCostAllowed(true);
    //对电量的要求
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    //速度
    criteria.setSpeedRequired(true);
    //获取最佳服务
    String provider = locationManager.getBestProvider(criteria, true);
    //权限检查
    if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
     return;
    }
    //获取到了位置
    Location location = locationManager.getLastKnownLocation(provider);
    //开启地理位置监听定位类型、毫秒、米、监听时间
    locationManager.requestLocationUpdates(provider,3000,1,new listener());
    locateResult(location); 

   }
  });
 }
 public class listener implements LocationListener { 

  @Override
  public void onLocationChanged(Location location) {
   //位置变化,获取最新的位置
   locateResult(location);
  } 

  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) { 

  } 

  @Override
  public void onProviderEnabled(String provider) { 

  } 

  @Override
  public void onProviderDisabled(String provider) { 

  }
 } 

 public void locateResult(Location location){
  new AlertDialog.Builder(MainActivity.this)
    .setMessage("纬度" + String.valueOf(location.getLatitude()) +
      "\n经度" + String.valueOf(location.getLongitude()) +
      "\n速度" + String.valueOf(location.getSpeed()) +
      "\n高度" + String.valueOf(location.getAltitude()) +
      "\n朝向" + String.valueOf(location.getBearing())
    )
    .setNegativeButton("取消",null)
    .show();
 }
}

最后上图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 在Android里完美实现基站和WIFI定位

    不过其实只要明白了基站/WIFI定位的原理,自己实现基站/WIFI定位其实不难.基站定位一般有几种,第一种是利用手机附近的三个基站进行三角定位,由于每个基站的位置是固定的,利用电磁波在这三个基站间中转所需要时间来算出手机所在的坐标:第二种则是利用获取最近的基站的信息,其中包括基站id,location area code.mobile country code.mobile network code和信号强度,将这些数据发送到google的定位web服务里,就能拿到当前所在的位置信息,误差一般在

  • Android GPS定位测试(附效果图和示例)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来. 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据.NMEA是一种标准化数据格

  • Android基站定位原理及实现代码

    复制代码 代码如下: import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org

  • android通过gps获取定位的位置数据和gps经纬度

    复制代码 代码如下: package com.action.android_test;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.

  • android 定位的4种方式介绍

    android 定位一般有四种方法,这四种方式分别是:GPS定位,WIFI定准,基站定位,AGPS定位,                               (1)Android GPS:需要GPS硬件支持,直接和卫星交互来获取当前经纬度,这种方式需要手机支持GPS模块(现在大部分的智能机应该都有了).通过GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电:2,绝大部分用户默认不开启GPS模块:3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间:4,室内几乎无法使

  • Android实现GPS定位代码实例

    通过GPS取得的是一个Location类型的经纬度, 可以转换为两个Double 纬度和经度. 纬度: 23.223871812820435 纬度: 113.58986039161628 首先创建一个TextView和两个Button <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content"

  • 基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出

    Android Material Design:PopupMenu Android Material Design 引入的PopupMenu类似过去的上下文菜单,但是更灵活. 如图所示: 现在给出实现上图PopupMenu的代码. 本例是一个普通的Button触发弹出PopupMenu. 测试的MainActivity.java : package zhangphil.materialdesign; import android.app.Activity; import android.os.B

  • Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q

  • Android GridView实现滚动到指定位置的方法

    当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法: 复制代码 代码如下: public void smoothScrollToPosition (int position) 滚动到position指定的位置,api level 11之下可用 *当你滚动完后,返回列表,能正常滚动,但是你再次从列表的项目返回后,滚动失效,就是只能滚动一次,我

  • 基于Android实现百度地图定位过程详解

    一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册密钥:地址http://developer.baidu.com/map/ 2.下载定位SDK,并导入SDK如图所示: 三.编写MyApplication类 编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中 封装下列方法 1.  获取定位信息--

随机推荐