最近自己在学习百度地图和讯飞语音,这里自己整理点导航方面的。我用的是Android studio 可能和eclipse有点不一样但大体差不多。

一.主要文件

1.如何获取密钥等步骤自行查询百度官网。。。这里贴需要的主要文件


2.lib包里面放着百度地图需要用的类

我个人不喜欢把jar包和so方法放一块,但是喜欢放一块的也行。要在bulid.gradle里面声明去哪找so方法


3.这里是需要的权限,我是Android5.0系统这个以上的系统要重写下权限获取

<!-- 连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

4.百度地图的key和service



service必须要在jar包添加进去以后才有效不然都是报错(f就是包里面的一个类)

5.初始化


SDK的初始化一定要在setContentView之前!

二.java代码和布局代码

1.布局:

这个是导航的诱导界面,里面有个这里没有给图片报错删掉那一行就行了 不影响功能

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="320dp"
    android:layout_height="260dp"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:gravity="center"><ImageView
        android:id="@+id/enlarge_view_img"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:visibility="gone"/><LinearLayout
        android:id="@+id/route_guide_ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="center"><LinearLayout
            android:id="@+id/time_distance_ll"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:gravity="center"><TextView
                android:id="@+id/remain_time_tx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_marginRight="10dp"/><TextView
                android:id="@+id/remain_distance_tx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center" /><TextView
                android:id="@+id/current_speed_tx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="100km/h"
                android:textSize="14sp"
                android:layout_marginLeft="10dp"
                android:gravity="center" /></LinearLayout><RelativeLayout
            android:id="@+id/simple_guide_rl"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"><LinearLayout
                android:id="@+id/simple_go_ll"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_centerHorizontal="true"><ImageView
                    android:id="@+id/turn_img"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:background="@drawable/navi_guide_turn" /><TextView
                    android:id="@+id/remain_distance"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:layout_toRightOf="@id/turn_img"
                    android:gravity="center"
                    android:layout_marginLeft="8dp"/><TextView
                    android:id="@+id/go_tx"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:layout_toRightOf="@id/remain_distance"
                    android:layout_marginLeft="8dp"
                    android:gravity="center"
                    android:text="前往" /></LinearLayout><TextView
                android:id="@+id/next_road_tx"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                android:layout_marginTop="20dp"
                android:layout_centerHorizontal="true"
                android:layout_below="@id/simple_go_ll" /></RelativeLayout><RelativeLayout
            android:id="@+id/along_rl"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"><LinearLayout
                android:id="@+id/along_meter_ll"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:orientation="horizontal"><TextView
                    android:id="@+id/along_wrods_tx"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp" /><TextView
                    android:id="@+id/along_meters_tx"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:layout_marginLeft="30dp" /></LinearLayout><TextView
                android:id="@+id/current_road_tx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_below="@id/along_meter_ll" /></RelativeLayout><LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_gravity="center"><TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:text="GPS定位:" /><TextView
                android:id="@+id/loacte_tx"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:text="未定位" /></LinearLayout></LinearLayout></LinearLayout>

2.这个的导航输入地址的界面,我自己还加了一个地图在上面可以去掉。(里面的背景都可以去掉我这里没贴出来)

<?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.baidu.mapapi.map.MapView
        android:id="@+id/baiduMapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:focusable="true" /><RelativeLayout
        android:id="@+id/li_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="@drawable/edittext2"><LinearLayout
            android:id="@+id/li_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/bt_search"
            android:layout_toStartOf="@+id/bt_search"
            android:orientation="vertical"><EditText
                android:id="@+id/ed_1"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:hint="我的位置"
                android:textSize="16sp"
                android:background="@drawable/edittext2"/><EditText
                android:id="@+id/ed_2"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginTop="1dp"
                android:hint="终点位置"
                android:textSize="16sp"
                android:background="@drawable/edittext2"/></LinearLayout><Button
            android:id="@+id/bt_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:background="@drawable/button2"
            android:text="前往" /></RelativeLayout></RelativeLayout>
