Android Studio中找到项目的密匙数字证书(MD5和SHA1)配置高德地图Android地图SDK【高德地图使用】
2016-09-17 11:30
603 查看
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调出高德地图进行导航】
配置服务:
调用百度地图进行导航:
XML布局:
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调出高德地图进行导航】
<span style="font-size:14px;">import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.amap.api.maps.AMap; import com.amap.api.maps.AMapOptions; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; import com.amap.api.maps.LocationSource; import com.amap.api.maps.MapView; import com.amap.api.maps.UiSettings; import com.amap.api.maps.model.BitmapDescriptorFactory; import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.Circle; import com.amap.api.maps.model.CircleOptions; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import java.io.File; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import static android.R.id.progress; /** * 获取地址对应的(纬度,经度) * 【地址转坐标】 * 以标记点为中心显示地图 * 点击标记点弹出提示框【确认进入手机地图进行导航】 */ public class LocalInfoActivity extends AppCompatActivity { @BindView(R.id.et_localinfo) EditText etLocalinfo; @BindView(R.id.tv_localinfo) TextView tvLocalinfo; private MapView mMapView = null; private UiSettings uiSettings;//用于设置地图显示信息 private AMap aMap;//定义一个地图对象 private LatLng latLng;//地图坐标点(纬度,经度) private Marker marker;//地图标记 private MarkerOptions markerOptions;//标记配置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_info); ButterKnife.bind(this); showMap(savedInstanceState);//显示地图 initMapOptions();//配置地图信息 showMapFromLatlang();//以新的坐标点为中心显示地图 addAMark();//添加坐标对应标记【添加标记点击事件】 drawACircle();//绘制一个圆饼 } /** * 显示出地图 */ private void showMap(Bundle savedInstanceState) { //获取地图控件引用 mMapView = (MapView) findViewById(R.id.map_localinfo); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理 mMapView.onCreate(savedInstanceState);//到这里地图就可以显示出来【需实现生命周期的管理如下生命周期】 } /** * 配置地图信息 * “+ -”号是否可用【是否显示】 * 指南针是否显示 * 默认定位按钮 * 缩放比例和高德地图Logo * 旋转手势不可用 * 设置定位监听 */ private void initMapOptions() { latLng = new LatLng(30.670000,104.060000);//实例化地图坐标点 aMap = mMapView.getMap(); uiSettings = aMap.getUiSettings(); uiSettings.setScaleControlsEnabled(true);//显示比例尺控件 uiSettings.setZoomControlsEnabled(true);//设施“+ -”是否可以用来控制地图放大倍数 uiSettings.setCompassEnabled(true);//控制指南针是否显示 uiSettings.setMyLocationButtonEnabled(true); // 显示默认的定位按钮 uiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);//设置logo位置【左下角】 uiSettings.setRotateGesturesEnabled(false);//设置旋转手势——不能通过手势来旋转地图 // /** // * 定位监听,这里没用到 // */ // aMap.setLocationSource(new LocationSource() {//设置定位监听 // @Override // public void activate(OnLocationChangedListener onLocationChangedListener) { // } // @Override // public void deactivate() { // } // });// 设置定位监听 // aMap.setMyLocationEnabled(true);// 可触发定位并显示定位层 } /** * 设置新的中心点 * 新的缩放级别【aMap.moveCamera(CameraUpdateFactory.zoomTo(17));//将地图的缩放级别调整到17级】 */ private void showMapFromLatlang() { CameraUpdate cameraupdate = CameraUpdateFactory.newCameraPosition(new CameraPosition( latLng,//新的中心点坐标 16, //新的缩放级别 30, //俯仰角0°~45°(垂直与地图时为0) 4000 0 ////偏航角 0~360° (正北方为0) )); aMap.moveCamera(cameraupdate);//将显示地图移动到新的中心点来显示 } /** * 在一个坐标上添加标记<span style="white-space:pre"> </span>//清除标记点用aMap.clear() */ private void addAMark() { markerOptions = new MarkerOptions(); markerOptions.position(latLng);//设置纬度,经度 markerOptions.title("成都");//标题 markerOptions.draggable(true);//标记可拖动【拖动失败】 markerOptions.visible(true);//点标记是否可见 markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_nomal));//设置标记图标 marker = aMap.addMarker(markerOptions); //获得标记对象(需要使用aMap将标记配置添加到地图后才能生成对应的标记对象) marker.setRotateAngle(0);//设置倾斜度数(0-360[正负]) /** * 添加标注点击事件【弹出框确认后进入高德地图导航】 */ aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { AlertDialog dialog = new AlertDialog.Builder(LocalInfoActivity.this) .setTitle("系统提示") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //判断是否已安装高德地图app if(isInstallByRead("com.autonavi.minimap")){ //下方传入的坐标值需改为你想要去的地方的坐标 goToNaviActivity(LocalInfoActivity.this,"test",null,"30.670000","104.060000","1","2"); }else{ Toast.makeText(LocalInfoActivity.this,"请先安装高德地图app",Toast.LENGTH_SHORT).show(); } } }) .setNegativeButton("取消",null) .setMessage("是否启动高德地图进行导航?") .show(); return true; } }); } /** * 以坐标点为中心画一个圆饼 */ private void drawACircle() { aMap.addCircle(new CircleOptions(). center(latLng). radius(200).//范围200米 fillColor(Color.argb(progress, 1, 1, 1))//填充色 .strokeColor(Color.argb(progress, 1, 1, 1))//边框色 .strokeWidth(15)); } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理 mMapView.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理 mMapView.onSaveInstanceState(outState); } @OnClick(R.id.btn_localinfo) public void onClick() { } /** * 配置导航的信息【调用手机已安装的高德地图】 * @param context * @param sourceApplication 必填 第三方调用应用名称。如 amap * @param poiname * @param lat 必填 纬度 * @param lon 必填 经度 * @param dev 必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密) * @param style 必填 导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7 躲避收费和拥堵;8 不走高速躲避收费和拥堵)) */ public static void goToNaviActivity(Context context, String sourceApplication , String poiname , String lat , String lon , String dev , String style){ StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=") .append(sourceApplication); if (!TextUtils.isEmpty(poiname)){ stringBuffer.append("&poiname=").append(poiname); } stringBuffer.append("&lat=").append(lat) .append("&lon=").append(lon) .append("&dev=").append(dev) .append("&style=").append(style); Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString())); intent.setPackage("com.autonavi.minimap"); context.startActivity(intent); } /** * 根据包名检测某个APP是否安装 * * @param packageName 包名 * @return true 安装 false 没有安装 */ public static boolean isInstallByRead(String packageName) { return new File("/data/data/" + packageName).exists(); } }</span><span style="font-size: 24px;"> </span>高德地图定位:【注意权限】
配置服务:
<service android:name="com.amap.api.location.APSService"></service>配置定位:
//定位【获取当前位置坐标(纬度,经度)】 private void getLoacation() { mlocationClient = new AMapLocationClient(this); //初始化定位参数 mLocationOption = new AMapLocationClientOption(); //设置定位监听 mlocationClient.setLocationListener(this); //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位间隔,单位毫秒,默认为2000ms mLocationOption.setInterval(2000); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); Log.e("---------","定位中..."); //启动定位 mlocationClient.startLocation(); } //定位监听 @Override public void onLocationChanged(AMapLocation amapLocation) { Log.e("------","定位成功"); if (amapLocation != null) { if (amapLocation.getErrorCode() == 0) { //定位成功回调信息,设置相关消息 amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 double lat = amapLocation.getLatitude();//获取纬度 double lon = amapLocation.getLongitude();//获取经度 Log.e("------","("+lat+":"+lon+")"); amapLocation.getAccuracy();//获取精度信息 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(amapLocation.getTime()); df.format(date);//定位时间 } else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("------AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo()); } } }
调用百度地图进行导航:
/** * 调用百度地图导航 * 使用百度地图导航需注意:需要传入出发点的名字|坐标 */ public void goToBaiduMap(Context context) { /** * 查看下面网址有详细的使用说明 * http://developer.baidu.com/map/uri-intro.htm#idmykey37 */ //调起百度PC或Web地图,展示“西安市”从(lat:34.264642646862,lng:108.95108518068 )“我家”到“大雁塔”的驾车路线。 String gole = "intent://map/direction?" + "origin=latlng:30.670000,104.060000|name:我的坐标" +//传入自己的坐标【这里是模拟坐标】name属性不要好像会不开启导航 "&destination=天府广场" + //目的地名称 "&mode=driving®ion=成都市" + //所在城市 "&referer=Autohome" + // "|GasStation#Intent;" + // "scheme=bdapp;" + //固定为bdapp "package=com.baidu.BaiduMap;" + //百度包 "end";//结束标志 try { Intent intent = Intent.getIntent(gole); context.startActivity(intent); } catch (URISyntaxException e) { e.printStackTrace(); } }
XML布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_local_info" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.liu.ditu.LocalInfoActivity"> <com.amap.api.maps.MapView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map_localinfo" ></com.amap.api.maps.MapView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:textSize="20sp" android:layout_marginLeft="50dp" android:layout_gravity="center_vertical" android:id="@+id/et_localinfo"/> <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/btn_localinfo" android:layout_gravity="center_vertical" android:text="提交" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginTop="5dp" android:textSize="18sp" android:id="@+id/tv_localinfo" /> </LinearLayout> </RelativeLayout>地图效果:
相关文章推荐
- android开发 android studio配置opencv for android sdk,使用opencv的java函数
- ANDROID项目中嵌入高德地图(一)配置环境+显示地图
- Android 使用Android Studio来生成SHA1以及MD5,还有包名
- Android程序签名详解、打包,分别使用keytool工具和Android Studio生成数字证书
- (转)Android之高德地图SDK配置及简单使用详解
- 如何使用Android Studio打开一个App项目,导入Android App项目需要修改哪些配置文件?
- Android之高德地图SDK配置及简单使用详解
- Android O体验系列(一)Android Studio2.4预览版的使用及项目使用配置方式
- 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- android中查看项目数字证书的两种方法
- 使用Android Studio构建Android项目常见问题收集
- eclipse 和 Android studio:SHA1和MD5证书指纹数据获取
- AndroidAnnotations 使用在library项目中出现无法找到R文件下资源索引的错误
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)提供Android studio 的DEMO
- Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
- 获取android应用签名证书的SHA1,MD5,SHA256值
- 【Android Studio使用教程1】Android Studio导入项目的几种方法
- 使用ant及IDE配置文件进行Android项目初步的标准化,规范化构建
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)