文章目录

  • 前言
  • 添加传感器类
  • 修改MainActivity.java
  • 测试
  • 优化
    • 平滑方向变化
      • 新增对象
      • 获取上一次定位数据
      • 修改initOrientation
    • 再次定位,画面中心点不再回到定位点
    • 迅速返回定位点
      • 添加按钮
      • 实现按钮
    • 定位点模式切换
      • 添加单选框
      • 实现功能
  • 源码

前言

上午刚说不知道怎么绑定方向传感器,下午就找到教程了……
主要参考了花海ipa大大的这篇文章
2019-详细Android Studio开发百度地图(3)—百度地图_配合方向感应器的定位功能的实现
之前对于定位的方向,是通过getDirection()来实现的,说是获取手机朝向,但是你不到处走动,图标的朝向一直不变,也不知道是它是怎么运行的。既然自带的方法不行,那就自己通过方向传感器获取一个方向。


添加传感器类

右键存放MainActivity.java文件的那个文件夹,New中选择Java Class,命名为MyOrientationListener

以下为代码,复制粘贴即可(注意文件最顶端有一个package,不要覆盖了)

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 Context mContext;private Sensor mSensor;private float lastX;public MyOrientationListener(Context context){this.mContext = context;}@SuppressWarnings("deprecation")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);}@Overridepublic void onAccuracyChanged(Sensor arg0, int arg1){// TODO Auto-generated method stub}@SuppressWarnings({ "deprecation" })@Overridepublic 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;}}private OnOrientationListener mOnOrientationListener;public void setOnOrientationListener(OnOrientationListener mOnOrientationListener){this.mOnOrientationListener = mOnOrientationListener;}public interface OnOrientationListener{void onOrientationChanged(float x);}}

修改MainActivity.java

添加新对象

//方向传感器private MyOrientationListener mMyOrientationListener;private float mCurrentX;

初始化传感器

//传感器private void initOrientation() {//传感器mMyOrientationListener = new MyOrientationListener(getApplicationContext());mMyOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {@Overridepublic void onOrientationChanged(float x) {mCurrentX = x;}});}

在修改初始化地图函数

private void initmap() throws Exception {//定位初始化mLocationClient = new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());//获取地图控件引用mMapView = (MapView) findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(20).build()));//开启地图的定位图层mBaiduMap.setMyLocationEnabled(true);//通过LocationClientOption设置LocationClient相关参数LocationClientOption option = new LocationClientOption();option.setOpenGps(true); // 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setIsNeedAddress(true);//设置是否需要地址信息option.setScanSpan(1000);//设置locationClientOptionmLocationClient.setLocOption(option);//注册LocationListener监听器MyLocationListener myLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(myLocationListener);//新增注册监听函数initOrientation();//开启地图定位图层mLocationClient.start();}

修改onReceiveLocation函数,将direction中的参数换成方向传感器获取到的方向。

MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(mCurrentX).latitude(location.getLatitude()).longitude(location.getLongitude()).build();

管理生命周期

protected void onStart() {super.onStart();//开启定位mBaiduMap.setMyLocationEnabled(true);if (!mLocationClient.isStarted())mLocationClient.start();//开启方向传感器mMyOrientationListener.start();}@Overrideprotected void onStop() {super.onStop();//停止定位mBaiduMap.setMyLocationEnabled(false);mLocationClient.stop();//停止方向传感器mMyOrientationListener.stop();}

测试

由于SDK支持的最短刷新间隔就是1000ms(一秒),所以看起来会一卡一卡的,而且由于每次定位顺带把界面中心也移动到了定位点,导致想看看周围却发现不管怎么拖动地图,一会地图又回来了。


优化

平滑方向变化

虽然百度地图SDK的定位是一秒一次的,但是我们的运动传感器不是一秒一次获取方向的。根据代码我们可以看到,只要方向变化超过1°,就会传一次方向数据。

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;}}

那么,我们就在传回方向的时候重新修改定位点数据。

新增对象

//记录当前经纬度以及定位精度
private double Latitude;
private double Longitude;
private float Radius;

获取上一次定位数据

在onReceiveLocation中添加以下代码

Latitude=location.getLatitude();
Longitude=location.getLongitude();
Radius=location.getRadius();

修改initOrientation

 //传感器private void initOrientation() {//传感器mMyOrientationListener = new MyOrientationListener(getApplicationContext());mMyOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {@Overridepublic void onOrientationChanged(float x) {mCurrentX = x;MyLocationData locData = new MyLocationData.Builder().accuracy(Radius).direction(mCurrentX).latitude(Latitude).longitude(Longitude).build();mBaiduMap.setMyLocationData(locData);}});}

这样就能在方向变化时立即反应到地图上。

再次定位,画面中心点不再回到定位点

新增对象

//是否为初次定位
private boolean isFirst = true;

在onReceiveLocation中加入判断条件

if(isFirst){mBaiduMap.animateMapStatus(update);MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true, null );
mBaiduMap.setMyLocationConfiguration(configuration);isFirst=false;}

