前言:

首先使用检索功能获取目的地的经纬度作为终点,使用定位功能获取当前位置的经纬度作为起点。然后将起始点传递给导航模块就可以了。

效果图:

使用方法:

在libs目录下添加SDK:SDK下载地址

在配置文件中,我们需要配置权限,定位service,key。根据高德地图官方实现;
Activity主要代码

点击事件(xx,yy为当前定位;后面为导航目的地的xx,yy)

   try {//获取AlarmReceiver类保存的xx,yySharedPreferences sharedatas = getActivity().getSharedPreferences("data", 0);String xx = sharedatas.getString("xx", null);String yy = sharedatas.getString("yy", null);System.out.println("===获取=xx=="+xx+"==获取=yy=="+yy);if(!xx.equals("")&&!yy.equals("")){toNavigation(getActivity(),xx,yy,"39.113656","116.401063");}} catch (Exception e) {}

判断是否安装高德地图,实现调用sdk实现导航

   public static void toNavigation(Context context, String xx ,String yy, String jxx ,String jyy) {//1.判断用户手机是否安装高德地图APPboolean isInstalled = isPkgInstalled("com.autonavi.minimap", context);//2.首选使用高德地图APP完成导航if (isInstalled) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("androidamap://navi?");try {//填写应用名称stringBuilder.append("sourceApplication=" + URLEncoder.encode("测试", "utf-8"));//导航目的地stringBuilder.append("&poiname=" + URLEncoder.encode("测试", "utf-8"));//目的地经纬度stringBuilder.append("&lat=" + jxx);stringBuilder.append("&lon=" + jyy);stringBuilder.append("&dev=1&style=2");} catch (Exception e) {e.printStackTrace();}//调用高德地图APPIntent intent = new Intent();intent.setPackage("com.autonavi.minimap");intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setAction(Intent.ACTION_VIEW);//传递组装的数据intent.setData(Uri.parse(stringBuilder.toString()));context.startActivity(intent);} else {//使用高德地图导航sdk完成导航System.out.println("====未安装地图=>>>>");Intent intent = new Intent(context, GPSNaviActivity.class);intent.putExtra("sj",yy);intent.putExtra("sw", xx);intent.putExtra("ej", jyy);intent.putExtra("ew", jxx);context.startActivity(intent);}}private static boolean isPkgInstalled(String packagename, Context context) {PackageManager pm = context.getPackageManager();try {pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);return true;} catch (PackageManager.NameNotFoundException e) {return false;}}

GPSNaviActivity:

package ****.activity;import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;import *.R;/*** 导航* */public class GPSNaviActivity extends BaseActivity {// 继承的是baseactivityprivate double sj;private double sw;private double ej;private double ew;private String ssj;private String ssw;private String sej;private String sew;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.e("导航", "进入导航界面");Intent intent = getIntent();/* 11/17 记 再次重复低级错误 此处intent接收了未传输的数据导致崩溃 *//* 经纬度 纬度在前 */ssj = intent.getStringExtra("sj");sj = Double.parseDouble(ssj);ssw = intent.getStringExtra("sw");sw = Double.parseDouble(ssw);sej = intent.getStringExtra("ej");ej = Double.parseDouble(sej);sew = intent.getStringExtra("ew");ew = Double.parseDouble(sew);Log.e("导航", "获取数据完毕");setContentView(R.layout.activity_basic_navi);mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);mAMapNaviView.onCreate(savedInstanceState);mAMapNaviView.setAMapNaviViewListener(this);}@Overridepublic void onInitNaviSuccess() {super.onInitNaviSuccess();/*** 方法: int strategy=mAMapNavi.strategyConvert(congestion,* avoidhightspeed, cost, hightspeed, multipleroute); 参数:** @congestion 躲避拥堵* @avoidhightspeed 不走高速* @cost 避免收费* @hightspeed 高速优先* @multipleroute 多路径**                说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,*                如果为true则此策略会算出多条路线。 注意: 不走高速与高速优先不能同时为true*                高速优先与避免收费不能同时为true*/// 重置起点this.sList.clear();this.mStartLatlng = new NaviLatLng(sw, sj);this.sList.add(mStartLatlng);// 重置了终点this.eList.clear();this.mEndLatlng = new NaviLatLng(ew, ej);this.eList.add(mEndLatlng);int strategy = 0;try {// 再次强调,最后一个参数为true时代表多路径,否则代表单路径strategy = mAMapNavi.strategyConvert(true, false, false, false,false);} catch (Exception e) {e.printStackTrace();}mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy);//驾车//        mAMapNavi.calculateRideRoute(new  NaviLatLng(sw, sj), new NaviLatLng(ew, ej));//骑行}@Overridepublic void onCalculateRouteSuccess() {super.onCalculateRouteSuccess();mAMapNavi.startNavi(NaviType.GPS);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {new AlertDialog.Builder(this).setTitle("提示").setMessage("确定退出导航?").setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {finish();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}}).show();return super.onKeyDown(keyCode, event);}}

BaseActivity:

package *.activity;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.Toast;import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.AMapNaviListener;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.AMapNaviViewListener;
import com.amap.api.navi.model.AMapLaneInfo;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviCross;
import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AMapServiceAreaInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.NaviLatLng;
import com.autonavi.tbt.TrafficFacilityInfo;import java.util.ArrayList;
import java.util.List;public class BaseActivity extends Activity implements AMapNaviListener,AMapNaviViewListener {protected AMapNaviView mAMapNaviView;protected AMapNavi mAMapNavi;
//    protected TTSController mTtsManager;protected NaviLatLng mEndLatlng = new NaviLatLng(40.084894, 116.603039);protected NaviLatLng mStartLatlng = new NaviLatLng(39.825934, 116.342972);protected final List<NaviLatLng> sList = new ArrayList<NaviLatLng>();protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();protected List<NaviLatLng> mWayPointList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);//实例化语音引擎
//        mTtsManager = TTSController.getInstance(getApplicationContext());
//        mTtsManager.init();//mAMapNavi = AMapNavi.getInstance(getApplicationContext());mAMapNavi.addAMapNaviListener(this);
//        mAMapNavi.addAMapNaviListener(mTtsManager);//设置模拟导航的行车速度
//        mAMapNavi.setEmulatorNaviSpeed(75);
//        sList.add(mStartLatlng);
//        eList.add(mEndLatlng);}@Overrideprotected void onResume() {super.onResume();mAMapNaviView.onResume();}@Overrideprotected void onPause() {super.onPause();mAMapNaviView.onPause();//        仅仅是停止你当前在说的这句话,一会到新的路口还是会再说的
//        mTtsManager.stopSpeaking();//
//        停止导航之后,会触及底层stop,然后就不会再有回调了,但是讯飞当前还是没有说完的半句话还是会说完
//        mAMapNavi.stopNavi();}@Overrideprotected void onDestroy() {super.onDestroy();mAMapNaviView.onDestroy();//since 1.6.0 不再在naviview destroy的时候自动执行AMapNavi.stopNavi();请自行执行mAMapNavi.stopNavi();mAMapNavi.destroy();System.out.println("====quxiao");
//        mTtsManager.destroy();}@Overridepublic void onInitNaviFailure() {Toast.makeText(this, "init navi Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onInitNaviSuccess() {//初始化成功}@Overridepublic void onStartNavi(int type) {//开始导航回调}@Overridepublic void onTrafficStatusUpdate() {//}@Overridepublic void onLocationChange(AMapNaviLocation location) {//当前位置回调}@Overridepublic void onGetNavigationText(int type, String text) {//播报类型和播报文字回调}@Overridepublic void onEndEmulatorNavi() {//结束模拟导航}@Overridepublic void onArriveDestination() {//到达目的地}@Overridepublic void onCalculateRouteSuccess() {//路线计算成功}@Overridepublic void onCalculateRouteFailure(int errorInfo) {//路线计算失败Log.i("dm", "errorInfo=" + errorInfo);Toast.makeText(this, "错误信息:" + errorInfo, Toast.LENGTH_SHORT).show();}@Overridepublic void onReCalculateRouteForYaw() {//偏航后重新计算路线回调}@Overridepublic void onReCalculateRouteForTrafficJam() {//拥堵后重新计算路线回调}@Overridepublic void onArrivedWayPoint(int wayID) {//到达途径点}@Overridepublic void onGpsOpenStatus(boolean enabled) {//GPS开关状态回调}@Overridepublic void onNaviSetting() {//底部导航设置点击回调}@Overridepublic void onNaviMapMode(int isLock) {//地图的模式,锁屏或锁车}@Overridepublic void onNaviCancel() {finish();}@Overridepublic void onNaviTurnClick() {//转弯view的点击回调}@Overridepublic void onNextRoadClick() {//下一个道路View点击回调}@Overridepublic void onScanViewButtonClick() {//全览按钮点击回调}@Deprecated@Overridepublic void onNaviInfoUpdated(AMapNaviInfo naviInfo) {//过时}@Overridepublic void updateCameraInfo(AMapNaviCameraInfo[] aMapCameraInfos) {}@Overridepublic void onServiceAreaUpdate(AMapServiceAreaInfo[] amapServiceAreaInfos) {}@Overridepublic void onNaviInfoUpdate(NaviInfo naviinfo) {//导航过程中的信息更新,请看NaviInfo的具体说明}@Overridepublic void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {//已过时}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {//已过时}@Overridepublic void showCross(AMapNaviCross aMapNaviCross) {//显示转弯回调}@Overridepublic void hideCross() {//隐藏转弯回调}@Overridepublic void showLaneInfo(AMapLaneInfo[] laneInfos, byte[] laneBackgroundInfo, byte[] laneRecommendedInfo) {//显示车道信息}@Overridepublic void hideLaneInfo() {//隐藏车道信息}@Overridepublic void onCalculateMultipleRoutesSuccess(int[] ints) {//多路径算路成功回调}@Overridepublic void notifyParallelRoad(int i) {if (i == 0) {Toast.makeText(this, "当前在主辅路过渡", Toast.LENGTH_SHORT).show();Log.d("wlx", "当前在主辅路过渡");return;}if (i == 1) {Toast.makeText(this, "当前在主路", Toast.LENGTH_SHORT).show();Log.d("wlx", "当前在主路");return;}if (i == 2) {Toast.makeText(this, "当前在辅路", Toast.LENGTH_SHORT).show();Log.d("wlx", "当前在辅路");}}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {//更新交通设施信息}@Overridepublic void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {//更新巡航模式的统计信息}@Overridepublic void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {//更新巡航模式的拥堵信息}@Overridepublic void onPlayRing(int i) {}@Overridepublic void onLockMap(boolean isLock) {//锁地图状态发生变化时回调}@Overridepublic void onNaviViewLoaded() {Log.d("wlx", "导航页面加载成功");Log.d("wlx", "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑");}@Overridepublic boolean onNaviBackClick() {return false;}}

TTSController:(语音播报讯飞,需要在讯飞官网申请自己的key)

package *.util;import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;import com.amap.api.navi.MyNaviListener;
import com.amap.api.navi.model.AMapLaneInfo;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviCross;
import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AMapServiceAreaInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.AmapCarLocation;
import com.amap.api.navi.model.NaviInfo;
import com.autonavi.tbt.TrafficFacilityInfo;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;import java.util.LinkedList;/*** 当前DEMO的播报方式是队列模式。其原理就是依次将需要播报的语音放入链表中,播报过程是从头开始依次往后播报。* <p>* 导航SDK原则上是不提供语音播报模块的,如果您觉得此种播报方式不能满足你的需求,请自行优化或改进。*/
public class TTSController implements MyNaviListener {/*** 请替换您自己申请的ID。*/private final String appId = "58edd6d3";public static TTSController ttsManager;private Context mContext;private SpeechSynthesizer mTts;private boolean isPlaying = false;private LinkedList<String> wordList = new LinkedList();private final int TTS_PLAY = 1;private final int CHECK_TTS_PLAY = 2;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case TTS_PLAY:synchronized (mTts) {if (!isPlaying && mTts != null && wordList.size() > 0) {isPlaying = true;String playtts = wordList.removeFirst();if (mTts == null) {createSynthesizer();}mTts.startSpeaking(playtts, new SynthesizerListener() {@Overridepublic void onCompleted(SpeechError arg0) {isPlaying = false;handler.obtainMessage(1).sendToTarget();}@Overridepublic void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {}@Overridepublic void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {// 合成进度isPlaying = true;}@Overridepublic void onSpeakBegin() {//开始播放isPlaying = true;}@Overridepublic void onSpeakPaused() {}@Overridepublic void onSpeakProgress(int arg0, int arg1, int arg2) {//播放进度isPlaying = true;}@Overridepublic void onSpeakResumed() {//继续播放isPlaying = true;}});}}break;case CHECK_TTS_PLAY:if (!isPlaying) {handler.obtainMessage(1).sendToTarget();}break;}}};private TTSController(Context context) {mContext = context.getApplicationContext();SpeechUtility.createUtility(mContext, SpeechConstant.APPID + "=" + appId);if (mTts == null) {createSynthesizer();}}private void createSynthesizer() {mTts = SpeechSynthesizer.createSynthesizer(mContext,new InitListener() {@Overridepublic void onInit(int errorcode) {if (ErrorCode.SUCCESS == errorcode) {} else {Toast.makeText(mContext, "语音合成初始化失败!", Toast.LENGTH_SHORT);}}});}public void init() {//设置发音人mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置语速,值范围:[0, 100],默认值:50mTts.setParameter(SpeechConstant.SPEED, "55");//设置音量mTts.setParameter(SpeechConstant.VOLUME, "tts_volume");//设置语调mTts.setParameter(SpeechConstant.PITCH, "tts_pitch");}public static TTSController getInstance(Context context) {if (ttsManager == null) {ttsManager = new TTSController(context);}return ttsManager;}public void stopSpeaking() {if (wordList != null) {wordList.clear();}if (mTts != null) {mTts.stopSpeaking();}isPlaying = false;}public void destroy() {if (wordList != null) {wordList.clear();}if (mTts != null) {mTts.destroy();}}/***************************************************************************** 以下都是导航相关接口****************************************************************************/@Overridepublic void onArriveDestination() {}@Overridepublic void onArrivedWayPoint(int arg0) {}@Overridepublic void onCalculateRouteFailure(int arg0) {if (wordList != null)wordList.addLast("路线规划失败");}@Overridepublic void onCalculateRouteSuccess() {}@Overridepublic void onEndEmulatorNavi() {}@Overridepublic void onGetNavigationText(int arg0, String arg1) {if (wordList != null)wordList.addLast(arg1);handler.obtainMessage(CHECK_TTS_PLAY).sendToTarget();}@Overridepublic void onInitNaviFailure() {}@Overridepublic void onInitNaviSuccess() {}@Overridepublic void onLocationChange(AMapNaviLocation arg0) {}@Overridepublic void onReCalculateRouteForTrafficJam() {if (wordList != null)wordList.addLast("前方路线拥堵,路线重新规划");}@Overridepublic void onReCalculateRouteForYaw() {if (wordList != null)wordList.addLast("路线重新规划");}@Overridepublic void onStartNavi(int arg0) {}@Overridepublic void onTrafficStatusUpdate() {}@Overridepublic void onGpsOpenStatus(boolean enabled) {}@Overridepublic void onNaviInfoUpdate(NaviInfo naviinfo) {}@Overridepublic void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {}@Overridepublic void updateCameraInfo(AMapNaviCameraInfo[] infoArray) {}@Overridepublic void onServiceAreaUpdate(AMapServiceAreaInfo[] infoArray) {}@Overridepublic void showCross(AMapNaviCross aMapNaviCross) {}@Overridepublic void hideCross() {}@Overridepublic void showLaneInfo(AMapLaneInfo[] laneInfos, byte[] laneBackgroundInfo, byte[] laneRecommendedInfo) {}@Overridepublic void hideLaneInfo() {}@Overridepublic void onCalculateMultipleRoutesSuccess(int[] routeIds) {}@Overridepublic void notifyParallelRoad(int parallelRoadType) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {}@Overridepublic void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] infos) {}@Overridepublic void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {}@Overridepublic void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {}@Overridepublic void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {}@Overridepublic void onPlayRing(int type) {}@Overridepublic void carProjectionChange(AmapCarLocation mCarProjectionChange) {}}

activity_basic_navi.xml主要代码
<?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.AMapNaviViewandroid:id="@+id/navi_view"android:layout_width="match_parent"android:layout_height="match_parent" />
</RelativeLayout>

====================附加=============

 //保存的xx,yySharedPreferences.Editor sharedata = mcontext.getSharedPreferences("data", 0).edit();sharedata.putString("xx",xx);sharedata.putString("yy",yy);
 //获保存的xx,yySharedPreferences sharedatas = getActivity().getSharedPreferences("data", 0);String xx = sharedatas.getString("xx", null);String yy = sharedatas.getString("yy", null);System.out.println("===获取=xx=="+xx+"==获取=yy=="+yy);

[Android]实现高德地图导航相关推荐

  1. Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航

    主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...

  2. Android调用高德地图直接导航的简单实例

    在学校最近做了一个小APP,脑子笨怕忘,写个博客记录一下. 简单来说就是保存地点,然后单击直接打开高德地图APP并从当前所在地导航到保存的地点.因为是小型学习用的,所以保存地点采用了Android本地 ...

  3. 计算机设计基于Android实现高德地图校内导航出行app【项目源码+简要论文说明】

    基于Android实现高德地图校内导航出行app项目演示 如今手机的发展非常迅速,手机越来越成为人们不可缺少的东西.手机从最初功能简单的功能机,发展到如今几乎无所不能的智能机,满足了人们的日常需求,手 ...

  4. 基于Android实现高德地图校内导航出行app项目演示【项目源码+简要论文说明】分享

    基于Android实现高德地图校内导航出行app项目演示 如今手机的发展非常迅速,手机越来越成为人们不可缺少的东西.手机从最初功能简单的功能机,发展到如今几乎无所不能的智能机,满足了人们的日常需求,手 ...

  5. Android调用高德地图app语音导航

    直接调用高德地图app进行导航 首先,要先进入高德开放平台,注册登录以后,创建自己的APP,然后会生成appkey 高德开放平台网址: http://lbs.amap.com/ 然后下载jar包导入项 ...

  6. Android实现高德地图轨迹回放

    Android实现高德地图轨迹回放 写在前面 准备 官方文档解读 创建应用: 地图api引入: 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 ...

  7. react-native调起第三方高德地图导航URL解释

    react-native调起第三方高德地图导航URL解释 做react-native地图应用时,主要使用的是高德地图,所以在导航上也准备调起高德地图应用来完成导航功能,在高德地图API官网并没有发现高 ...

  8. android仿高德地图透明黑字,Android 仿高德地图可拉伸的BottomSheet

    原标题:Android 仿高德地图可拉伸的BottomSheet 2018安卓巴士开发者大会-上海站 你一直期待的安卓技术盛宴即将登场! 前言 最近项目中需要用到高德地图搜索结果后的结果展示的可拉伸控 ...

  9. Android使用高德地图api实现基础定位

    Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...

  10. 【Android】高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法

    [Android]高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法 来源: https://blog.csdn.net/weixin_39370093/article/deta ...

最新文章

  1. spring中的RowMapper
  2. Python 创建随机名字的文件夹/文件
  3. SpirngBoot整合MyBatis出现“SAXParseException”和“文件提前结束”异常解决办法
  4. HTML5 nav元素
  5. 轮播图实现html,html、css、js实现轮播图
  6. Spring Framework 4.2 中的新功能和增强功能
  7. 如何对第一个值相同的列表中的元组求和
  8. 记一次授权的渗透测试
  9. 图像处理之LSB替换隐写算法的实现
  10. JS高级---函数中的this的指向,函数的不同调用方式
  11. 数据库系统—数据查询
  12. kubernetes系列之一:Kubernetes如何利用iptables对外暴露service
  13. Java泛型比较大小
  14. android 录像限制时间,视频拍摄能不能限制拍摄时间和微信小视频一样
  15. PXE+Kickstart无人值守安装系统
  16. 基于Arduino的魔兽世界挂机装置
  17. 带宽、流量限制软件之Negies中文使用教程
  18. BLE-SDP服务发现协议
  19. 2016年十大商业领袖:敢于冒险,善于坚持,勇于自省
  20. 电磁继电器计算机结构图,交流固态继电器的结构与工作方式

热门文章

  1. python获取上周一的日期
  2. PHP获取上周一,获取指定日期的上周日期,上周一
  3. 红米k40pro一键root教程
  4. 《云原生的本手、妙手和俗手》——2022全国新高考I卷作文
  5. brew mysql_brew mysql指定版本
  6. 《故障排除》——VMware Horizon agent:failed to install vmwusm driveer| winerror code 3758096967
  7. 服务器ip每天自动更换,IP地址经常更换,自动获取的IP上不了网怎么办?
  8. Android封装含有通用标题栏的基类BaseActivity
  9. SQL学习笔记(06)_SELECT INTO
  10. Shell If Else语句 数学运算 与 逻辑运算