一、前提条件:
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”】,这样就有声音了。