这样,只有第一次定位重置地图位置。

迅速返回定位点

有时候划太远了,可能会找不到自己在哪。因此新增一个按钮,点击就让地图中心点回到定位点。

添加按钮

在activity_main.xml中添加一个按钮控件

<Buttonandroid:id="@+id/but_Loc"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="回到定位点"android:layout_marginLeft="0dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="127dp"/>

实现按钮

public class MainActivity extends AppCompatActivity后加上implements View.OnClickListener

实现按钮功能

 //按钮响应private void button() {//按钮Button mbut_Loc = (Button) findViewById(R.id.but_Loc);//按钮处理mbut_Loc.setOnClickListener(this);}//回到定位点private void centerToMyLocation() {LatLng latLng = new LatLng(Latitude, Longitude);MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(update);}@Overridepublic void onClick(View v) {SDKInitializer.initialize(getApplicationContext());switch (v.getId()) {case R.id.but_Loc: {centerToMyLocation();break;}}}

最后在initmap()的最后加上一句button();,这样点击按钮就能回到定位点了。

定位点模式切换

添加单选框

在activity_main.xml中添加RadioGroup

 <RadioGroupandroid:id="@+id/Mode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:background="#000000"app:layout_constraintStart_toStartOf="@+id/bmapView"app:layout_constraintTop_toTopOf="@+id/bmapView"><RadioButtonandroid:id="@+id/following"android:layout_width="137dp"android:layout_height="wrap_content"android:text="跟随态" /><RadioButtonandroid:id="@+id/normal"android:layout_width="137dp"android:layout_height="wrap_content"android:text="普通态"android:checked="true"/><RadioButtonandroid:id="@+id/compass"android:layout_width="137dp"android:layout_height="wrap_content"android:text="罗盘态" /></RadioGroup>

实现功能

添加新对象

//定位模式private RadioGroup mode;

初始化函数

