当前位置:   article > 正文

Android Studio中找到项目的密匙数字证书(MD5和SHA1)配置高德地图Android地图SDK【高德地图使用】_高德地图配置app签名为何是md5值

高德地图配置app签名为何是md5值

1.Android Studio中找到密匙数字证书(MD5和SHA1)

2.Android Studio中配置高德地图Android地图SDK

3.Android Studio中实现高德地图的使用【标记,以标记为中心显示地图,app中调用高德地图进行导航】

4.Android Studio打包relase版APK时(签名),需在配置地图中使用签名文件(.jks)的SHA1。

要领:

一、找数字证书步骤:

1.点Android Studio右侧的gradle

2.点击栏目上的刷新图标

3.点击":app" → “Tasks” → “android” → “signingReport”


二、Android studio中配置高德地图的Android地图SDK

步骤如下:【这里只用了3D地图】

1.下载高德地图Android地图SDK(去高德官方下载


2.解压后得到下图中的1个文件夹和1个jar文件


3.将jar文件复制到项目app下的libs(作为libs的下一级文件)

4.在src下面的main目录上右键new → Directory → 起名为“jniLibs”【必须这么取名】,之后将解压得到的armeabi整个复制到jniLibs下,层级结构见下图:



高德地图的简单使用【第三方app调出高德地图进行导航】

  1. <span style="font-size:14px;">import android.app.AlertDialog;
  2. import android.content.Context;
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.graphics.Color;
  6. import android.os.Bundle;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.text.TextUtils;
  9. import android.util.Log;
  10. import android.view.animation.Animation;
  11. import android.view.animation.LinearInterpolator;
  12. import android.view.animation.RotateAnimation;
  13. import android.widget.EditText;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16. import com.amap.api.maps.AMap;
  17. import com.amap.api.maps.AMapOptions;
  18. import com.amap.api.maps.CameraUpdate;
  19. import com.amap.api.maps.CameraUpdateFactory;
  20. import com.amap.api.maps.LocationSource;
  21. import com.amap.api.maps.MapView;
  22. import com.amap.api.maps.UiSettings;
  23. import com.amap.api.maps.model.BitmapDescriptorFactory;
  24. import com.amap.api.maps.model.CameraPosition;
  25. import com.amap.api.maps.model.Circle;
  26. import com.amap.api.maps.model.CircleOptions;
  27. import com.amap.api.maps.model.LatLng;
  28. import com.amap.api.maps.model.Marker;
  29. import com.amap.api.maps.model.MarkerOptions;
  30. import java.io.File;
  31. import butterknife.BindView;
  32. import butterknife.ButterKnife;
  33. import butterknife.OnClick;
  34. import static android.R.id.progress;
  35. /**
  36. * 获取地址对应的(纬度,经度)
  37. * 【地址转坐标】
  38. * 以标记点为中心显示地图
  39. * 点击标记点弹出提示框【确认进入手机地图进行导航】
  40. */
  41. public class LocalInfoActivity extends AppCompatActivity {
  42. @BindView(R.id.et_localinfo)
  43. EditText etLocalinfo;
  44. @BindView(R.id.tv_localinfo)
  45. TextView tvLocalinfo;
  46. private MapView mMapView = null;
  47. private UiSettings uiSettings;//用于设置地图显示信息
  48. private AMap aMap;//定义一个地图对象
  49. private LatLng latLng;//地图坐标点(纬度,经度)
  50. private Marker marker;//地图标记
  51. private MarkerOptions markerOptions;//标记配置
  52. @Override
  53. protected void onCreate(Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. setContentView(R.layout.activity_local_info);
  56. ButterKnife.bind(this);
  57. showMap(savedInstanceState);//显示地图
  58. initMapOptions();//配置地图信息
  59. showMapFromLatlang();//以新的坐标点为中心显示地图
  60. addAMark();//添加坐标对应标记【添加标记点击事件】
  61. drawACircle();//绘制一个圆饼
  62. }
  63. /**
  64. * 显示出地图
  65. */
  66. private void showMap(Bundle savedInstanceState) {
  67. //获取地图控件引用
  68. mMapView = (MapView) findViewById(R.id.map_localinfo);
  69. //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理
  70. mMapView.onCreate(savedInstanceState);//到这里地图就可以显示出来【需实现生命周期的管理如下生命周期】
  71. }
  72. /**
  73. * 配置地图信息
  74. * “+ -”号是否可用【是否显示】
  75. * 指南针是否显示
  76. * 默认定位按钮
  77. * 缩放比例和高德地图Logo
  78. * 旋转手势不可用
  79. * 设置定位监听
  80. */
  81. private void initMapOptions() {
  82. latLng = new LatLng(30.670000,104.060000);//实例化地图坐标点
  83. aMap = mMapView.getMap();
  84. uiSettings = aMap.getUiSettings();
  85. uiSettings.setScaleControlsEnabled(true);//显示比例尺控件
  86. uiSettings.setZoomControlsEnabled(true);//设施“+ -”是否可以用来控制地图放大倍数
  87. uiSettings.setCompassEnabled(true);//控制指南针是否显示
  88. uiSettings.setMyLocationButtonEnabled(true); // 显示默认的定位按钮
  89. uiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);//设置logo位置【左下角】
  90. uiSettings.setRotateGesturesEnabled(false);//设置旋转手势——不能通过手势来旋转地图
  91. // /**
  92. // * 定位监听,这里没用到
  93. // */
  94. // aMap.setLocationSource(new LocationSource() {//设置定位监听
  95. // @Override
  96. // public void activate(OnLocationChangedListener onLocationChangedListener) {
  97. // }
  98. // @Override
  99. // public void deactivate() {
  100. // }
  101. // });// 设置定位监听
  102. // aMap.setMyLocationEnabled(true);// 可触发定位并显示定位层
  103. }
  104. /**
  105. * 设置新的中心点
  106. * 新的缩放级别【aMap.moveCamera(CameraUpdateFactory.zoomTo(17));//将地图的缩放级别调整到17级】
  107. */
  108. private void showMapFromLatlang() {
  109. CameraUpdate cameraupdate = CameraUpdateFactory.newCameraPosition(new CameraPosition(
  110. latLng,//新的中心点坐标
  111. 16, //新的缩放级别
  112. 30, //俯仰角0°~45°(垂直与地图时为0)
  113. 0 偏航角 0~360° (正北方为0)
  114. ));
  115. aMap.moveCamera(cameraupdate);//将显示地图移动到新的中心点来显示
  116. }
  117. /**
  118. * 在一个坐标上添加标记<span style="white-space:pre"> </span>//清除标记点用aMap.clear()
  119. */
  120. private void addAMark() {
  121. markerOptions = new MarkerOptions();
  122. markerOptions.position(latLng);//设置纬度,经度
  123. markerOptions.title("成都");//标题
  124. markerOptions.draggable(true);//标记可拖动【拖动失败】
  125. markerOptions.visible(true);//点标记是否可见
  126. markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_nomal));//设置标记图标
  127. marker = aMap.addMarker(markerOptions); //获得标记对象(需要使用aMap将标记配置添加到地图后才能生成对应的标记对象)
  128. marker.setRotateAngle(0);//设置倾斜度数(0-360[正负])
  129. /**
  130. * 添加标注点击事件【弹出框确认后进入高德地图导航】
  131. */
  132. aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
  133. @Override
  134. public boolean onMarkerClick(Marker marker) {
  135. AlertDialog dialog = new AlertDialog.Builder(LocalInfoActivity.this)
  136. .setTitle("系统提示")
  137. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  138. @Override
  139. public void onClick(DialogInterface dialog, int which) {
  140. //判断是否已安装高德地图app
  141. if(isInstallByRead("com.autonavi.minimap")){
  142. //下方传入的坐标值需改为你想要去的地方的坐标
  143. goToNaviActivity(LocalInfoActivity.this,"test",null,"30.670000","104.060000","1","2");
  144. }else{
  145. Toast.makeText(LocalInfoActivity.this,"请先安装高德地图app",Toast.LENGTH_SHORT).show();
  146. }
  147. }
  148. })
  149. .setNegativeButton("取消",null)
  150. .setMessage("是否启动高德地图进行导航?")
  151. .show();
  152. return true;
  153. }
  154. });
  155. }
  156. /**
  157. * 以坐标点为中心画一个圆饼
  158. */
  159. private void drawACircle() {
  160. aMap.addCircle(new CircleOptions().
  161. center(latLng).
  162. radius(200).//范围200米
  163. fillColor(Color.argb(progress, 1, 1, 1))//填充色
  164. .strokeColor(Color.argb(progress, 1, 1, 1))//边框色
  165. .strokeWidth(15));
  166. }
  167. @Override
  168. protected void onDestroy() {
  169. super.onDestroy();
  170. //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
  171. mMapView.onDestroy();
  172. }
  173. @Override
  174. protected void onResume() {
  175. super.onResume();
  176. //在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理
  177. mMapView.onResume();
  178. }
  179. @Override
  180. protected void onPause() {
  181. super.onPause();
  182. //在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理
  183. mMapView.onPause();
  184. }
  185. @Override
  186. protected void onSaveInstanceState(Bundle outState) {
  187. super.onSaveInstanceState(outState);
  188. //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理
  189. mMapView.onSaveInstanceState(outState);
  190. }
  191. @OnClick(R.id.btn_localinfo)
  192. public void onClick() {
  193. }
  194. /**
  195. * 配置导航的信息【调用手机已安装的高德地图】
  196. * @param context
  197. * @param sourceApplication 必填 第三方调用应用名称。如 amap
  198. * @param poiname
  199. * @param lat 必填 纬度
  200. * @param lon 必填 经度
  201. * @param dev 必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)
  202. * @param style 必填 导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7 躲避收费和拥堵;8 不走高速躲避收费和拥堵))
  203. */
  204. public static void goToNaviActivity(Context context, String sourceApplication , String poiname , String lat , String lon , String dev , String style){
  205. StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
  206. .append(sourceApplication);
  207. if (!TextUtils.isEmpty(poiname)){
  208. stringBuffer.append("&poiname=").append(poiname);
  209. }
  210. stringBuffer.append("&lat=").append(lat)
  211. .append("&lon=").append(lon)
  212. .append("&dev=").append(dev)
  213. .append("&style=").append(style);
  214. Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
  215. intent.setPackage("com.autonavi.minimap");
  216. context.startActivity(intent);
  217. }
  218. /**
  219. * 根据包名检测某个APP是否安装
  220. *
  221. * @param packageName 包名
  222. * @return true 安装 false 没有安装
  223. */
  224. public static boolean isInstallByRead(String packageName) {
  225. return new File("/data/data/" + packageName).exists();
  226. }
  227. }</span><span style="font-size: 24px;">
  228. </span>
