简单介绍一下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. Unique-paths (动态规划)

    题目描述 A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below) ...

  2. Delphi7通过SendMessage来实现默认打印机的切换

    具体代码 procedure SetDefaultPrinter(NewDefPrinter: string); var ResStr: array[0..255] of Char; begin St ...

  3. 一个使用 Python 的人工智能聊天机器人框架

    一个Python 的 AI Chatbot框架 建立一个聊天室可以听起来很棒,但它是完全可行的. IKY是一个内置于Python中的AI动力对话对话界面. 使用IKY,很容易创建自然语言会话场景,无需 ...

  4. net use命令详解

    net use命令详解 1)建立空连接: net use \\IP\ipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格) 2)建立非空连 ...

  5. js 删除字符串中所有空格

    //去除头尾和中间空格,制表符 function trimSpaces(Str){               var ResultStr = "";               ...

  6. drools 手动创建kmoudle.xml文件

    @Test public void test() { KieServices kieServices = KieServices.Factory.get(); KieResources resourc ...

  7. 一口一口吃掉Hibernate(五)——一对多单向关联映射

    版权声明:本文为博主原创文章,未经博主允许不得转载.如需转载请声明:[转自 http://blog.csdn.net/xiaoxian8023 ] 在上一篇博客<一口一口吃掉Hibernate( ...

  8. Python之禅及其翻译

    凡是用过 Python的人,基本上都知道在交互式解释器中输入 import this 就会显示 Tim Peters 的 The Zen of Python,但它那偈语般的语句有点令人费解,所以我想分 ...

  9. CTR预估算法

    GBRT(Gradient Boost Regression Tree)渐进梯度回归树,XGBoost是GBRT的一个工程实现 LR(Logistics Regression )逻辑回归 Spark ...

  10. LintCode题解之斐波纳契数列

    直接使用递归的方法会导致TLE,加个缓存就好了: public class Solution { private Integer[] buff = new Integer[1000]; /* * @p ...