菜鸟学高德地图--导航

来源:互联网 发布:机顶盒直播软件 编辑:程序博客网 时间:2024/06/05 19:33

一、前提条件:

1.有高德账号,添加应用,获取应用的key

2.有讯飞账号,添加用用,获取应用的key

二、准备工作:

从http://lbs.amap.com/api/android-navi-sdk/download/中下载“Android导航SDK V1.9.4 一键下载”以及“开发包定制下载”。如下图,


三、步骤(做个简单的导航)

1.在XML布局中添加如下代码

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

2.把从高德下载下来“开发包定制下载”sdk中的so包、jar包导入到项目中

1)直接把jar包导入到libs文件夹


2)在main文件夹中添加一个文件夹“jniLibs”,把so包的文件夹“armeabi”一起导入进“jniLibs”中


3)在gradle中依赖jar、so包



3.把从高德下载“Android导航SDK V1.9.4 一键下载”sdk中的baseActivity、TTSController、ErrorInfo

4.在AndroidManifest中添加权限、服务、高德key

1)权限

    <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"/>    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <uses-permission android:name="android.permission.WAKE_LOCK"/>
2)服务

   <service android:name="com.amap.api.location.APSService"/>
3)高德key

  <meta-data            android:name="com.amap.api.v2.apikey"            android:value="高德key值"/>
5.在activity添加如下代码:

public class MainActivity extends BaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取 AMapNaviView 实例        mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);        mAMapNaviView.onCreate(savedInstanceState);//显示地图        mAMapNaviView.setAMapNaviViewListener(this);    }    @Override    protected void onResume() {        super.onResume();        mAMapNaviView.onResume();    }    @Override    protected void onPause() {        super.onPause();        mAMapNaviView.onPause();    }    @Override    protected void onDestroy() {        super.onDestroy();        mAMapNaviView.onDestroy();    }    @Override    public void onInitNaviFailure() {    }    @Override    public void onInitNaviSuccess() {        super.onInitNaviSuccess();        /**         * 方法: int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute); 参数:         *         * @congestion 躲避拥堵         * @avoidhightspeed 不走高速         * @cost 避免收费         * @hightspeed 高速优先         * @multipleroute 多路径         *         *  说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。         *  注意: 不走高速与高速优先不能同时为true 高速优先与避免收费不能同时为true         */        int strategy = 0;        try {            //再次强调,最后一个参数为true时代表多路径,否则代表单路径            strategy = mAMapNavi.strategyConvert(true, false, false, false, false);        } catch (Exception e) {            e.printStackTrace();        }        mAMapNavi.calculateDriveRoute(sList, eList, null, strategy);    }    @Override    public void onCalculateRouteSuccess() {        super.onCalculateRouteSuccess();        mAMapNavi.startNavi(NaviType.GPS);    }    @Override    public void onCalculateRouteFailure(int i) {    }}

这样就有地图了。

6.把从讯飞下载下来sdk中的so包、jar包导入到项目中

1)直接把jar包导入到libs文件夹,把so包的文件夹“armeabi”一起导入进“jniLibs”中


2)在gradle中依赖jar包



7.把TTSController代码中init()的方法中的【text=“57b3c4a9”】改为【text=“讯飞的key”】,这样就有声音了。




0 0
原创粉丝点击