一. 项目需求
- 在自己所写的 app 中实现地图定位。
- 可以通过该地图选取目的地,并设置闹钟提醒自己。
- 可以输入提前多少米来设置闹钟的响铃。
二. 开发环境
- Windows10
- Android Studio
- HUAWEI g9 青春版
三. 设计方案
- 在自己的 app 上先实现地图的显示。
- 通过一个 editText 来输入提前多少米提醒我们。
- 另外设计两个按钮来添加闹钟和取消闹钟。
四. 具体措施
- 首先注册高德(这里我开发的是高德地图)成为开发者(打开高德地图,点击底部的开发者平台),创建应用,按照要求填写相应信息(其中在开发地图中要申请key,这个可以在开发者平台中点击链接来根据相应步骤操作),如下图:
2.下载相应的 jar 包和 so 包,该过程可以参考高德地图开发者平台。
选中jar包右键点击 Add As Library, 在build.fradle中看到如下代码 表示导包成功
compile files('libs/AMap_Location_V3.0.0_20170118.jar')
compile files('libs/AMap_Search_V5.0.0_20170309.jar')
compile files('libs/AMap_3DMap_V5.0.0_20170311.jar')
3.加入相应的权限
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 定位 -->
<!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--实现闹钟震动权限-->
<uses-permission android:name="android.permission.VBARTE" />
4.初始定位(从网上 copy 的代码)
//定位
private void initLoc() {
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
m