欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中获取定位经纬度信息

程序员文章站 2024-01-03 10:03:22
场景 根据GPS获取经纬度效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 修改页面布局代码activity_main.xml,在页面上添加一个TextView来显示经纬度 ......

场景

根据gps获取经纬度效果

Android中获取定位经纬度信息

 

 

Android中获取定位经纬度信息

注:

博客:

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

实现

修改页面布局代码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"/>

 

添加位置如下

Android中获取定位经纬度信息

 

 

Android中获取定位经纬度信息

 

上一篇:

下一篇: