当前位置: 移动技术网 > IT编程>移动开发>Android > Android中获取定位经纬度信息

Android中获取定位经纬度信息

2020年03月19日  | 移动技术网IT编程  | 我要评论

我的古怪高中3,文档防扩散,全力以赴造句

场景

根据gps获取经纬度效果

 

 

注:

博客:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

修改页面布局代码activity_main.xml,在页面上添加一个textview来显示经纬度信息。

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainactivity">


    <textview
        android:id="@+id/location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerhorizontal="true"
        android:textstyle="bold" />
</relativelayout>

然后打开mainactivity.java,修改代码如下

package com.badao.servicetest;

import androidx.appcompat.app.appcompatactivity;
import androidx.core.app.activitycompat;

import android.manifest;
import android.content.pm.packagemanager;
import android.location.location;
import android.location.locationlistener;
import android.location.locationmanager;
import android.os.bundle;
import android.view.windowmanager;
import android.widget.textview;

public class mainactivity extends appcompatactivity {

    private textview text;  //定义用于显示locationprovider的textview组件

    @override
    public void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,
                windowmanager.layoutparams.flag_fullscreen);   //设置全屏显示

        text = (textview) findviewbyid(r.id.location);  //获取显示location信息的textview组件
        //获取系统的locationmanager对象
        locationmanager locationmanager = (locationmanager) getsystemservice(location_service);

        //添加权限检查
        if (activitycompat.checkselfpermission(this, manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(this, manifest.permission.access_coarse_location) != packagemanager.permission_granted) {
            // todo: consider calling
            //    activitycompat#requestpermissions
            // here to request the missing permissions, and then overriding
            //   public void onrequestpermissionsresult(int requestcode, string[] permissions,
            //                                          int[] grantresults)
            // to handle the case where the user grants the permission. see the documentation
            // for activitycompat#requestpermissions for more details.
            return;
        }
        //设置每一秒获取一次location信息
        locationmanager.requestlocationupdates(
                locationmanager.gps_provider,      //gps定位提供者
                1000,       //更新数据时间为1秒
                1,      //位置间隔为1米
                //位置监听器
                new locationlistener() {  //gps定位信息发生改变时触发,用于更新位置信息

                    @override
                    public void onlocationchanged(location location) {
                        //gps信息发生改变时,更新位置
                        locationupdates(location);
                    }

                    @override
                    //位置状态发生改变时触发
                    public void onstatuschanged(string provider, int status, bundle extras) {
                    }

                    @override
                    //定位提供者启动时触发
                    public void onproviderenabled(string provider) {
                    }

                    @override
                    //定位提供者关闭时触发
                    public void onproviderdisabled(string provider) {
                    }
                });
        //从gps获取最新的定位信息
        location location = locationmanager.getlastknownlocation(locationmanager.gps_provider);
        locationupdates(location);    //将最新的定位信息传递给创建的locationupdates()方法中
    }

    public void locationupdates(location location) {  //获取指定的查询信息
        //如果location不为空时
        if (location != null) {
            stringbuilder stringbuilder = new stringbuilder();        //使用stringbuilder保存数据
            //获取经度、纬度、等属性值
            stringbuilder.append("您的位置信息:\n");
            stringbuilder.append("经度:");
            stringbuilder.append(location.getlongitude());
            stringbuilder.append("\n纬度:");
            stringbuilder.append(location.getlatitude());
//            stringbuilder.append("\n精确度:");
//            stringbuilder.append(location.getaccuracy());
//            stringbuilder.append("\n高度:");
//            stringbuilder.append(location.getaltitude());
//            stringbuilder.append("\n方向:");
//            stringbuilder.append(location.getbearing());
//            stringbuilder.append("\n速度:");
//            stringbuilder.append(location.getspeed());
//            stringbuilder.append("\n时间:");
//            simpledateformat dateformat = new simpledateformat("yyyy-mm-dd hh mm ss");    //设置日期时间格式
//            stringbuilder.append(dateformat.format(new date(location.gettime())));
            text.settext(stringbuilder);            //显示获取的信息
        } else {
            //否则输出空信息
            text.settext("没有获取到gps信息");
        }
    }
}

 

最后打开androidmainfest.xml添加权限

    <uses-permission android:name="android.permission.access_coarse_location"/>
    <uses-permission android:name="android.permission.access_fine_location"/>

 

添加位置如下

 

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网