首页 > 其他分享 >每日总结2023-04-08

每日总结2023-04-08

时间:2023-04-08 22:56:02浏览次数:46  
标签:定位 04 08 mLocationOption AMapLocationClientOption 2023 import true permissions

今天实现了Android Studio的高德地图APK定位

package com.example.math.www_user;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.example.math.R;

import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;

public class Local_Activity extends AppCompatActivity implements AMapLocationListener {
    //内容
    private TextView tvContent;
    //请求权限码
    private static final int REQUEST_PERMISSIONS = 9527;
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_local);
        AMapLocationClient.updatePrivacyShow(this, true, true);
        AMapLocationClient.updatePrivacyAgree(this, true);
        requestPermission();
        initLocation();
        tvContent = findViewById(R.id.tv_content);

    }

    //动态请求权限
    @AfterPermissionGranted(REQUEST_PERMISSIONS)
    private void requestPermission() {
        String[] permissions = {
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_PHONE_STATE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };

        if (EasyPermissions.hasPermissions(this, permissions)) {
            Toast.makeText(this, "已获得权限,可以定位啦!", Toast.LENGTH_SHORT).show();
        } else {
            //false 无权限
            EasyPermissions.requestPermissions(this, "需要权限", REQUEST_PERMISSIONS, permissions);
        }
    }

    //请求权限
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //设置权限请求结果
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

    //初始化定位
    private void initLocation() {
        try {
            mLocationClient = new AMapLocationClient(getApplicationContext());
        } catch (Exception ignored) {
        }
        //设置定位回调监听
        mLocationClient.setLocationListener(this);
        //初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();
        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //获取最近3s内精度最高的一次定位结果:
        //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
        mLocationOption.setOnceLocationLatest(true);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        //设置定位请求超时时间,单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
        mLocationOption.setHttpTimeOut(20000);
        //关闭缓存机制,高精度定位会产生缓存。
        mLocationOption.setLocationCacheEnable(false);
        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
    }

    // 接收异步返回的定位结果
    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation != null) {
            if (aMapLocation.getErrorCode() == 0) {
                //地址

                String address = aMapLocation.getAddress();
                tvContent.setText(address == null ? "无地址" : address);
            } else {
                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                Log.e("AmapError", "location Error, ErrCode:"
                        + aMapLocation.getErrorCode() + ", errInfo:"
                        + aMapLocation.getErrorInfo());
            }
        }
    }
}

其中新增配置

    <!--用于访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!--用于写入缓存数据到扩展存储卡-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你申请的key" />
        <service android:name="com.amap.api.location.APSService" />

 

需要注意的时,在使用地图前注意申请权限,否则会因为隐私问题而不能使用

标签:定位,04,08,mLocationOption,AMapLocationClientOption,2023,import,true,permissions
From: https://www.cnblogs.com/JJTyyds/p/17299475.html

相关文章

  • 2023年郑州轻工业大学校赛邀请赛yy
    这也是第一次参加几个人以组队的形式来进行答题、评比,而且这是一场线下赛,收获更是很多。题目一共有十二道,一共五个小时,我们上来也是没有头绪先做哪个,可能三个人的思路不太一样,我们最终先写了第一题,写出来后,也是很自信提交。但是很遗憾的运行超时,换了一种之后还是超时,慢慢就放弃了(......
  • 2023/4/8
    今天周六,参加了一场比赛。占用了大部分的时间,其他时间,又对团队项目做了些增加。因为,搜索,应该尽可能的强大。当然也询问了一些其他人的意见。给出的建议是把参数封装一下,封装成一个类。而不是单单的n多个参数。......
  • 2023年4月蓝桥杯B组A到G题解析
    试题A:阶乘求和本题总分:5分【问题描述】令S=1!+2!+3!+...+202320232023!,求S的末尾9位数字。提示:答案首位不为0。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得......
  • JavaWeb-jsp-19课-JSP语法-2023-04-08
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>$Title$</title></head><body><%--注释JSP带百分号--%><%=newjava.util.Date()%>&l......
  • 电阻触摸屏与 XPT2046 芯片简介
    触摸屏包括两种,一种为电容触摸屏,另一种为电阻触摸屏。电阻触摸屏的优点是:价格便宜,适合特殊工况(湿度较大、有水珠的环境)。电容触摸屏的优点是:支持多点触控,精度高。 XPT2046 是专用于电阻式触摸屏的芯片,其基于四线SPI 通信协议。其ADC的精度为12位。 测量坐标原理:  ......
  • 2023年4月8日
    执行重画ER图,整理数据库表系统架构设计修改页面配色,先改完前两个,交给小芳,再该配色article文章表bug缺陷表bug_log缺陷日志表comment评论表debug表是调试用的表error是错误码表hot_search热搜interface接口log是日志表menu菜单module模块表project项目表(项目封......
  • 如何保护群晖NAS中的AutoHotkey自动化热键脚本程序源代码 2023年4月8日
       如何保护群晖NAS中的AutoHotkey自动化热键脚本程序源代码2023年4月8日    通过RaiDrive_v1.5.3.1或者MountDuck或者WebDrive或者NetDrive2或者SynologyDriveClient异地远程连接群晖NAS的SFTP或者WebDAV文件服务并映射网络驱动器之后(公网IP地址、DDNS动态域......
  • 2023.04.08 定时测试随笔
    T2[ZJOI2007]时态同步传送门:luoguP1131题目要求我们用最少的代价使根节点到每个叶子节点的距离相等那如何使代价最小呢,对于下面这种情况对于有同一个父亲节点的两个叶子节点,一个的代价为5,一个代价为3,他们都加了一个代价3,这样我们可以把3加到父亲节点到根节点的树枝上,这......
  • 2023年郑州轻工业大学校赛邀请赛clk
        需要总结的地方挺多的,首先是题目一次通过率有待提高,对于一些特别的样例还要加以分析,算法熟练的不高,不能清晰的看出在哪道题考什么算法,就比如兔子爱吃萝卜那道题,就是一个背包问题,比较基础,但是我们团队在解决问题的时候考虑到了dp解法,但不能清晰的解决问题,最后只能用极其......
  • ubuntu18.04更改dns server
    打开 /etc/systemd/resolved.conf,设置变量DNS:$sudogedit  /etc/systemd/resolved.conf2.单击"save" 按钮,保存设置3.输入一下命令,使设置生效$systemctlrestartsystemd-resolved//重启systemd-resolved服务$systemctlenablesystemd-resolved//使能systemd-reso......