public void initRadioGroup() {//获取radiongroup对象mode = (RadioGroup) findViewById(R.id.Mode);//通过radiogroup的setoncheckedlistener方法注册监听事件//在监听事件中创建oncheckedlistener 在重写oncheckedchanged方法mode.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {//获取被选中的radiobutton的idRadioButton rcheck = (RadioButton) findViewById(checkedId);//获取String checkText = rcheck.getText().toString();MyLocationConfiguration configuration= null;switch (checkText){case "跟随态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING,true, null );mBaiduMap.setMyLocationConfiguration(configuration);//罗盘态会改变百度地图的旋转和俯视角度,切换到其他模式需要重置mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).rotate(0).build()));mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).overlook(0).build()));break;case "普通态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true, null );mBaiduMap.setMyLocationConfiguration(configuration);mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).rotate(0).build()));mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).overlook(0).build()));break;case "罗盘态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.COMPASS,true, null );mBaiduMap.setMyLocationConfiguration(configuration);break;}}});}

在onCreate()的setContentView(R.layout.activity_main);后添加initRadioGroup();
测试

可以流畅运行了。

源码

最后附上源代码

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private MapView mMapView = null;private BaiduMap mBaiduMap = null;private LocationClient mLocationClient = null;//方向传感器private MyOrientationListener mMyOrientationListener;private float mCurrentX;private double Latitude;private double Longitude;private float Radius;//是否为初次定位private boolean isFirst = true;//定位模式private RadioGroup mode;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//检查权限if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);}else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);}else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 3);} else {initSDK(true);setContentView(R.layout.activity_main);initRadioGroup();try {initmap();} catch (Exception e) {e.printStackTrace();}}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "没有ACCESS_FINE_LOCATION权限!", Toast.LENGTH_LONG).show();finish();}break;case 2:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "没有ACCESS_COARSE_LOCATION权限!", Toast.LENGTH_LONG).show();finish();}break;case 3:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "没有WRITE_EXTERNAL_STORAGE权限!", Toast.LENGTH_LONG).show();finish();}break;}initSDK(true);setContentView(R.layout.activity_main);initRadioGroup();try {initmap();} catch (Exception e) {e.printStackTrace();}}private void initSDK(boolean status) {LocationClient.setAgreePrivacy(status);SDKInitializer.setAgreePrivacy(getApplicationContext(), status);try {//在使用SDK各组件之前初始化context信息,传入ApplicationContextSDKInitializer.initialize(getApplicationContext());//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);} catch (Exception e) {e.printStackTrace();}}private void initmap() throws Exception {//定位初始化mLocationClient = new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());//获取地图控件引用mMapView = (MapView) findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(20).build()));//开启地图的定位图层mBaiduMap.setMyLocationEnabled(true);//通过LocationClientOption设置LocationClient相关参数LocationClientOption option = new LocationClientOption();option.setOpenGps(true); // 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setIsNeedAddress(true);//设置是否需要地址信息option.setScanSpan(1000);//设置locationClientOptionmLocationClient.setLocOption(option);//注册LocationListener监听器MyLocationListener myLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(myLocationListener);//注册监听函数initOrientation();//开启地图定位图层mLocationClient.start();button();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView = null;super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}protected void onStart() {super.onStart();//开启定位mBaiduMap.setMyLocationEnabled(true);if (!mLocationClient.isStarted())mLocationClient.start();//开启方向传感器mMyOrientationListener.start();}@Overrideprotected void onStop() {super.onStop();//停止定位mBaiduMap.setMyLocationEnabled(false);mLocationClient.stop();//停止方向传感器mMyOrientationListener.stop();}//构造地图数据public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {//mapView 销毁后不在处理新接收的位置if (location == null || mMapView == null){return;}Latitude=location.getLatitude();Longitude=location.getLongitude();Radius=location.getRadius();if(isFirst){LatLng latLng = new LatLng(Latitude, Longitude);MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(update);MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true, null );mBaiduMap.setMyLocationConfiguration(configuration);isFirst=false;}MyLocationData locData = new MyLocationData.Builder().accuracy(Radius)// 此处设置开发者获取到的方向信息,顺时针0-360.direction(mCurrentX).latitude(Latitude).longitude(Longitude).build();mBaiduMap.setMyLocationData(locData);}}//传感器private void initOrientation() {//传感器mMyOrientationListener = new MyOrientationListener(getApplicationContext());mMyOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {@Overridepublic void onOrientationChanged(float x) {mCurrentX = x;MyLocationData locData = new MyLocationData.Builder().accuracy(Radius)// 此处设置开发者获取到的方向信息,顺时针0-360.direction(mCurrentX).latitude(Latitude).longitude(Longitude).build();mBaiduMap.setMyLocationData(locData);}});}//按钮响应private void button() {//按钮Button mbut_Loc = (Button) findViewById(R.id.but_Loc);//按钮处理mbut_Loc.setOnClickListener(this);}//回到定位点private void centerToMyLocation() {LatLng latLng = new LatLng(Latitude, Longitude);MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(update);}@Overridepublic void onClick(View v) {SDKInitializer.initialize(getApplicationContext());switch (v.getId()) {case R.id.but_Loc: {centerToMyLocation();break;}}}public void initRadioGroup() {//获取radiongroup对象mode = (RadioGroup) findViewById(R.id.Mode);//通过radiogroup的setoncheckedlistener方法注册监听事件//在监听事件中创建oncheckedlistener 在重写oncheckedchanged方法mode.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {//获取被选中的radiobutton的idRadioButton rcheck = (RadioButton) findViewById(checkedId);//获取String checkText = rcheck.getText().toString();MyLocationConfiguration configuration= null;switch (checkText){case "跟随态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING,true, null );mBaiduMap.setMyLocationConfiguration(configuration);//罗盘态会改变百度地图的旋转和俯视角度,切换到其他模式需要重置mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).rotate(0).build()));mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).overlook(0).build()));break;case "普通态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true, null );mBaiduMap.setMyLocationConfiguration(configuration);mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).rotate(0).build()));mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder(mBaiduMap.getMapStatus()).overlook(0).build()));break;case "罗盘态":configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.COMPASS,true, null );mBaiduMap.setMyLocationConfiguration(configuration);break;}}});}
}