2.java代码
(1).GuideActivity
package com.example.fire.BaiduMap;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.geocode.GeoCodeOption;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import com.baidu.navisdk.adapter.BNCommonSettingParam;
import com.baidu.navisdk.adapter.BNOuterLogUtil;
import com.baidu.navisdk.adapter.BNOuterTTSPlayerCallback;
import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BNaviSettingManager;
import com.baidu.navisdk.adapter.BaiduNaviManager;
import com.example.fire.MainActivity;
import com.example.fire.R;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class GuideActivity extends AppCompatActivity implements OnGetGeoCoderResultListener {private MapView myMapView = null;//地图控件
    private BaiduMap myBaiduMap;//百度地图对象
    private LocationClient mylocationClient;//定位服务客户对象
    private Context context;private float myCurrentX;private MyOrientationListener myOrientationListener;//方向感应器类对象

    GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用
    //导航
    private static final String APP_FOLDER_NAME = "BNSDKSimpleDemo";private String mSDCardPath = null;public static final String ROUTE_PLAN_NODE = "routePlanNode";private final static String authBaseArr[] ={ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION };private final static String authComArr[] = { Manifest.permission.READ_PHONE_STATE };private final static int authBaseRequestCode = 1;private final static int authComRequestCode = 2;private boolean hasInitSuccess = false;private boolean hasRequestComAuth = false;private double lat2,lon2;//经度longitude,纬度latitude@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_guide);(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);//标题栏返回按钮
        this.context = this;initView();initLocation();Handler h = new Handler();h.postDelayed(new Runnable() {@Override
            public void run() {String name = Thread.currentThread().getName();}}, 500);// 初始化搜索模块,注册事件监听
        mSearch = GeoCoder.newInstance();mSearch.setOnGetGeoCodeResultListener(this);Button bt_search = (Button) findViewById(R.id.bt_search);BNOuterLogUtil.setLogSwitcher(true);bt_search.setOnClickListener(new View.OnClickListener() {@Override
            public void onClick(View arg0) {if (BaiduNaviManager.isNaviInited()) {routeplanToNavi(BNRoutePlanNode.CoordinateType.BD09LL);}}});//权限申请
        if (initDirs()) {initNavi();}}private void initView() {myMapView = (MapView) findViewById(R.id.baiduMapView);myBaiduMap = myMapView.getMap();//根据给定增量缩放地图级别
        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(17.0f);myBaiduMap.setMapStatus(msu);myMapView.getChildAt(2).setPadding(0, 0, 0, 650);//这是控制缩放控件的位置
        EditText ed_1 = findViewById(R.id.ed_1);ed_1.setText(MainActivity.locate);ed_1.setSelection(MainActivity.locate.length());}private void initLocation() {MyLocationConfiguration.LocationMode locationMode = MyLocationConfiguration.LocationMode.NORMAL;//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
        mylocationClient = new LocationClient(this);MylocationListener mylistener = new MylocationListener();//注册监听器
        mylocationClient.registerNotifyLocationListener(mylistener);//配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等
        LocationClientOption mOption = new LocationClientOption();//设置坐标类型
        mOption.setCoorType("bd09ll");//设置是否需要地址信息,默认为无地址
        mOption.setIsNeedAddress(true);//设置是否打开gps进行定位
        mOption.setOpenGps(true);//设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效
        int span = 300000;mOption.setScanSpan(span);//设置 LocationClientOption
        mylocationClient.setLocOption(mOption);//配置定位图层显示方式,三个参数的构造器
        MyLocationConfiguration configuration = new MyLocationConfiguration(locationMode, true, null);//设置定位图层配置信息,只有先允许定位图层后设置定位图层配置信息才会生效,参见 setMyLocationEnabled(boolean)
        myBaiduMap.setMyLocationConfiguration(configuration);myOrientationListener = new MyOrientationListener(context);//通过接口回调来实现实时方向的改变
        myOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {@Override
            public void onOrientationChanged(float x) {myCurrentX = x;}});}private boolean initDirs() {mSDCardPath = getSdcardDir();if (mSDCardPath == null) {return false;}File f = new File(mSDCardPath, APP_FOLDER_NAME);if (!f.exists()) {try {f.mkdir();} catch (Exception e) {e.printStackTrace();return false;}}return true;}String authinfo = null;/**
     * 内部TTS播报状态回传handler
     */
    private Handler ttsHandler = new Handler() {public void handleMessage(Message msg) {int type = msg.what;switch (type) {case BaiduNaviManager.TTSPlayMsgType.PLAY_START_MSG: {// showToastMsg("Handler : TTS play start");
                    break;}case BaiduNaviManager.TTSPlayMsgType.PLAY_END_MSG: {// showToastMsg("Handler : TTS play end");
                    break;}default:break;}}};/**
     * 内部TTS播报状态回调接口
     */
    private BaiduNaviManager.TTSPlayStateListener ttsPlayStateListener = new BaiduNaviManager.TTSPlayStateListener() {@Override
        public void playEnd() {}@Override
        public void playStart() {}};private boolean hasBasePhoneAuth() {// TODO Auto-generated method stub
        PackageManager pm = this.getPackageManager();for (String auth : authBaseArr) {if (pm.checkPermission(auth, this.getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private boolean hasCompletePhoneAuth() {// TODO Auto-generated method stub
        PackageManager pm = this.getPackageManager();for (String auth : authComArr) {if (pm.checkPermission(auth, this.getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private void initNavi(){BNOuterTTSPlayerCallback ttsCallback = null;// 申请权限
        if (android.os.Build.VERSION.SDK_INT >= 23) {if (!hasBasePhoneAuth()) {this.requestPermissions(authBaseArr, authBaseRequestCode);return;}}BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME, new BaiduNaviManager.NaviInitListener() {@Override
            public void onAuthResult(int status, String msg) {if (0 == status) {authinfo = "key校验成功!";} else {authinfo = "key校验失败, " + msg;}GuideActivity.this.runOnUiThread(new Runnable() {@Override
                    public void run() {Toast.makeText(GuideActivity.this, authinfo, Toast.LENGTH_LONG).show();}});}public void initStart() {Toast.makeText(GuideActivity.this, "百度导航引擎初始化开始", Toast.LENGTH_SHORT).show();}public void initFailed() {Toast.makeText(GuideActivity.this, "百度导航引擎初始化失败", Toast.LENGTH_SHORT).show();}public void initSuccess() {Toast.makeText(GuideActivity.this, "百度导航引擎初始化成功", Toast.LENGTH_SHORT).show();hasInitSuccess = true;initSetting();}}, null, ttsHandler, ttsPlayStateListener);}private String getSdcardDir() {if (Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {return Environment.getExternalStorageDirectory().toString();}return null;}private BNRoutePlanNode.CoordinateType mCoordinateType = null;private void routeplanToNavi(BNRoutePlanNode.CoordinateType coType) {mCoordinateType = coType;if (!hasInitSuccess) {Toast.makeText(GuideActivity.this, "还未初始化!", Toast.LENGTH_SHORT).show();}// 权限申请
        if (android.os.Build.VERSION.SDK_INT >= 23) {// 保证导航功能完备
            if (!hasCompletePhoneAuth()) {if (!hasRequestComAuth) {hasRequestComAuth = true;this.requestPermissions(authComArr, authComRequestCode);return;} else {Toast.makeText(GuideActivity.this, "没有完备的权限!", Toast.LENGTH_SHORT).show();}}}BNRoutePlanNode sNode = null;BNRoutePlanNode eNode = null;switch (coType) {case BD09LL: {final EditText ed_2 = findViewById(R.id.ed_2);mSearch.geocode(new GeoCodeOption().city("杭州").address(ed_2.getText().toString()));sNode = new BNRoutePlanNode(MainActivity.longitude,MainActivity.latitude, MainActivity.locate, null, coType);eNode = new BNRoutePlanNode(lon2, lat2, "", null, coType);break;}}if (sNode != null && eNode != null) {List<BNRoutePlanNode> list = new ArrayList<BNRoutePlanNode>();list.add(sNode);list.add(eNode);BaiduNaviManager.getInstance().launchNavigator(this, list, 1, true, new DemoRoutePlanListener(sNode), eventListerner);}}BaiduNaviManager.NavEventListener eventListerner = new BaiduNaviManager.NavEventListener() {@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)@Override
        public void onCommonEventCall(int what, int arg1, int arg2, Bundle bundle) {GuideHandler.getInstance().handleNaviEvent(what, arg1, arg2, bundle);}};public class DemoRoutePlanListener implements BaiduNaviManager.RoutePlanListener {private BNRoutePlanNode mBNRoutePlanNode = null;public DemoRoutePlanListener(BNRoutePlanNode node) {mBNRoutePlanNode = node;}@Override
        public void onJumpToNavigator() {Intent intent = new Intent(GuideActivity.this, GuideInduceActivity.class);Bundle bundle = new Bundle();bundle.putSerializable(ROUTE_PLAN_NODE, (BNRoutePlanNode) mBNRoutePlanNode);intent.putExtras(bundle);startActivity(intent);}@Override
        public void onRoutePlanFailed() {// TODO Auto-generated method stub
            Toast.makeText(GuideActivity.this, "算路失败", Toast.LENGTH_SHORT).show();}}private void initSetting() {BNaviSettingManager.setShowTotalRoadConditionBar(BNaviSettingManager.PreViewRoadCondition.ROAD_CONDITION_BAR_SHOW_ON);BNaviSettingManager.setVoiceMode(BNaviSettingManager.VoiceMode.Veteran);BNaviSettingManager.setRealRoadCondition(BNaviSettingManager.RealRoadCondition.NAVI_ITS_ON);BNaviSettingManager.setIsAutoQuitWhenArrived(true);Bundle bundle = new Bundle();// 必须设置APPID,否则会静音
        bundle.putString(BNCommonSettingParam.TTS_APP_ID, "11237807");BNaviSettingManager.setNaviSdkParam(bundle);}private BNOuterTTSPlayerCallback mTTSCallback = new BNOuterTTSPlayerCallback() {@Override
        public void stopTTS() {}@Override
        public void resumeTTS() {}@Override
        public void releaseTTSPlayer() {}@Override
        public int playTTSText(String speech, int bPreempt) {return 1;}@Override
        public void phoneHangUp() {}@Override
        public void phoneCalling() {}@Override
        public void pauseTTS() {}@Override
        public void initTTSPlayer() {}@Override
        public int getTTSState() {return 1;}};@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {// TODO Auto-generated method stub
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == authBaseRequestCode) {for (int ret : grantResults) {if (ret == 0) {continue;} else {Toast.makeText(GuideActivity.this, "缺少导航基本的权限!", Toast.LENGTH_SHORT).show();return;}}initNavi();} else if (requestCode == authComRequestCode) {for (int ret : grantResults) {if (ret == 0) {continue;}}routeplanToNavi(mCoordinateType);}}/*
     * 地理编码经纬度与地址之间相互转换
     * */
    public void onGetGeoCodeResult(GeoCodeResult result) {lon2 = result.getLocation().longitude;lat2 = result.getLocation().latitude;}public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {}/*
     *根据经纬度前往
     */
    public void getLocationByLL(double la, double lg){//地理坐标的数据结构
        LatLng latLng = new LatLng(la, lg);//描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置
        MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);myBaiduMap.setMapStatus(msu);}/*
     *定位请求回调接口
     */
    public class MylocationListener implements BDLocationListener{//定位请求回调接口
        private boolean isFirstIn=true;//定位请求回调函数,这里面会得到定位信息
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {//BDLocation 回调的百度坐标类,内部封装了如经纬度、半径等属性信息
            //MyLocationData 定位数据,定位数据建造器
            /*
             * 可以通过BDLocation配置如下参数
             * 1.accuracy 定位精度
             * 2.latitude 百度纬度坐标
             * 3.longitude 百度经度坐标
             * 4.satellitesNum GPS定位时卫星数目 getSatelliteNumber() gps定位结果时,获取gps锁定用的卫星数
             * 5.speed GPS定位时速度 getSpeed()获取速度,仅gps定位结果时有速度信息,单位公里/小时,默认值0.0f
             * 6.direction GPS定位时方向角度
             * */
            double myLatitude = bdLocation.getLatitude();double myLongitude = bdLocation.getLongitude();MyLocationData data = new MyLocationData.Builder().direction(myCurrentX)//设定图标方向
                    .accuracy(bdLocation.getRadius())//getRadius 获取定位精度,默认值0.0f
                    .latitude(myLatitude)//百度纬度坐标
                    .longitude(myLongitude)//百度经度坐标
                    .build();//设置定位数据, 只有先允许定位图层后设置数据才会生效,参见 setMyLocationEnabled(boolean)
            myBaiduMap.setMyLocationData(data);//判断是否为第一次定位,是的话需要定位到用户当前位置
            if (isFirstIn) {//根据当前所在位置经纬度前往
                getLocationByLL(myLatitude, myLongitude);isFirstIn = false;}}}/*
     * 标题栏返回按钮
     * */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case android.R.id.home:finish();//销毁activity
                return true;}return super.onOptionsItemSelected(item);}/*
     *定位服务的生命周期,达到节省
     */
    @Override
    protected void onStart() {super.onStart();//开启定位,显示位置图标
        myBaiduMap.setMyLocationEnabled(true);if(!mylocationClient.isStarted()){mylocationClient.start();}myOrientationListener.start();}@Override
    protected void onStop() {super.onStop();//停止定位
        myBaiduMap.setMyLocationEnabled(false);mylocationClient.stop();myOrientationListener.stop();}@Override
    protected void onResume() {super.onResume();myMapView.onResume();}@Override
    protected void onPause() {super.onPause();myMapView.onPause();}@Override
    protected void onDestroy() {super.onDestroy();myMapView.onDestroy();}
}
(2).GuideInduceActivity
package com.example.fire.BaiduMap;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;import com.baidu.navisdk.adapter.BNRouteGuideManager;
import com.baidu.navisdk.adapter.BNRouteGuideManager.CustomizedLayerItem;
import com.baidu.navisdk.adapter.BNRouteGuideManager.OnNavigationListener;
import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BNRoutePlanNode.CoordinateType;
import com.baidu.navisdk.adapter.BNaviBaseCallbackModel;
import com.baidu.navisdk.adapter.BaiduNaviCommonModule;
import com.baidu.navisdk.adapter.NaviModuleFactory;
import com.baidu.navisdk.adapter.NaviModuleImpl;
import com.example.fire.R;import java.util.ArrayList;
import java.util.List;/**
 * 诱导界面
 *
 * @author sunhao04
 *
 */
public class GuideInduceActivity extends Activity {private final String TAG = GuideActivity.class.getName();private BNRoutePlanNode mBNRoutePlanNode = null;private BaiduNaviCommonModule mBaiduNaviCommonModule = null;/*
     * 对于导航模块有两种方式来实现发起导航。 1:使用通用接口来实现 2:使用传统接口来实现
     *
     */
    // 是否使用通用接口
    private boolean useCommonInterface = true;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);createHandler();View view = null;if (useCommonInterface) {//使用通用接口
            mBaiduNaviCommonModule = NaviModuleFactory.getNaviModuleManager().getNaviCommonModule(NaviModuleImpl.BNaviCommonModuleConstants.ROUTE_GUIDE_MODULE, this,BNaviBaseCallbackModel.BNaviBaseCallbackConstants.CALLBACK_ROUTEGUIDE_TYPE, mOnNavigationListener);if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onCreate();view = mBaiduNaviCommonModule.getView();}} else {//使用传统接口
            view = BNRouteGuideManager.getInstance().onCreate(this,mOnNavigationListener);}if (view != null) {setContentView(view);}Intent intent = getIntent();if (intent != null) {Bundle bundle = intent.getExtras();if (bundle != null) {mBNRoutePlanNode = (BNRoutePlanNode) bundle.getSerializable(GuideActivity.ROUTE_PLAN_NODE);}}//显示自定义图标
        if (hd != null) {hd.sendEmptyMessageAtTime(MSG_SHOW, 5000);}GuideHandler.getInstance().getDialog(this);GuideHandler.getInstance().showDialog();}@Override
    protected void onResume() {super.onResume();if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onResume();}} else {BNRouteGuideManager.getInstance().onResume();}}protected void onPause() {super.onPause();if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onPause();}} else {BNRouteGuideManager.getInstance().onPause();}};@Override
    protected void onDestroy() {super.onDestroy();if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onDestroy();}} else {BNRouteGuideManager.getInstance().onDestroy();}GuideHandler.getInstance().disposeDialog();}@Override
    protected void onStop() {super.onStop();if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onStop();}} else {BNRouteGuideManager.getInstance().onStop();}}/*/
     * (non-Javadoc)
     * @see android.app.Activity#onBackPressed()
     * 此处onBackPressed传递false表示强制退出,true表示返回上一级,非强制退出
     */
    @Override
    public void onBackPressed() {if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onBackPressed(true);}} else {BNRouteGuideManager.getInstance().onBackPressed(false);}}public void onConfigurationChanged(android.content.res.Configuration newConfig) {super.onConfigurationChanged(newConfig);if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onConfigurationChanged(newConfig);}} else {BNRouteGuideManager.getInstance().onConfigurationChanged(newConfig);}};@Override
    public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {Bundle mBundle = new Bundle();mBundle.putInt(RouteGuideModuleConstants.KEY_TYPE_KEYCODE, keyCode);mBundle.putParcelable(RouteGuideModuleConstants.KEY_TYPE_EVENT, event);mBaiduNaviCommonModule.setModuleParams(RouteGuideModuleConstants.METHOD_TYPE_ON_KEY_DOWN, mBundle);try {Boolean ret = (Boolean)mBundle.get(RET_COMMON_MODULE);if(ret) {return true;}}catch(Exception e){e.printStackTrace();}}} return super.onKeyDown(keyCode, event);  }@Override
    protected void onStart() {super.onStart();// TODO Auto-generated method stub
        if(useCommonInterface) {if(mBaiduNaviCommonModule != null) {mBaiduNaviCommonModule.onStart();}} else {BNRouteGuideManager.getInstance().onStart();}}private void addCustomizedLayerItems() {List<CustomizedLayerItem> items = new ArrayList<CustomizedLayerItem>();CustomizedLayerItem item1 = null;if (mBNRoutePlanNode != null) {item1 = new CustomizedLayerItem(mBNRoutePlanNode.getLongitude(), mBNRoutePlanNode.getLatitude(),mBNRoutePlanNode.getCoordinateType(), getResources().getDrawable(R.drawable.icon_marka),CustomizedLayerItem.ALIGN_CENTER);items.add(item1);BNRouteGuideManager.getInstance().setCustomizedLayerItems(items);}BNRouteGuideManager.getInstance().showCustomizedLayer(true);}private static final int MSG_SHOW = 1;private static final int MSG_HIDE = 2;private static final int MSG_RESET_NODE = 3;private Handler hd = null;private void createHandler() {if (hd == null) {hd = new Handler(getMainLooper()) {public void handleMessage(android.os.Message msg) {if (msg.what == MSG_SHOW) {addCustomizedLayerItems();} else if (msg.what == MSG_HIDE) {BNRouteGuideManager.getInstance().showCustomizedLayer(false);} else if (msg.what == MSG_RESET_NODE) {BNRouteGuideManager.getInstance().resetEndNodeInNavi(new BNRoutePlanNode(120.159643, 30.320937, "浙江树人大学致和园", null, CoordinateType.GCJ02));}};};}}private OnNavigationListener mOnNavigationListener = new OnNavigationListener() {@Override
        public void onNaviGuideEnd() {//退出导航
            finish();}@Override
        public void notifyOtherAction(int actionType, int arg1, int arg2, Object obj) {if (actionType == 0) {//导航到达目的地 自动退出
                Log.i(TAG, "notifyOtherAction actionType = " + actionType + ",导航到达目的地!");}Log.i(TAG, "actionType:" + actionType + "arg1:" + arg1 + "arg2:" + arg2 + "obj:" + obj.toString());}};private final static String RET_COMMON_MODULE = "module.ret";private interface RouteGuideModuleConstants {final static int METHOD_TYPE_ON_KEY_DOWN = 0x01;final static String KEY_TYPE_KEYCODE = "keyCode";final static String KEY_TYPE_EVENT = "event";}
}
(3).GuideHandler
package com.example.fire.BaiduMap;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.text.TextUtils;
import android.util.Log;import com.baidu.navisdk.adapter.BNaviCommonParams;public class GuideHandler {private GuideDialog mEventDialog = null;private static class LazyLoader {private static GuideHandler mInstance = new GuideHandler();}public static GuideHandler getInstance() {return LazyLoader.mInstance;}private GuideHandler() {}public GuideDialog getDialog(Context ctx) {if (mEventDialog == null) {mEventDialog = new GuideDialog(ctx);}return mEventDialog;}public void showDialog() {if (mEventDialog != null) {mEventDialog.setCanceledOnTouchOutside(false);mEventDialog.show();}}public void dismissDialog() {if (mEventDialog != null) {mEventDialog.dismiss();}}public void disposeDialog() {mEventDialog = null;}@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)public void handleNaviEvent(int what, int arg1, int arg2, Bundle bundle) {Log.i("onCommonEventCall", String.format("%d,%d,%d,%s", what, arg1, arg2,(bundle == null ? "" : bundle.toString())));switch (what) {case BNaviCommonParams.MessageType.EVENT_NAVIGATING_STATE_BEGIN:break;case BNaviCommonParams.MessageType.EVENT_NAVIGATING_STATE_END:break;case BNaviCommonParams.MessageType.EVENT_GPS_LOCATED:mEventDialog.updateLocateState(true);break;case BNaviCommonParams.MessageType.EVENT_GPS_DISMISS:mEventDialog.updateLocateState(false);break;case BNaviCommonParams.MessageType.EVENT_ON_YAW_SUCCESS:break;case BNaviCommonParams.MessageType.EVENT_ROAD_TURN_ICON_UPDATE:byte[] byteArray = bundle.getByteArray(BNaviCommonParams.BNGuideKey.ROAD_TURN_ICON);Bitmap map = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);mEventDialog.updateTurnIcon(map);break;case BNaviCommonParams.MessageType.EVENT_ROAD_TURN_DISTANCE_UPDATE:String turndis = bundle.getString(BNaviCommonParams.BNGuideKey.TROAD_TURN_DISTANCE);mEventDialog.updateGoDistanceTx(turndis);mEventDialog.updateAlongMeters(turndis);break;case BNaviCommonParams.MessageType.EVENT_ROAD_NEXT_ROAD_NAME:String nextRoad = bundle.getString(BNaviCommonParams.BNGuideKey.NEXT_ROAD_NAME);if (!TextUtils.isEmpty(nextRoad)) {mEventDialog.updateNextRoad(nextRoad); }break;case BNaviCommonParams.MessageType.EVENT_ROAD_CURRENT_ROAD_NAME:String currentRoad = bundle.getString(BNaviCommonParams.BNGuideKey.CURRENT_ROAD_NAME);if (!TextUtils.isEmpty(currentRoad)) {mEventDialog.updateCurrentRoad(currentRoad);}break;case BNaviCommonParams.MessageType.EVENT_REMAIN_DISTANCE_UPDATE:String remainDisctance = bundle.getString(BNaviCommonParams.BNGuideKey.TOTAL_REMAIN_DISTANCE);mEventDialog.updateRemainDistance(remainDisctance);break;case BNaviCommonParams.MessageType.EVENT_REMAIN_TIME_UPDATE:String remainTime = bundle.getString(BNaviCommonParams.BNGuideKey.TOTAL_REMAIN_TIME);mEventDialog.updateRemainTime(remainTime);break;case BNaviCommonParams.MessageType.EVENT_RASTER_MAP_SHOW:int type = bundle.getInt(BNaviCommonParams.BNEnlargeRoadKey.ENLARGE_TYPE);byte[] arrowByte = bundle.getByteArray(BNaviCommonParams.BNEnlargeRoadKey.ARROW_IMAGE);byte[] bgByte = bundle.getByteArray(BNaviCommonParams.BNEnlargeRoadKey.BACKGROUND_IMAGE);Bitmap arrowMap = BitmapFactory.decodeByteArray(arrowByte, 0, arrowByte.length);Bitmap bgMap = BitmapFactory.decodeByteArray(bgByte, 0, bgByte.length);mEventDialog.onEnlageShow(type, arrowMap, bgMap);break;case BNaviCommonParams.MessageType.EVENT_RASTER_MAP_UPDATE:String remainDistance = bundle.getString(BNaviCommonParams.BNEnlargeRoadKey.REMAIN_DISTANCE);String roadName = bundle.getString(BNaviCommonParams.BNEnlargeRoadKey.ROAD_NAME);int progress = bundle.getInt(BNaviCommonParams.BNEnlargeRoadKey.DRIVE_PROGRESS);break;case BNaviCommonParams.MessageType.EVENT_RASTER_MAP_HIDE:mEventDialog.onEnlargeHide();break;case BNaviCommonParams.MessageType.EVENT_ROUTE_PLAN_SUCCESS:int distance = bundle.getInt(BNaviCommonParams.BNRouteInfoKey.TOTAL_DISTANCE);int time = bundle.getInt(BNaviCommonParams.BNRouteInfoKey.TOTAL_TIME);int tollFees = bundle.getInt(BNaviCommonParams.BNRouteInfoKey.TOLL_FESS);int lightCounts = bundle.getInt(BNaviCommonParams.BNRouteInfoKey.TRAFFIC_LIGHT);int gasMoney = bundle.getInt(BNaviCommonParams.BNRouteInfoKey.GAS_MONEY);break;case BNaviCommonParams.MessageType.EVENT_SERVICE_AREA_UPDATE:String firstName = bundle.getString(BNaviCommonParams.BNGuideKey.FIRST_SERVICE_NAME);int firstDistance = bundle.getInt(BNaviCommonParams.BNGuideKey.FIRST_SERVICE_TIME);String secondeName = bundle.getString(BNaviCommonParams.BNGuideKey.SECOND_SERVICE_NAME);int secondeDistance = bundle.getInt(BNaviCommonParams.BNGuideKey.SECOND_SERVICE_TIME);break;case BNaviCommonParams.MessageType.EVENT_CURRENT_SPEED:mEventDialog.updateCurrentSpeed(String.valueOf(arg1));break;case BNaviCommonParams.MessageType.EVENT_ALONG_UPDATE:boolean isAlong = bundle.getBoolean(BNaviCommonParams.BNGuideKey.IS_ALONG);break;case BNaviCommonParams.MessageType.EVENT_CURRENT_MILES:int miles = arg1;default :break;}}
}
(4).GuideDialog
package com.example.fire.BaiduMap;import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import com.example.fire.R;public class GuideDialog extends Dialog {private Context mContext;private LinearLayout mRouteGuideLl;private TextView mRemainTimeTx;private TextView mRemainDistanceTx; // 剩余总距离
    private TextView mCurrentSpeedTx;private ImageView mTurnImage;private TextView mGoDistanceTx;private TextView mNextRoadTx;private TextView mAlongMeters;private TextView mCurrentRoadTx;private ImageView mEnlargeImg;private TextView mLocateTx;public GuideDialog(Context context) {super(context);mContext = context;}@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);  LayoutInflater infalter = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View layout = infalter.inflate(R.layout.activity_guidedialog, null);setContentView(layout);Window window = this.getWindow();WindowManager.LayoutParams lp = window.getAttributes();lp.width = 700;lp.height = 700;window.setAttributes(lp);window.setGravity(Gravity.BOTTOM | Gravity.LEFT);mRouteGuideLl = (LinearLayout) layout.findViewById(R.id.route_guide_ll);mRemainTimeTx = (TextView) layout.findViewById(R.id.remain_time_tx);mRemainDistanceTx = (TextView) layout.findViewById(R.id.remain_distance_tx);mCurrentSpeedTx = (TextView) layout.findViewById(R.id.current_speed_tx);mTurnImage = (ImageView) layout.findViewById(R.id.turn_img);mGoDistanceTx = (TextView) layout.findViewById(R.id.remain_distance);mNextRoadTx = (TextView) layout.findViewById(R.id.next_road_tx);mAlongMeters = (TextView) layout.findViewById(R.id.along_meters_tx);mCurrentRoadTx = (TextView) layout.findViewById(R.id.current_road_tx);mEnlargeImg = (ImageView) layout.findViewById(R.id.enlarge_view_img);mLocateTx = (TextView) layout.findViewById(R.id.loacte_tx);}public void updateLocateState(boolean hasLocate) {if (mLocateTx != null) {mLocateTx.setText(hasLocate ? "定位成功" : "定位中");}}@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)public void onEnlageShow(int type, Bitmap arrowBmp, Bitmap bgBmp) {if (mEnlargeImg != null) {mEnlargeImg.setImageBitmap(arrowBmp);mEnlargeImg.setBackground(new BitmapDrawable(bgBmp));mEnlargeImg.setVisibility(View.VISIBLE);}if (mRouteGuideLl != null) {mRouteGuideLl.setVisibility(View.GONE);}}public void onEnlargeHide() {if (mEnlargeImg != null) {mEnlargeImg.setVisibility(View.GONE);}if (mRouteGuideLl != null) {mRouteGuideLl.setVisibility(View.VISIBLE);}}public void updateTurnIcon(Bitmap map) {if (mTurnImage != null) {mTurnImage.setImageBitmap(map);}}public void updateGoDistanceTx(String tx) {if (mGoDistanceTx != null) {mGoDistanceTx.setText(tx);}}public void updateNextRoad(String nextRoad) {if (mNextRoadTx != null) {mNextRoadTx.setText(nextRoad);}}public void updateAlongMeters(String alongMeters) {if (mAlongMeters != null) {mAlongMeters.setText(alongMeters);}}public void updateCurrentRoad(String currentRoad) {if (mCurrentRoadTx != null) {mCurrentRoadTx.setText(currentRoad);}}public void updateCurrentSpeed(String speed) {if (mCurrentSpeedTx != null) {mCurrentSpeedTx.setText(speed);}}public void updateRemainDistance(String distance) {if (mRemainDistanceTx != null) {mRemainDistanceTx.setText(distance);}}public void updateRemainTime(String time) {if (mRemainTimeTx != null) {mRemainTimeTx.setText(time);}}
}
(5).MyOrientationListener 方向感应
package com.example.mymap;import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;public class MyOrientationListener implements SensorEventListener{private SensorManager mSensorManager;private Sensor mSensor;private Context mContext;private float lastX;private OnOrientationListener mOnOrientationListener;public MyOrientationListener(Context context){this.mContext=context;}public void start(){mSensorManager= (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);if(mSensorManager!= null){//获得方向传感器
            mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);}//判断是否有方向传感器
        if(mSensor!=null){//注册监听器
            mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI);}}public void stop(){mSensorManager.unregisterListener(this);}//方向改变
    @Override
    public void onSensorChanged(SensorEvent event) {if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){float x=event.values[SensorManager.DATA_X];if(Math.abs(x-lastX)>1.0){if(mOnOrientationListener!=null){mOnOrientationListener.onOrientationChanged(x);}}lastX=x;}}public void setOnOrientationListener(OnOrientationListener listener){mOnOrientationListener=listener;}public interface OnOrientationListener{void onOrientationChanged(float x);}@Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
}

