文档章节

android 原生GPS定位

bengozhong
 bengozhong
发布于 2016/12/30 15:32
字数 348
阅读 29
收藏 0
package com.hzg.my_record;

import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by Jay on 2015/8/28 0028.
 */
public class MyFragment4 extends Fragment {

    private Button btnStart;
    private Button btnStop;
    private TextView textView;
    private Location mLocation;
    private LocationManager mLocationManager;


    public MyFragment4() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fg_content,container,false);

        btnStart = (Button)view.findViewById(R.id.btnStart);
        btnStop = (Button)view.findViewById(R.id.btnStop);
        textView = (TextView)view.findViewById(R.id.txt_content);
        btnStart.setOnClickListener(btnClickListener); //开始定位
        btnStop.setOnClickListener(btnClickListener); //结束定位按钮

        return view;
    }

    public Button.OnClickListener btnClickListener = new Button.OnClickListener()
    {
        public void onClick(View v)
        {
            Button btn = (Button)v;
            if(btn.getId() == R.id.btnStart)
            {
                if(!gpsIsOpen())
                    return;

                mLocation = getLocation();

                if(mLocation != null)

                    textView.setText("维度:" + mLocation.getLatitude() + "\n经度:" + mLocation.getLongitude());
                else
                    textView.setText("获取不到数据");
            }
            else if(btn.getId() == R.id.btnStop)
            {
                mLocationManager.removeUpdates(locationListener);
            }

        }
    };

    private boolean gpsIsOpen()
    {
        boolean bRet = true;

        LocationManager alm = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
        if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
        {
            Toast.makeText(getActivity(), "未开启GPS", Toast.LENGTH_SHORT).show();
            bRet = false;
        }
        else
        {
            Toast.makeText(getActivity(), "GPS已开启", Toast.LENGTH_SHORT).show();
        }

        return bRet;
    }



    private Location getLocation()
    {
        //获取位置管理服务
        mLocationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);

        //查找服务信息
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE); //定位精度: 最高
        criteria.setAltitudeRequired(false); //海拔信息:不需要
        criteria.setBearingRequired(false); //方位信息: 不需要
        criteria.setCostAllowed(true);  //是否允许付费
        criteria.setPowerRequirement(Criteria.POWER_LOW); //耗电量: 低功耗

        String provider = mLocationManager.getBestProvider(criteria, true); //获取GPS信息

        Location location = mLocationManager.getLastKnownLocation(provider);

        mLocationManager.requestLocationUpdates(provider, 2000, 5, locationListener);

        return location;
    }

    private final LocationListener locationListener = new LocationListener()
    {
        public void onLocationChanged(Location location)
        {
            // TODO Auto-generated method stub
            if(location != null)
                textView.setText("维度:" + location.getLatitude() + "\n经度:"
                        + location.getLongitude());
            else
                textView.setText("获取不到数据");
        }

        public void onProviderDisabled(String provider)
        {
            // TODO Auto-generated method stub
        }

        public void onProviderEnabled(String provider)
        {
            // TODO Auto-generated method stub
        }

        public void onStatusChanged(String provider, int status, Bundle extras)
        {
            // TODO Auto-generated method stub

        }
    };
}

© 著作权归作者所有

bengozhong
粉丝 19
博文 476
码字总数 485469
作品 0
深圳
程序员
私信 提问
Android 怎样稳定的获取原生GPS数据

我现在正在开发一款android的移动应用,需要获取GPS数据,现在关键问题是我们无法通过android的原生接口稳定的获取GPS数据或者是基站定位数据,每次获取时有时候获取不到,有时候获取的又根本...

lonuery
2013/05/17
2.3K
2
Android 手机定位慢的解决方法

做移动互联网就不太可能不碰手机端的开发。上周为了项目需要,俺也挽袖子抡胳膊开始写起了Android程序,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的。 网上也搜得到...

鉴客
2011/07/18
25.6K
12
Android之GPS定位详解

一、LocationManager LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager。我们可以通过如下代码创建LocationManger对象。 LocationManger locationManager...

程序袁_绪龙
2014/09/28
0
0
Android 百度地图开发之MyLocationOverlay,PopupOverlay的使用

这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是“图层”或“覆盖物”的意思,MyLocationOverlay从名字上面理解就是我...

等待流星
2013/12/10
0
0
android开发GPS定位测试(附效果图和示例)

本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试 GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据 今天因为工作需要,把以前编写的一个GPS测...

一别经年
2013/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

G1 垃圾收集器介绍-转

https://www.cnblogs.com/ASPNET2008/p/6496481.html

Java搬砖工程师
25分钟前
0
0
超高性能 key-value 数据库 Redis-基础数据结构

Redis的魅力 缓存大致可以分为两类:1.一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库);2.另一种 就是缓存组件,比如Memached,Redis;Redis(remote dictiona...

须臾之余
36分钟前
3
0
Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。 一. 选择合适的解决方法 1....

小谜弟
42分钟前
3
0
为 git 添加多个公秘钥

如果想为主机配置多个git设置,设置多个git公、秘钥,只需在生成密钥时指定密钥保持的文件即可,保证保存密钥的文件不同即可。 示例: ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f...

niithub
42分钟前
1
0
walle-web 2.0安装流水

一、环境安装 VMware Workstation,centos7.6 64位,lnmp1.5 二、安装lnmp1.5 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1......

我心中有猛狗
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部