最近项目用到高德地图,因此来写一篇文章理一下高德的使用步骤方法,希望对大家有用!
##1.注册+配置
废话不多说,要使用高德地图首先要去高德开放平台注册成为开发者(http://lbs.amap.com/), 注册成为高德开发者需要分三步:第一步,注册高德开发者;第二步,去控制台创建应用;第三步,获取Key(见下图,注意看命名规范,SHA1值得获取网上有!很简单)。

ok之后,到官网下载高德SDK(http://lbs.amap.com/api/android-sdk/download/), 我这边全部都下载了,解压后,得到一个 AMap3DMap_xxxxx(版本号).jar 文件和一个 armeabi 文件夹,之后,
(一)将jar包拷贝到你项目的libs目录下.
(二)在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可.
见图(也可以参考高德官网的第二种配置方式):

别忘了添加File依赖:
好了,前期准备弄好,终于可以上代码了.
##2.地图
1.在清单文件中配置key:

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

2.配置权限(把下面这堆配置进去,再也不用担心bug出在权限问题上了):

<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

3.在布局文件中加载地图控件:

<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>

4.你只要在onCreate()中添加如下几行代码,高德地图就显示出来了!

MapView mapView = (MapView) findViewById(R.id.map);//找到地图控件
mapView.onCreate(savedInstanceState);// 此方法必须重写
AMap aMap = mapView.getMap();//得到一个map对象

是不是很简单!再此我还是想说下,高德地图的软实力和百度地图是有差距的,但是高德的开发文档要比百度很人性化!
接下来我们来使用定位功能在地图上添加点标记玩玩.
##3.定位+添加标记
第一种方式(基础,可参考官网,链接在此:http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation/):

//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//初始化AMapLocationClientOption对象
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置定位回调监听
mLocationClient.setLocationListener(this);
//获取一次定位结果
mLocationOption.setOnceLocation(true);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();

之后在监听器的回调方法内解析AMapLocation对象,里面包含地址,省市县街道,地区编码,城市编码等等等,可以在此添加标记,定位当前位置,你问我如何把标记固定在屏幕中央?也在这里面:

//----------------------这是位置改变监听------------------------------------
@Override
public void onLocationChanged(AMapLocation aMapLocation) {        if (aMapLocation != null) {            if (aMapLocation.getErrorCode() == 0) {                //可在其中解析amapLocation获取相应内容。                         LatLng latLng = new LatLng(aMapLocation.getLatitude(),       aMapLocation.getLongitude());//取出经纬度               //添加Marker显示定位位置                if (locationMarker == null) {                    //如果是空的添加一个新的,icon方法就是设置定位图标,可以自定义                    locationMarker = aMap.addMarker(new MarkerOptions()                           .position(latLng).snippet("最快1分钟到达").draggable(true).setFlat(true));                    locationMarker.showInfoWindow();//主动显示indowindow                    aMap.addText(new TextOptions().position(latLng).text(aMapLocation.getAddress()));                    //固定标签在屏幕中央                    locationMarker.setPositionByPixels(mMapView.getWidth() / 2,mMapView.getHeight() / 2);                 } else {                   //已经添加过了,修改位置即可                    locationMarker.setPosition(latLng);                }                //然后可以移动到定位点,使用animateCamera就有动画效果                aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));//参数提示:1.经纬度 2.缩放级别                        }else {                          //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。                Log.e("AmapError","location Error, ErrCode:" +aMapLocation.getErrorCode() + ", errInfo:"+ aMapLocation.getErrorInfo());            }       }
}

第二种方式,实现OnMapLoadedListener,在回调方法中首先添加一个标记在地图中央,之后封装一个方法,开启单次定位即可:

aMap.setOnMapLoadedListener(this);
//----------------------OnMapLoaded 当地图加载完成时回调此方法------------------------------------------    @Overridepublic void onMapLoaded() {MarkerOptions markerOptions = new MarkerOptions();        markerOptions.setFlat(true);markerOptions.anchor(0.5f, 0.5f);            markerOptions.position(new LatLng(0, 0));        markerOptions.snippet("最快1分钟到达").draggable(true).setFlat(true);        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(),                                R.drawable.icon_loaction_start)));mPositionMark = aMap.addMarker(markerOptions);mPositionMark.showInfoWindow();//主动显示indowindowmPositionMark.setPositionByPixels(mMapView.getWidth() / 2,mMapView.getHeight() / 2);mLocationTask.startSingleLocate();    }

封装的单次定位方法在此,很简单:

//开启单次定位
public void startSingleLocate() {AMapLocationClientOption option=new AMapLocationClientOption();option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);option.setOnceLocation(true);mLocationClient.setLocationOption(option);mLocationClient.startLocation();
}

是时候贴张效果图图了:


关于怎么让按钮悬浮在地图上?也很简单啊

<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayout android:layout_width="match_parent"android:layout_height="match_parent"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"></com.amap.api.maps.MapView><!--导航栏 --><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentStart="true"android:layout_alignParentTop="true"android:orientation="horizontal"><ImageViewandroid:id="@+id/menu"android:layout_width="50dp"android:layout_height="wrap_content"android:clickable="true"android:src="@mipmap/hanbao"/><ImageViewandroid:visibility="gone"android:id="@+id/btn_back"android:layout_width="50dp"android:layout_height="wrap_content"android:src="@drawable/btn_back"/><Buttonandroid:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:gravity="center"android:text="打车/顺风车"/></RelativeLayout><ImageView android:id="@+id/iv_location"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginRight="16dp"android:layout_marginTop="400dp"android:layout_above="@+id/fromto_container"android:src="@mipmap/btn_location"/></RelativeLayout>
</FrameLayout>

##4.地理编码+逆地理编码
下面来说一下地理编码(地址转坐标)/逆地理编码(坐标转地址)功能,依然很简单,再次提一下高德人性化的文档!
地址转坐标实现步骤:

//构造 GeocodeSearch 对象,并设置监听。
geocodeSearch = new GeocodeSearch(this);
geocodeSearch.setOnGeocodeSearchListener(this);
//通过GeocodeQuery设置查询参数,调用getFromLocationNameAsyn(GeocodeQuery geocodeQuery) 方法发起请求。
//address表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode都ok
GeocodeQuery query = newGeocodeQuery(address, "010");
geocoderSearch.getFromLocationNameAsyn(query);

坐标转地址实现步骤:

geocoderSearch = new GeocodeSearch(this);
geocoderSearch.setOnGeocodeSearchListener(this);//和上面一样
// 第一个参数表示一个Latlng(经纬度),第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
RegeocodeQuery query = newRegeocodeQuery(latLonPoint, 200,GeocodeSearch.AMAP);
geocoderSearch.getFromLocationAsyn(query);

之后再回调方法中解析即可:


//------------------------坐标转地址/坐标转地址的监听回调-------------------------
//result里面有你想要的结果.@Overridepublic void onRegeocodeSearched(RegeocodeResult result, int rCode) {result.getGeocodeAddressList().get(0).getLatLonPoint();}@Overridepublic void onGeocodeSearched(GeocodeResult result, int rCode) {result.getRegeocodeAddress().getFormatAddress();}

##5.输入提示+Poi搜索
最后是搜索提示+Poi搜索功能:
先上效果图:

实现步骤:
这边已经提供了两个封装好的类,一个是输入提示 一个是Poi搜索

import android.content.Context;import android.util.Log;
import com.amap.api.services.core.AMapException;
import com.amap.api.services.help.Inputtips;
import com.amap.api.services.help.Inputtips.InputtipsListener;
import com.amap.api.services.help.Tip;
import java.util.ArrayList;import java.util.List;
/*** ClassName:InputTipTask <br/>* Function: 简单封装了Inputtips的搜索服务,将其余提示的adapter进行数据绑定* @author   yiyi.qi   * @version     * @since    JDK 1.6   * @see  */
public class InputTipTask implements InputtipsListener {private static InputTipTask mInputTipTask;private Inputtips mInputTips;private RecomandAdapter mAdapter;Context mContext;public static InputTipTask getInstance(Context context, RecomandAdapter adapter){if(mInputTipTask==null){mInputTipTask=new InputTipTask(context);}        //单例情况,多次进入DestinationActivity传进来的RecomandAdapter对象会不是同一个mInputTipTask.setRecommandAdapter(adapter);return mInputTipTask;}public void setRecommandAdapter(RecomandAdapter adapter){mAdapter=adapter;}private InputTipTask(Context context ){mInputTips=new Inputtips(context, this);}public void searchTips(String keyWord, String city){try {mInputTips.requestInputtips(keyWord, city);} catch (AMapException e) {e.printStackTrace();    }
}@Overridepublic void onGetInputtips(List<Tip> tips, int resultCode) {//v3.2.1及以上版本SDK 返回码1000是正常 千万注意if(resultCode==1000&&tips!=null){ArrayList<PositionEntity> positions=new ArrayList<PositionEntity>();for(Tip tip:tips){//经纬度 address city(adcode)positions.add(new PositionEntity(0, 0, tip.getName(),tip.getAdcode()));}mAdapter.setPositionEntities(positions);mAdapter.notifyDataSetChanged();PoiSearchTask poiSearchTask=new PoiSearchTask(mContext.getApplicationContext(), mAdapter);for(int i = 0;i<positions.size();i++){PositionEntity entity = (PositionEntity)mAdapter.getItem(i);poiSearchTask.search(entity.address,RouteTask.getInstance(mContext.getApplicationContext()).getStartPoint().city);}}else {//可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理}}
}
import android.content.Context;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
import com.amap.api.services.poisearch.PoiSearch.Query;
import java.util.ArrayList;import java.util.List;
/** * ClassName:PoiSearchTask <br/>* Function: 简单封装了poi搜索的功能,搜索结果配合RecommendAdapter进行使用显示 <br/>* @author yiyi.qi * @version * @since JDK 1.6 * @see */
public class PoiSearchTask implements OnPoiSearchListener {private Context mContext;private RecomandAdapter mRecommandAdapter;public PoiSearchTask(Context context, RecomandAdapter recomandAdapter) {mContext = context;mRecommandAdapter = recomandAdapter;}public void search(String keyWord, String city) {Query query = new PoiSearch.Query(keyWord, "", city);query.setPageSize(10);query.setPageNum(0);PoiSearch poiSearch = new PoiSearch(mContext, query);poiSearch.setOnPoiSearchListener(this);poiSearch.searchPOIAsyn();}@Overridepublic void onPoiSearched(PoiResult poiResult, int resultCode) {if (resultCode == 1000 && poiResult != null) {ArrayList<PoiItem> pois=poiResult.getPois();if(pois==null){return;}List<PositionEntity> entities=new ArrayList<PositionEntity>();for(PoiItem poiItem:pois){PositionEntity entity=new PositionEntity(poiItem.getLatLonPoint().getLatitude(),poiItem.getLatLonPoint().getLongitude(),poiItem.getTitle(),poiItem.getCityName());entities.add(entity);}mRecommandAdapter.setPositionEntities(entities);mRecommandAdapter.notifyDataSetChanged();}//TODO 可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理}@Overridepublic void onPoiItemSearched(PoiItem poiItem, int i) {}}

你要做的 只是拷贝这连个类到工程中,然后在搜索的Activity中实现TextWatcher接口后,进行如下调用:

//在onTextChanged方法中调用InputTipTask 的getInstance方法
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {if (RouteTask.getInstance(getApplicationContext()).getStartPoint() == null) {Toast.makeText(getApplicationContext(), "检查网络,Key等问题", Toast.LENGTH_SHORT).show();return;
}
InputTipTask.getInstance(getApplicationContext(), mRecomandAdapter).searchTips(s.toString(),RouteTask.getInstance(getApplicationContext()).getStartPoint().city);
}

输入提示完成.如果你希望点选后进行更详细的Poi搜索,也只需在相应位置调用:

//生成poiSearchTask对象
PoiSearchTask poiSearchTask=new PoiSearchTask(getApplicationContext(),mRecomandAdapter);
//开始进行POI搜索
poiSearchTask.search(mDestinaionText.getText().toString(),RouteTask.getInstance(getApplicationContext()).getStartPoint().city);

以上需要一个位置的实体Bean:

/**
* ClassName:PositionEntity <br/>* Function: 封装的关于位置的实体 <br/>* @author yiyi.qi * @version * @since JDK 1.6* @see */
public class PositionEntity {@Overridepublic String toString() {return "PositionEntity{" + "latitue=" + latitue + ", longitude=" + longitude +", address='" + address + '\'' + ", city='" + city + '\'' + '}'; }public double latitue;public double longitude;public String address;public String city;public PositionEntity() {}public PositionEntity(double latitude, double longtitude, String address, String city) {this.latitue = latitude;this.longitude = longtitude;this.address = address;this.city = city;}
}

之后会带来导航相关文章,如果哪里不懂或者写的不对的地方可以联系我!有不足之处还请多多包涵!谢谢
最后贴一个地址,如果有用到聚合Marker的可以传送到此,很详细:
http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=1459

应评论要求,贴上RouteTask代码如下:

import android.content.Context;
import android.util.Log;import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.route.BusRouteResult;
import com.amap.api.services.route.DrivePath;
import com.amap.api.services.route.DriveRouteResult;
import com.amap.api.services.route.RideRouteResult;
import com.amap.api.services.route.RouteSearch;
import com.amap.api.services.route.RouteSearch.DriveRouteQuery;
import com.amap.api.services.route.RouteSearch.FromAndTo;
import com.amap.api.services.route.RouteSearch.OnRouteSearchListener;
import com.amap.api.services.route.WalkRouteResult;
import com.guibinchuxing.hutens.guestgoout.bean.PositionEntity;import java.util.ArrayList;
import java.util.List;/*** ClassName:RouteTask <br/>* Function: 封装的驾车路径规划 <br/>* Date: 2015年4月3日 下午2:38:10 <br/>* * @author yiyi.qi* @version* @since JDK 1.6* @see*/
public class RouteTask implements OnRouteSearchListener {private static RouteTask mRouteTask;private RouteSearch mRouteSearch;private PositionEntity mFromPoint;private PositionEntity mToPoint;private List<OnRouteCalculateListener> mListeners = new ArrayList<OnRouteCalculateListener>();private DrivePath drivepath;public interface OnRouteCalculateListener {public void onRouteCalculate(float cost, float distance, int duration,DrivePath drivepath);}public static RouteTask getInstance(Context context) {if (mRouteTask == null) {mRouteTask = new RouteTask(context);}return mRouteTask;}public PositionEntity getStartPoint() {return mFromPoint;}public void setStartPoint(PositionEntity fromPoint) {mFromPoint = fromPoint;}public PositionEntity getEndPoint() {return mToPoint;}public void setEndPoint(PositionEntity toPoint) {mToPoint = toPoint;}private RouteTask(Context context) {mRouteSearch = new RouteSearch(context);mRouteSearch.setRouteSearchListener(this);}public void search() {if (mFromPoint == null || mToPoint == null) {return;}Log.e(":", "search: "+mFromPoint+","+mToPoint);FromAndTo fromAndTo = new FromAndTo(new LatLonPoint(mFromPoint.latitue,mFromPoint.longitude), new LatLonPoint(mToPoint.latitue,mToPoint.longitude));DriveRouteQuery driveRouteQuery = new DriveRouteQuery(fromAndTo,RouteSearch.DrivingDefault, null, null, "");mRouteSearch.calculateDriveRouteAsyn(driveRouteQuery);}public void search(PositionEntity fromPoint, PositionEntity toPoint) {mFromPoint = fromPoint;mToPoint = toPoint;search();}public void addRouteCalculateListener(OnRouteCalculateListener listener) {synchronized (this) {if (mListeners.contains(listener))return;mListeners.add(listener);}}public void removeRouteCalculateListener(OnRouteCalculateListener listener) {synchronized (this) {mListeners.add(listener);}}//驾车路线规划回调@Overridepublic void onDriveRouteSearched(DriveRouteResult driveRouteResult,int resultCode) {if (resultCode == 1000 && driveRouteResult != null) {synchronized (this) {for (OnRouteCalculateListener listener : mListeners) {List<DrivePath> drivepaths = driveRouteResult.getPaths();float distance = 0;int duration = 0;if (drivepaths.size() > 0) {drivepath = drivepaths.get(0);distance = drivepath.getDistance() / 1000;duration = (int) (drivepath.getDuration() / 60);}float cost = driveRouteResult.getTaxiCost();listener.onRouteCalculate(cost, distance, duration,drivepath);}List<DrivePath> paths = driveRouteResult.getPaths();}}//这里可以根据需求对查询错误情况进行相应的提示或者逻辑处理}@Overridepublic void onWalkRouteSearched(WalkRouteResult arg0, int arg1) {}@Overridepublic void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {}@Overridepublic void onBusRouteSearched(BusRouteResult arg0, int arg1) {}
}

Android高德地图的使用,狠详细!手把手!(地图+定位+逆地理编码+输入提示+Poi搜索)相关推荐

  1. android studio高德地图的显示于定位(附带逆地理编码围栏)

    首先注册高德成为开发者(打开高德地图,点击底部的开发者平台),创建应用,按照要求填写相应信息 网站:http://lbs.amap.com/api/android-sdk/guide/create-p ...

  2. 高德地图-根据经纬度获取地址(逆地理编码)

    1.需要资源: 高德地图搜索SDK以及相关SDk下载地址 2.根据经纬度得到具体地址: 1.这里需要用到地图搜索SDK: 2.通过逆地理编码来实现. 3.示例代码: @Overrideprotecte ...

  3. Flutter 调用高德地图APP实现位置搜索、路线规划、逆地理编码

    1 开发准备 pubspec.yaml 配置文件中添加插件 dependencies:flutter:sdk: flutterurl_launcher: ^6.1.2 iOS 配置 info.plis ...

  4. 调用高德逆地理接口_PHP实现高德地图的地理/逆地理编码

    最近因为项目需求,需要把 酒店地址和 经纬度互相转换,于是就学习使用了高德地图WEB服务端API-地理编码/逆地理编码,下面分享出来. 产品介绍 地理编码/逆地理编码 API 是通过 HTTP/HTT ...

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

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

  6. 高德地图地理编码和逆地理编码,以及逆地理编码的时候如何去掉省、市、镇

    地理编码和逆地理编码 首先说说,何为地理编码, 地理编码就是 给你一个地名,得到对应的经纬度(纬经度,高德地图实际是纬经度) 知道地理编码,那么逆地理编码就不难理解了. 逆地理编码就是给出经纬度,得到 ...

  7. 高德地图的逆地理编码 | 将经纬度坐标转化为对应的地理位置

    官网 地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API 官方解释:地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬 ...

  8. 高德地图API-地理/逆地理编码开发

    1.应用场景 ● 地理编码:将详细的结构化地址转换为高德经纬度坐标.且支持对地标性名胜景区.建筑物名称解析为高德经纬度坐标. 结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.48088 ...

  9. 调用高德逆地理接口_地理编码与逆地理编码

    本章主要介绍如何将地址描述信息和地理坐标做相互转化,主要包括以内容:正向地理编码 逆向地理编码 地理编码服务 地理编码包含正向地理编码和逆向地理编码两种:正向地理编码: 将地址描述信息转换成地理坐标( ...

最新文章

  1. 用python做系统程序_新手小白做毕设,想用Python做一个系统,那么该学习哪方面的知识?...
  2. HBuilder离线打包启用Chrome Inspect调试
  3. 是否可以将标志传递给Gulp以使其以不同方式运行任务?
  4. 完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
  5. 金仓Linux安装版取消开机自启服务
  6. 中信证券新基建专题报告《5G和数据中心的投资机会》
  7. XCTF-高手进阶区:ics-04
  8. 楼层平面放线及标高实测记录_建筑工程定位放线技术交底施工单位测量人员必备...
  9. 现在在做的项目的一些感想.
  10. 大规模业务技术架构设计与战术(架构师必看)
  11. (转)ICO是区块链与生俱来的特性,是金融深化的终局
  12. 【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization
  13. 东京喰种语录(节选)
  14. 如何在Microsoft Outlook中使用Gmail
  15. Android 蓝牙HID协议(基于BR蓝牙)连接流程分析--framework-jni-btif-bta-btm-hci -- 全网最详细(一)
  16. Hadoop(八)网站流量分析
  17. 概率论在实际生活的例子_日常生活中的概率统计
  18. agv系统介绍_AGV智能小车控制系统介绍
  19. 论文阅读|《面向多目标柔性作业车间调度的强化学习NSGA-Ⅱ算法》
  20. JS实现统一社会信用代码的效验(组织机构代码效验)

热门文章

  1. Sqlite DatebaseBrowser不能打开wal的数据库
  2. table tr td 表格合并
  3. 为什么深度学习AI这么容易被欺骗?
  4. intel optane(tm) memory pinning无法加载 | Windows更新后右键打开文件报错
  5. 共享打印机,错误为0x0000052e
  6. 全国地级市城镇化和协调发展指数测算数据(2005-2019)六份数据
  7. python中遍历字典判断是否存在_Python基础之(判断,循环,列表,字典)
  8. 支付宝和微信的发起支付/h5支付
  9. AI识别+视频技术赋能企业安全生产,助力构建安全预警智能平台
  10. 基于单片机的LCD1602电子时钟设计(代码)