IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 高德地图定位城市,通过高德天气API获取天气情况 -> 正文阅读

[移动开发]Android 高德地图定位城市,通过高德天气API获取天气情况

一、使用高德地图定位当前城市

1、官网首页 | 高德控制台注册用户,进入控制台,创建Android应用

上述完成后,点-->添加

?

以上操作完成后,就会有Key,备用,后面会用到

2、地图API引入

定位API,在Module的build.gradle中引入

implementation 'com.amap.api:location:latest.integration';

?3、配置AndroidManifest.xml

在application标签中声明service组件,

<service android:name="com.amap.api.location.APSService"></service>

4、声明权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--如果设置了target >= 28 如果需要启动后台定位则必须声明这个权限-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<!--如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

5、设置高德Key ,上面申请的Key在这里使用

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">       
            
</meta-data>

6、初始化定位,配置参数并启动定位。下面上代码

private AMapLocationClient mLocationClient = null;
private void initMap() {
    AMapLocationClient.updatePrivacyShow(getApplicationContext(), true, true);
    AMapLocationClient.updatePrivacyAgree(getApplicationContext(), true);
    try {
        mLocationClient = new AMapLocationClient(getApplicationContext());
    } catch (Exception e) {
        e.printStackTrace();
    }

    if (null != mLocationClient) {
        mLocationClient.setLocationListener(mLocationListener);
        AMapLocationClientOption mLocationOption = new AMapLocationClientOption();
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
        mLocationOption.setOnceLocation(true);
        mLocationOption.setLocationCacheEnable(false);
        mLocationClient.setLocationOption(mLocationOption);
        mLocationClient.startLocation();
    }
}

private final AMapLocationListener mLocationListener = aMapLocation -> {
    if (aMapLocation != null) {
        if (aMapLocation.getErrorCode() == 0) {
            // 城市名
            String cityName = aMapLocation.getCity();
            // 可根据城市的 adcode获取相应城市的天气情况
            String cityAdCode = aMapLocation.getAdCode();
               
            Log.d(TAG, "onLocationChanged: city: " + cityName + " adCode: " + cityAdCode);
        } else {
            // 定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
            Log.e("AMapError","location Error, ErrCode:"
                    + aMapLocation.getErrorCode() + ", errInfo:"
                    + aMapLocation.getErrorInfo());
        }
    }
};

?二、使用高德API获取天气

文档地址:天气查询-API文档-开发指南-Web服务 API | 高德地图API

1、申请Key,特别注意,这里的Key是Web服务类型的,与上面Android不通用

?2、根据文档,拼成Url请求,请求方式: GET

高德天气查询API服务地址:

实时天气

https://restapi.amap.com/v3/weather/weatherInfo?key="申请的Web服务类型的key"&city="上面通过定位获取到的城市adCode"

预报天气

https://restapi.amap.com/v3/weather/weatherInfo?key="申请的Web服务类型的key"&extensions=all&city="上面通过定位获取到的城市adCode"

3、请求的结果默认是Json格式的,根据官方文档进行解析就可以了。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:00:48  更:2022-07-20 19:01:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码