示例中心
功能在线体验
控制台
您现在的位置: 开发 > Android 导航SDK > 入门指南 >

高德 开发 Android 导航SDK 入门指南

更新时间:2017年04月21日

本指南是向 Android 应用添加导航的快速入门指南。

第 1 步,下载并安装 Android Studio

按照指南下载安装 Android Studio。(注:下载地址为Google官方网站)

第 2 步,获取高德Key

请前往高德开放平台控制台申请 Android Key。

第 3 步,创建项目

按以下步骤新建一个 Empty Activity 的应用项目。

1、启动 Android Studio。如果您看到 Welcome to Android Studio 对话框,请选择 Start a new Android Studio project,否则,请点击 Android Studio 菜单栏中的 File,然后点击 New->New Project,按提示输入您的应用名称、公司域和项目位置。 然后点击 Next。

2、选择您的应用所需的机型。 如果您不能确定自己的需要,只需选择 Phone and Tablet。然后点击 Next。

3、在“Add an activity to Mobile”对话框中选择 Empty Activity。 然后点击 Next。

4、按提示输入 Activity 名称、布局名称和标题。 使用默认值即可。 然后点击 Finish。

官网下载,选择"自定义下载",下载集合了3D地图功能、导航功能合包(即:若您的工程中包含3D地图的库,请移除3D地图库)。

解压后,会得到多个jar文件和一个armeabi文件夹(armeabi文件夹中包含的是需要的底层库文件,请务必添加到工程中)。

添加到工程的操作步骤请参考Android Studio 配置工程中的 jar 和 so 文件安装步骤。

注意:

1、导航SDK 5.0.0(不含)之前的版本不支持其他的CPU架构(如:armeabi-v7a、arm64-v8a、x86等),项目如果存在这些CPU架构的目录会导致程序闪退,解决方法请参考帮助与支持->热点问题

2、从5.0.0版本开始,支持ARM、x86架构的设备。

第 5 步,下载并安装语音开发包

登录讯飞开放平台进行注册后获取最新的语音SDK包。

示例代码中使用的语音包由科大讯飞提供,包含“Msc.jar”和文件夹“armeabi”(含libmsc.so文件)。

操作步骤请参考Android Studio 配置工程中的 jar 和 so 文件安装步骤。

第 6 步,Hello AMapNavi!

请查看 Android Studio 项目中的下列文件。

1、配置 AndroidManifest.xml 文件

默认情况下,AndroidManifest.xml 位于所设置项目目录 main 文件下,需在其中进行权限设置,确保导航功能可以正常使用。

首先,声明Service组件

V1.9.3到V5.0.0(不含)的版本,由于导航SDK强依赖于定位SDK,需在application标签中声明service组件,每个app拥有自己单独的定位service。

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

注意:V5.0.0(含)以上的版本不再强依赖于定位SDK,无需声明Service组件。

然后,声明权限

Android 6.0及以上系统可以参考Android 6.0权限说明章节

在 AndroidManifest.xml中配置权限,代码如下:

<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--这个权限用于允许程序在手机屏幕关闭后后台进程仍然运行-->
<user-permission android:name="android.permission.WAKE_LOCK"/>

最后,设置高德Key

在 application 标签中配置高德Key,代码如下:

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

2、配置 layout 布局文件

默认情况下,定义应用布局的 XML 文件位于 res/layout/activity_main.xml。在布局文件中定义 AMapNaviView,它包含以下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.amap.api.navi.AMapNaviView
        android:id="@+id/navi_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</RelativeLayout>

3、实现导航

在导航 Activity Java 文件中,实现路径规划、导航等功能。实现步骤如下:

1) 获取AMapNaviView实例,并设置监听。

mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);
mAMapNaviView.onCreate(savedInstanceState);
mAMapNaviView.setAMapNaviViewListener(this);

2) 获取AMapNavi实例,并设置监听。

mAMapNavi = AMapNavi.getInstance(getApplicationContext());
mAMapNavi.addAMapNaviListener(this);

3) 实现 AMapNaviView 的生命周期,保证 AMapNaviView 能正常显示。

@Override
protected void onResume() {
    super.onResume();
    mAMapNaviView.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    mAMapNaviView.onPause();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mAMapNaviView.onDestroy();
    //since 1.6.0 不再在naviview destroy的时候自动执行AMapNavi.stopNavi();请自行执行
    mAMapNavi.stopNavi();
    mAMapNavi.destroy();
}

4) 导航对象AMapNavi对象初始化成功时,进行路径规划。

@Override
    public void onInitNaviSuccess() {
        /**
         * 方法:
         *   int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute);
         * 参数:
         * @congestion 躲避拥堵
         * @avoidhightspeed 不走高速
         * @cost 避免收费
         * @hightspeed 高速优先
         * @multipleroute 多路径
         *
         * 说明:
         *      以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。
         * 注意:
         *      不走高速与高速优先不能同时为true
         *      高速优先与避免收费不能同时为true
         */
        int strategy = 0;
        try {
            strategy = mAMapNavi.strategyConvert(true, false, false, false, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //驾车路径计算
        mAMapNavi.calculateDriveRoute(sList, eList, null, strategy);
    }

5) 当路径规划成功是,开启导航。

@Override
public void onCalculateRouteSuccess() {
    //开始模拟导航
    mAMapNavi.startNavi(NaviType.EMULATOR);
}

第 7 步,连接 Android 设备

了解您的应用实际运行情况的最简单方法是将 Android 设备与计算机相连。 按照说明在您的 Android 设备上启用开发者选项,并配置您的应用和系统以检测设备。

此外,您也可以使用 Android 模拟器来运行您的应用。 使用 Android Virtual Device (AVD) Manager 来配置一台或多台虚拟设备,您可以将设备与 Android 模拟器联用来构建和运行您的应用。

第 8 步,构建和运行您的应用

在 Android Studio 中,点击 Run 菜单选项(或 play 按钮图标)运行您的应用。

提示您选择设备时,选择下列选项之一:

选择与您的计算机相连的 Android 设备 此外,还可以选择 Launch emulator 单选按钮,然后选择您之前配置过的虚拟设备 点击 OK。 Android Studio 将调用 Gradle 构建您的应用,然后在设备或模拟器上显示结果。应用打开可能需要几分钟的时间。

您可以看到在地图上有个蓝色箭头沿着线路导航。如果您未看到地图,请确认是否在AndroidManifest.xml中添加了您的高德Key;如果您看到了地图,但是没有看到蓝色箭头沿线导航,那请检查您是否联网。

后续步骤

您可能想观摩一些示例代码。您可以在开发指南中阅读更多有关导航的内容。

示例中心 功能
在线体验
常见问题