高德地图定位:【注意权限】

配置服务:

<service android:name="com.amap.api.location.APSService"></service>
配置定位:
  1. //定位【获取当前位置坐标(纬度,经度)】
  2. private void getLoacation() {
  3. mlocationClient = new AMapLocationClient(this);
  4. //初始化定位参数
  5. mLocationOption = new AMapLocationClientOption();
  6. //设置定位监听
  7. mlocationClient.setLocationListener(this);
  8. //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
  9. mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
  10. //设置定位间隔,单位毫秒,默认为2000ms
  11. mLocationOption.setInterval(2000);
  12. //设置定位参数
  13. mlocationClient.setLocationOption(mLocationOption);
  14. Log.e("---------","定位中...");
  15. //启动定位
  16. mlocationClient.startLocation();
  17. }
  18. //定位监听
  19. @Override
  20. public void onLocationChanged(AMapLocation amapLocation) {
  21. Log.e("------","定位成功");
  22. if (amapLocation != null) {
  23. if (amapLocation.getErrorCode() == 0) {
  24. //定位成功回调信息,设置相关消息
  25. amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
  26. double lat = amapLocation.getLatitude();//获取纬度
  27. double lon = amapLocation.getLongitude();//获取经度
  28. Log.e("------","("+lat+":"+lon+")");
  29. amapLocation.getAccuracy();//获取精度信息
  30. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  31. Date date = new Date(amapLocation.getTime());
  32. df.format(date);//定位时间
  33. } else {
  34. //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
  35. Log.e("------AmapError", "location Error, ErrCode:"
  36. + amapLocation.getErrorCode() + ", errInfo:"
  37. + amapLocation.getErrorInfo());
  38. }
  39. }
  40. }

