简单介绍一下gps定位的操作。

主要是靠locationmanger这个api完成的一些操作;通过获取这个实例,然后调用它的requestLocationUpdates方法进行注册。传入的参数分别有以下含义:

* 1、provider:哪种定位方式

             * 2、minTime:定位的时间差

             * 3、minDistance:定位距离差

             * 4、定位监听回调

然后第四个参数是一个监听器,要回调这个方法,监听位置的变化情况。实时更新所在位置

程序代码如下:

package com.example.gps;

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.view.View;
import android.widget.TextView; public class MainActivity extends Activity { private TextView tv_show_location; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv_show_location = (TextView) findViewById(R.id.tv_show_location); //获取定位管理器
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//设置定位信息
//坐标位置改变,回调此监听方法
LocationListener listener = new LocationListener() { @Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub } @Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub } @Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub } //位置改变的时候调用,这个方法用于返回一些位置信息
@Override
public void onLocationChanged(Location location) {
//获取位置变化结果
float accuracy = location.getAccuracy();//精确度,以密为单位
double altitude = location.getAltitude();//获取海拔高度
double longitude = location.getLongitude();//经度
double latitude = location.getLatitude();//纬度
float speed = location.getSpeed();//速度 //显示位置信息
tv_show_location.append("accuracy:"+accuracy+"\n");
tv_show_location.append("altitude:"+altitude+"\n");
tv_show_location.append("longitude:"+longitude+"\n");
tv_show_location.append("latitude:"+latitude+"\n");
tv_show_location.append("speed:"+speed+"\n");
}
};
locationManager.requestLocationUpdates("gps", 0, 0, listener);//Register for location updates
}
}

而如果想自动获取最佳定位方式的话,加入以下代码即可:

 //动态获取所有的定位方式
List<String> allProviders = locationManager.getAllProviders();
for (String string : allProviders) {
System.out.println("所有定位方式:>>>"+string);
} Criteria criteria = new Criteria();
criteria.setCostAllowed(true);//设置产生费用,收费的一般比较精确
criteria.setAccuracy(Criteria.ACCURACY_FINE);//精确度设为最佳 //动态获取最佳定位方式
String bestProvider = locationManager.getBestProvider(criteria, true);
/**
* 1、provider:那种定位方式
* 2、minTime:定位的时间差
* 3、minDistance:定位距离差
* 4、定位监听回调
*
*/
//Register for location updates
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);

用模拟器的话。需要配置三个权限:

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

第二个专门针对模拟器的权限,真机则不需要。

运行程序,用DDMS的Maual下的Decimal发送变化的位置信息,则可以在手机上显示坐标的变化。

对于基于位置的操作,建议在真机上测试。

Android初级教程获取手机位置信息GPS与动态获取最佳方式的更多相关文章

  1. windowsphone中获取手机位置信息

    首先在界面中加入一个textblock控件以显示信息 using System; using System.Collections.Generic; using System.IO; using Sy ...

  2. Android初级教程调用手机拍照与摄像功能

    这个小案例建议在手机上运行. package com.example.camera; import java.io.File; import android.net.Uri; import andro ...

  3. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  4. Android初级教程获取手机系统联系人信息

    在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...

  5. 【转】android 安卓APP获取手机设备信息和手机号码的代码示例

    http://blog.csdn.net/changemyself/article/details/7421476 下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓 ...

  6. android 安卓APP获取手机设备信息和手机号码的代码示例

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  7. android利用ContentResolver访问者获取手机联系人信息

    转载自:http://www.jb51.net/article/106379.htm 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission andr ...

  8. AppUtils【获取手机的信息和应用版本号、安装apk】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 一个获取设备的系统版本号.设备的型号.应用版本号code值.应用版本号name值.包名.是否更新.安装apk的工具类. 其实这个工具 ...

  9. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. C语言第二次作业 ,

    一:修改错题 1输出带框文字:在屏幕上输出以下3行信息. 将源代码输入编译器 运行程序发现错误 错误信息1: 错误原因:将stido.h拼写错误 改正方法:将stido.h改为stdio.h 错误信息 ...

  2. Linux 基本bash命令

    1.查看文件大小.内存大小.cpu信息.硬盘空间 显示当前目录所有文件大小的命令:ls -lht 内存空间.CPU信息.硬盘空间:htop.top(htop详解参考:http://blog.csdn. ...

  3. node之fs模块

    前言 fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. 一.文件读取 文 ...

  4. 【DDD】--好文收藏

    发现一批好文,完整系列,攒~~ 随笔分类 - DDD - 『圣杰』 DDD理论学习系列(1)-- 通用语言 笔记: 通用语言: a) 简单,便于理解.传播. b) 需要通用,能够准确的传达业务规则. ...

  5. CRM客户关系管理系统(三)

    第四章.kingadmin开发设计 4.1.kingadmin设计 自定义admin注册model的写法 crm/admin.py class CustomerAdmin(admin.ModelAdm ...

  6. windows系统和centos双系统安装引导项修改

    在CentOS下修改Linux引导文件:     (1)找到win10的引导 1.首先我们点击第一个系统进入centos           2.运行终端,敲入命令su,为了获取管理员权限,然后终端提 ...

  7. freemarker的使用

    一:freemarker是什么? freemarker是一个模板引擎,基于定义的模板和数据生成对应的文本(HTML,xml,java等),是一个生成文本的工具. 二:freemarker的使用方法 ( ...

  8. Objective-C点语法

    Objective-C点语法 点语法可以简单的理解成是为了让Java等语言的开发人员能够快速适应OC语言而添加的一个新写法 因为Java里没有指针,也没有[xxx xxx]这种调用方式,都是使用点xx ...

  9. Android简易实战教程--第三十八话《自定义通知NotifiCation》

    上一篇小案例,完成了一个普通的通知,点击通知启动了一个活动.但是那里的通知没有加入些"靓点",这一篇就给它加入自定义的布局,完成自定义的通知. 应用:比如QQ音乐为例,当点击音乐播 ...

  10. shiro自定义Realm

    1.1 自定义Realm 上边的程序使用的是shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm. ...