完整项目
提取码:go1j

Android Studio3.0对于百度地图SDK的开发(基于方向传感器实现手机朝向显示)相关推荐

  1. Android studio3.0对于百度地图api开发(4)——百度地图地图覆盖物制作

    承接上文未完的继续介绍,上文内容:https://blog.csdn.net/qq_41562408/article/details/82810484主要实现百度地图的定位以及对于地图覆盖物进行简单介 ...

  2. 百度地图的简单开发之方向传感器实现定位功能

    今天我们来谈下百度地图的定位功能,在此之前我已经将百度地图的基本地图大概说了下,其实百度地图的基本功能还有很多的内容.感兴趣的可以到百度地图的开发者的官网看看.今天就开始来讲下百度地图中的定位功能. ...

  3. Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

    from: http://blog.csdn.net/y1scp/article/details/49095729 定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址, ...

  4. Android百度地图(二)结合方向传感器我们自己定位哪里走

    Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步修改,有 ...

  5. Android Studio3.0没有Launch Standalone SDK Manager

    环境:Android Studio3.0 位置:Android Studio->Tools->Android->SDK Manager 问题:没有Launch Standalone ...

  6. Android中级篇之百度地图SDK v3.5.0-基础地图[图解百度地图基础教程]

    基础地图[比官方更详细] 简介 开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物.道路.河流.学校.公园等内容.所有叠 ...

  7. 百度地图SDK无法定位到当前所在位置;一直显示天安门

    按照百度官方SDK接入百度地图SDK后,进行地图定位的时候,缩小界面,显示出了定位图标,但是打开地图界面,一直显示天安门的位置. /*** 初始化定位内容*/private void initLoca ...

  8. android的百度地图sdk获取ip,基于百度地图API的ip地址查询

    说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...

  9. Android中级篇之百度地图SDK v3.5.0-百度地图定位[超详细图解定位基础]

    from: http://blog.csdn.net/y1scp/article/details/48173957

  10. 开源基于百度地图SDK的Android交通助手App

    BaiduMap-TrafficAssistant    该项目是基于百度地图SDK开发的一款交通助手App,目前已经上线豌豆荚.魅族应用市场.搜狗手机助手等多个安卓应用市场.目前我决定开源该项目,为 ...

最新文章

  1. 物体抓取位姿估計算法綜述_基于深度学习的物体抓取位置估计
  2. iOS推送兼容iOS7
  3. python基础教程书籍推荐-小猿圈推荐Python入门书籍,不知道这些你就太low了。
  4. 计算机成绩统计优秀率,基于决策树算法的成绩优秀率分析与研究.pdf
  5. MapReduce中的InputFormat(1)概述
  6. 汉字的ascii码值范围_ASCII代码
  7. php指定字符编码,PHP字符编码问题
  8. 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
  9. mysql 判断指定条件数据存不存在,不存在则插入
  10. 【单目标优化求解】基于matlab改进的遗传算法求解单目标优化问题【含Matlab源码 1834期】
  11. Java并发编程之线程安全性
  12. js调用html页面跳转,js实现页面跳转的方法
  13. java smali_如何把java代码转换成smali代码
  14. C++模板的概念 定义和使用
  15. 电子警察技术原理分析
  16. 从多种模型中选择最合适的模型,用于行人检测
  17. 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  18. 软件测试实习——第二十五天
  19. MFRC522读卡封装(附源代码)
  20. 造成503 service unavailable常见的原因以及解决方法

热门文章

  1. 算24点的一般方法及例题
  2. 台式计算机开机风扇不转,电脑开机显卡风扇不转是怎么回事|电脑开机风扇不转的解决方法...
  3. mysql ndb_MySQL NDB Cluster概述
  4. mysql ndbcluster 缺点_MySQL集群 -- NDB Cluster
  5. Rhino6.9软件安装教程|兼容WIN10
  6. C语言求卢卡斯序列,斐波那契序列和卢卡斯序列
  7. 北京二手房价预测(数据分析)
  8. 合并拆分wim文件命令imagex
  9. html动画人物走路,CSS3动画中的steps(),制作人物行走动画
  10. py知识(每日更新) 7.19