调用百度地图进行导航:

  1. /**
  2. * 调用百度地图导航
  3. * 使用百度地图导航需注意:需要传入出发点的名字|坐标
  4. */
  5. public void goToBaiduMap(Context context) {
  6. /**
  7. * 查看下面网址有详细的使用说明
  8. * http://developer.baidu.com/map/uri-intro.htm#idmykey37
  9. */
  10. //调起百度PC或Web地图,展示“西安市”从(lat:34.264642646862,lng:108.95108518068 )“我家”到“大雁塔”的驾车路线。
  11. String gole = "intent://map/direction?" +
  12. "origin=latlng:30.670000,104.060000|name:我的坐标" +//传入自己的坐标【这里是模拟坐标】name属性不要好像会不开启导航
  13. "&destination=天府广场" + //目的地名称
  14. "&mode=driving®ion=成都市" + //所在城市
  15. "&referer=Autohome" + //
  16. "|GasStation#Intent;" + //
  17. "scheme=bdapp;" + //固定为bdapp
  18. "package=com.baidu.BaiduMap;" + //百度包
  19. "end";//结束标志
  20. try {
  21. Intent intent = Intent.getIntent(gole);
  22. context.startActivity(intent);
  23. } catch (URISyntaxException e) {
  24. e.printStackTrace();
  25. }
  26. }

XML布局:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:id="@+id/activity_local_info"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="com.liu.ditu.LocalInfoActivity">
  8. <com.amap.api.maps.MapView
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11. android:id="@+id/map_localinfo"
  12. ></com.amap.api.maps.MapView>
  13. <LinearLayout
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:orientation="vertical"
  17. >
  18. <LinearLayout
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content">
  21. <EditText
  22. android:layout_width="wrap_content"
  23. android:layout_height="50dp"
  24. android:layout_weight="1"
  25. android:textSize="20sp"
  26. android:layout_marginLeft="50dp"
  27. android:layout_gravity="center_vertical"
  28. android:id="@+id/et_localinfo"/>
  29. <Button
  30. android:layout_width="wrap_content"
  31. android:layout_height="match_parent"
  32. android:id="@+id/btn_localinfo"
  33. android:layout_gravity="center_vertical"
  34. android:text="提交"
  35. />
  36. </LinearLayout>
  37. <TextView
  38. android:layout_width="match_parent"
  39. android:layout_height="40dp"
  40. android:layout_marginTop="5dp"
  41. android:textSize="18sp"
  42. android:id="@+id/tv_localinfo"
  43. />
  44. </LinearLayout>
  45. </RelativeLayout>
地图效果:


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/250570
推荐阅读
相关标签
  

闽ICP备14008679号