这里附上我自己的demo 点击打开链接

(导航如果没有声音是因为没有申请tts,在这个链接里面申请百度语音)

百度地图——导航(地理编码输入地址获取经纬度)相关推荐

  1. 高德地图api 地理编码(地址-->坐标)geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了 问题解决

    问题 高德地图api 地理编码(地址-->坐标)功能,通过输入 地址信息 得到 经纬度信息.geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了. 官方示例测试, ...

  2. 技巧 | 在R语言中使用高德地图的API进行地理/逆地理编码(地址与经纬度的相互转换)...

    高德地图和百度地图都提供了坐标拾取系统,通过坐标查询或坐标反查操作可以查询一个地址对应的经纬度或经纬度对应的地址名称.但是,手动查询的方式效率很低,也不能进行批量查询. 本篇就来介绍在R语言中调用高德 ...

  3. 百度地图 雷达/地理编码 功能使用

    最近一直在优化软件的bug.. 然后后面可能又要大改.. 所以趁这两天有时间赶紧码两篇博文..=.= 地图功能可以说是现在APP中最常用的功能- 呃.. 之一..  不管是电商,社交,o2o,b2c, ...

  4. 微信小程序之百度地图之定位AND输入地址定位AND输入经纬度定位

    1.bmap-wx.min.js 例子链接 2.ak 百度地图平台 ak申请教程 3.getLocation.js // 引用百度地图微信小程序JSAPI模块 var bmap = require(' ...

  5. 获取界面url_PHP调用百度地图接口,根据IP地址获取地区

    1.登录百度地图开放平台 http://lbsyun.baidu.com/ 2.选择微信登录 3.点击控制台,看下一下界面,点击应用管理 4.创建应用,我的是网站应用,所以选择浏览器端 5.里边所有字 ...

  6. 百度地图爬取城市经纬度:KeyError: ‘result——‘对于百度地图API地理编码返回值result为空的问题

    发现问题背景: 由于前几天参加了一个数据分析比赛,要对其中13多万的数据中的城市进行分布可视化,进而分析,所以要爬取各个城市的经纬度,就采用了百度地图的API来爬取. 先上代码: import jso ...

  7. 调用腾讯地图 输入地址获取经纬度

    目录 申请腾讯地图的key 具体代码(两种方式) 使用fastjson(懒得构造json映射的对象) 使用jackson(懒得构造对应的json映射对象) 使用jackson(需要构造对应的json映 ...

  8. (百度地图)输入地址显示经纬度并且在地图上显示具体位置

    输入地址显示经纬度并且在地图上显示具体位置 博主比较懒,不过多描述,直接上代码,通俗易懂,哈哈哈哈哈哈 引入百度地图<script type="text/javascript" ...

  9. 百度地图根据地理坐标转换经纬度

    百度地图根据地理坐标转换经纬度 这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方便的.只要简单几步注册下,就可以 ...

最新文章

  1. 洛谷P1433 吃奶酪【dfs】【剪枝】
  2. 【Android 逆向】Android 中常用的 so 动态库 ( libdvm.so | libart.so | libandroid_runtime.so | libandroidfw.so )
  3. 2019.04.09 电商23 用户未登录操作数据库
  4. 计算机的好处和坏处的英语作文,电脑的利弊英语作文
  5. 受迫阻尼 matlab 仿真,MATLAB系统仿真报告——有阻尼受迫振动系统
  6. 都说“先卖人,后卖货”,或者说要想卖货,先卖人
  7. 查找算法之三 插值查找(C++版本)
  8. oracle判断字符串以什么开头_oracle存储过程 判断字符串开头
  9. 黑客测试漏洞被逮捕 白帽的正确姿势是什么
  10. 听说你在做斗鱼APP?
  11. 基因测序、大数据分析——精准治癌正在成为现实
  12. 教程:微信公众号的链接如何提取出来?非常简单!
  13. PS如何批量处理图片尺寸大小?免费哟
  14. (13.1.3.10)PMBOK之三:十大知识领域之相关方管理
  15. 解决报错dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
  16. UML图有哪些类型?
  17. axios的get请求禁止缓存
  18. FREERTOS必备知识-喂狗-死机
  19. SAP 教程之 05 如何创建 IDOC 基本类型文档?
  20. 机器学习笔记之深度玻尔兹曼机(一)玻尔兹曼机系列整体介绍

热门文章

  1. 简明Python教程学习笔记_2_函数
  2. LRP架构Linux路由器/防火墙
  3. 腾讯云轻量应用服务器-建站保姆级教学
  4. 好用的Latex表格转换工具---Excel2Latex
  5. 马化腾与王健林一起逛街,醉翁之意在新零售
  6. 杨老师数据结构栈笔记
  7. 硅酸钠镁锂_下一代笔记本电脑材料:铝合金vs.镁合金vs.碳纤维
  8. 海辉软件方案往年9月登陆纳斯达克 融资1亿美元
  9. php编网页版计算器,php实现简单的网页版计算器功能的方法
  10. 启动idea报Failed to load JVM DLL..jre\bin\jvm.dll,If you already have 32-bit JDK installed