简单介绍一下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发送变化的位置信息,则可以在手机上显示坐标的变化。


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

更多相关文章

  1. Android应用开发实战GPS与加速度传感器
  2. 20.Android(安卓)设备工具DeviceUtil
  3. android关于View的截图
  4. Android(安卓)CountDownTimer
  5. android获取网络图片的用法
  6. Android编程心得-在任意类中获取当前屏幕宽高
  7. Android(安卓)蓝牙开启关闭
  8. Android:图片不加载到内存获取图片的大小
  9. Android(安卓)ACCESS_COARSE_LOCATION的用途和介绍

随机推荐

  1. Android之消息推送实现
  2. Android(安卓)模拟HTTP协议的编码问题 An
  3. [置顶] 关于Android图形系统的一些事实真
  4. Eclipse SDK 3.7.2无法安装android SDK
  5. Android仿人人客户端(v5.7.1)——主流程(活
  6. 【Android学习之旅】1、Android入门介绍
  7. Android的面试题
  8. android中的SVG图像的各个属性意义
  9. 【译】Google官方推出的Android架构组件
  10. 安卓外派(Android外派)提供安卓程序员外派