Android之应用APN、WIFI、GPS定位小例子

转自一个网上项目,由于是例子打包下载,出处不详。例子中自我写入注释。

 

Activity类:

package com.maxtech.common;

import com.maxtech.common.gps.GpsTask;
import com.maxtech.common.gps.GpsTaskCallBack;
import com.maxtech.common.gps.GpsTask.GpsData;
import com.maxtech.common.gps.IAddressTask.MLocation;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class GpsActivity extends Activity implements OnClickListener {

    private TextView gps_tip = null;
    //声明AlertDialog
    private AlertDialog dialog = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //布局主要就是三个按钮与一个Textview
        gps_tip = (TextView) findViewById(R.id.gps_tip);
        findViewById(R.id.do_gps).setOnClickListener(GpsActivity.this);
        findViewById(R.id.do_apn).setOnClickListener(GpsActivity.this);
        findViewById(R.id.do_wifi).setOnClickListener(GpsActivity.this);
        
        //这个ProgressDialog是用于读取数据时显示
        dialog = new ProgressDialog(GpsActivity.this);
        dialog.setTitle("请稍等...");
        dialog.setMessage("正在定位...");
    }

    //各个按钮的工作
    @SuppressWarnings("unchecked")
    @Override
    public void onClick(View v) {
        gps_tip.setText("");
        switch (v.getId()) {
        case R.id.do_apn:
            //进行apn的定位
            do_apn();
            break;
        case R.id.do_gps:
            //进行gps定位
            GpsTask gpstask = new GpsTask(GpsActivity.this,
                    new GpsTaskCallBack() {

                        @Override
                        public void gpsConnectedTimeOut() {
                            gps_tip.setText("获取GPS超时了");
                        }

                        @Override
                        public void gpsConnected(GpsData gpsdata) {
                            do_gps(gpsdata);
                        }

                    }, 30 * 1000);
            gpstask.execute();
            break;
        //进行wifi定位
        case R.id.do_wifi:
            do_wifi();
            break;
        }
    }

    private void do_apn() {
        //异步
        new AsyncTask<Void, Void, String>() {

            @Override
            protected String doInBackground(Void... params) {
                MLocation location = null;
                try {
                    //具体操作
                    location = new AddressTask(GpsActivity.this,
                            AddressTask.DO_APN).doApnPost();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if(location == null)
                    return null;
                return location.toString();
            }

            //异步操作前执行dialog显示
            @Override
            protected void onPreExecute() {
                dialog.show();
                super.onPreExecute();
            }

            //异步操作后显示相关信息并且关闭dialog
            @Override
            protected void onPostExecute(String result) {
                if(result == null){
                    gps_tip.setText("基站定位失败了...");                    
                }else {
                    gps_tip.setText(result);
                }
                dialog.dismiss();
                super.onPostExecute(result);
            }
            
        }.execute();
    }

    private void do_gps(final GpsData gpsdata) {
        new AsyncTask<Void, Void, String>() {

            @Override
            protected String doInBackground(Void... params) {
                MLocation location = null;
                try {
                    Log.i("do_gpspost", "经纬度" + gpsdata.getLatitude() + "----" + gpsdata.getLongitude());
                    //gps定位具体操作
                    location = new AddressTask(GpsActivity.this,
                            AddressTask.DO_GPS).doGpsPost(gpsdata.getLatitude(),
                                    gpsdata.getLongitude());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if(location == null)
                    return "GPS信息获取错误";
                return location.toString();
            }

            @Override
            protected void onPreExecute() {
                dialog.show();
                super.onPreExecute();
            }

            @Override
            protected void onPostExecute(String result) {
                gps_tip.setText(result);
                dialog.dismiss();
                super.onPostExecute(result);
            }
            
        }.execute();
    }

    private void do_wifi() {
        new AsyncTask<Void, Void, String>() {

            @Override
            protected String doInBackground(Void... params) {
                MLocation location = null;
                try {
                    location = new AddressTask(GpsActivity.this,
                            AddressTask.DO_WIFI).doWifiPost();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if(location == null)
                    return null;
                return location.toString();
            }

            @Override
            protected void onPreExecute() {
                dialog.show();
                super.onPreExecute();
            }

            @Override
            protected void onPostExecute(String result) {
                if(result != null){
                    gps_tip.setText(result);
                }else {
                    gps_tip.setText("WIFI定位失败了...");
                }
                
                dialog.dismiss();
                super.onPostExecute(result);
            }
            
        }.execute();
    }
}


GPS接口: 

package com.maxtech.common.gps;

import com.maxtech.common.gps.GpsTask.GpsData;

public interface GpsTaskCallBack {

    public void gpsConnected(GpsData gpsdata);
    
    public void gpsConnectedTimeOut();
}     


GpsTask gps的具体实现类:

package com.maxtech.common.gps;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

@SuppressWarnings("rawtypes")
public class GpsTask extends AsyncTask {

    private GpsTaskCallBack callBk = null;
    private Activity context = null;
    private LocationManager locationManager = null;
    private LocationListener locationListener = null;
    private Location location = null;
    private boolean TIME_OUT = false;
    private boolean DATA_CONNTECTED = false;
    private long TIME_DURATION = 5000;
    private GpsHandler handler = null;
            private class GpsHandler extends Handler {
        
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    if(callBk == null)
                        return;
                    switch (msg.what) {
                    case 0:
                        callBk.gpsConnected((GpsData)msg.obj);
                        break;
                    case 1:
                        callBk.gpsConnectedTimeOut();
                        break;
                    }
                }
                
            }

    public GpsTask(Activity context, GpsTaskCallBack callBk) {
        this.callBk = callBk;
        this.context = context;
        gpsInit();
    }

    public GpsTask(Activity context, GpsTaskCallBack callBk, long time_out) {
        this.callBk = callBk;
        this.context = context;
        this.TIME_DURATION = time_out;
        gpsInit();
    }

    private void gpsInit() {
        locationManager = (LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE);
        handler = new GpsHandler();
        if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            
        } else {
            //GPSû�д�
            
            TIME_OUT = true;
        }
        locationListener = new LocationListener() {

            @Override
            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
            }

            @Override
            public void onProviderEnabled(String provider) {
            }

            @Override
            public void onProviderDisabled(String provider) {
            }

            //位置改变才会调用
            @Override
            public void onLocationChanged(Location l) {
                DATA_CONNTECTED = true;
                Message msg = handler.obtainMessage();
                msg.what = 0;
                msg.obj = transData(l);
                handler.sendMessage(msg);
            }
        };
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
                100, locationListener);
    }

    @Override
    protected Object doInBackground(Object... params) {
        while (!TIME_OUT && !DATA_CONNTECTED) {
            location = locationManager
                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if (location != null && callBk != null) {
                //�����һ�����
                Message msg = handler.obtainMessage();
                msg.what = 0;
                msg.obj = transData(location);
                handler.sendMessage(msg);
                break;
            }
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //Timer是自动另外开的一条线程
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                TIME_OUT = true;
                
            }
        }, TIME_DURATION);
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void onPostExecute(Object result) {
        locationManager.removeUpdates(locationListener);
        // ��ȡ��ʱ
        if (TIME_OUT && callBk != null){
            handler.sendEmptyMessage(1);
        }
        super.onPostExecute(result);
    }

    private GpsData transData(Location location) {
        GpsData gpsData = new GpsData();
        gpsData.setAccuracy(location.getAccuracy());
        gpsData.setAltitude(location.getAltitude());
        gpsData.setBearing(location.getBearing());
        gpsData.setLatitude(location.getLatitude());
        gpsData.setLongitude(location.getLongitude());
        gpsData.setSpeed(location.getSpeed());
        gpsData.setTime(location.getTime());
        return gpsData;
    }

    public static class GpsData {
        private double latitude = 0;
        private double longitude = 0;
        private float accuracy = 0;
        private double altitude = 0;
        private float bearing = 0;
        private float speed = 0;
        private long time = 0;

        public double getLatitude() {
            return latitude;
        }

        public void setLatitude(double latitude) {
            this.latitude = latitude;
        }

        public double getLongitude() {
            return longitude;
        }

        public void setLongitude(double longitude) {
            this.longitude = longitude;
        }

        public float getAccuracy() {
            return accuracy;
        }

        public void setAccuracy(float accuracy) {
            this.accuracy = accuracy;
        }

        public double getAltitude() {
            return altitude;
        }

        public void setAltitude(double altitude) {
            this.altitude = altitude;
        }

        public float getBearing() {
            return bearing;
        }

        public void setBearing(float bearing) {
            this.bearing = bearing;
        }

        public float getSpeed() {
            return speed;
        }

        public void setSpeed(float speed) {
            this.speed = speed;
        }

        public long getTime() {
            return time;
        }

        public void setTime(long time) {
            this.time = time;
        }
    }
}  

 

AddressTask 使用post访问的参数设置

package com.maxtech.common;

import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnRouteParams;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.json.JSONObject;

import android.app.Activity;
import android.net.Proxy;

import com.maxtech.common.gps.IAddressTask;

public class AddressTask extends IAddressTask {

    public static final int DO_APN = 0;
    public static final int DO_WIFI = 1;
    public static final int DO_GPS = 2;
    private int postType = -1;
    
    public AddressTask(Activity context, int postType) {
        super(context);
        this.postType = postType;
    }
    
    @Override
    public HttpResponse execute(JSONObject params) throws Exception {
        HttpClient httpClient = new DefaultHttpClient();

        HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),
                20 * 1000);
        HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000);
        
        //访问json
        HttpPost post = new HttpPost("http://74.125.71.147/loc/json");
        // 设置代理
        if (postType == DO_APN) {
            String proxyHost = Proxy.getDefaultHost();
            if(proxyHost != null) {
                HttpHost proxy = new HttpHost(proxyHost, 80);
                httpClient.getParams().setParameter(
                        ConnRouteParams.DEFAULT_PROXY, proxy);
            }
        }
        //请求一系列的参数
        StringEntity se = new StringEntity(params.toString());
        post.setEntity(se);
        HttpResponse response = httpClient.execute(post);
        return response;
    }
}  

 

IAddressTask  apn、wifi、gps具体实现类:

package com.maxtech.common.gps;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;

public abstract class IAddressTask {

    protected Activity context;
    
    public IAddressTask(Activity context) {
        this.context = context;
    }
    
    public abstract HttpResponse execute(JSONObject params) throws Exception;
    
    public MLocation doWifiPost() throws Exception {
        return transResponse(execute(doWifi()));
    }
    
    public MLocation doApnPost() throws Exception  {
        return transResponse(execute(doApn()));
    }
    
    public MLocation doGpsPost(double lat, double lng) throws Exception {
        return transResponse(execute(doGps(lat, lng)));
    }

    private MLocation transResponse(HttpResponse response) {
        MLocation location = null;
        if (response.getStatusLine().getStatusCode() == 200) {
            location = new MLocation();
            HttpEntity entity = response.getEntity();
            BufferedReader br;
            try {
                br = new BufferedReader(new InputStreamReader(
                        entity.getContent()));
                StringBuffer sb = new StringBuffer();
                String result = br.readLine();
                while (result != null) {
                    sb.append(result);
                    result = br.readLine();
                }
                JSONObject json = new JSONObject(sb.toString());
                JSONObject lca = json.getJSONObject("location");

                location.Access_token = json.getString("access_token");
                if (lca != null) {
                    if(lca.has("accuracy"))
                        location.Accuracy = lca.getString("accuracy");
                    if(lca.has("longitude"))
                        location.Longitude = lca.getDouble("longitude");
                    if(lca.has("latitude"))
                        location.Latitude = lca.getDouble("latitude");
                    if(lca.has("address")) {
                        JSONObject address = lca.getJSONObject("address");
                        if (address != null) {
                            if(address.has("region"))
                                location.Region = address.getString("region");
                            if(address.has("street_number"))
                                location.Street_number = address
                                        .getString("street_number");
                            if(address.has("country_code"))
                                location.Country_code = address
                                        .getString("country_code");
                            if(address.has("street"))
                                location.Street = address.getString("street");
                            if(address.has("city"))
                                location.City = address.getString("city");
                            if(address.has("country"))
                                location.Country = address.getString("country");
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                location = null;
            }
        }
        return location;
    }

    private JSONObject doGps(double lat, double lng) throws Exception {
        JSONObject holder = new JSONObject();
        holder.put("version", "1.1.0");
        holder.put("host", "maps.google.com");
        holder.put("address_language", "zh_CN");
        holder.put("request_address", true);
        
        JSONObject data = new JSONObject();
        data.put("latitude", lat);
        data.put("longitude", lng);
        holder.put("location", data);

        return holder;
    }
    
    private JSONObject doApn() throws Exception {
        JSONObject holder = new JSONObject();
        holder.put("version", "1.1.0");
        holder.put("host", "maps.google.com");
        holder.put("address_language", "zh_CN");
        holder.put("request_address", true);
        
        //获得GSM相关信息
        TelephonyManager tm = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();
        int cid = gcl.getCid();
        int lac = gcl.getLac();
        int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,
                3));
        int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,
                5));
        //请求参数
        JSONArray array = new JSONArray();
        JSONObject data = new JSONObject();
        data.put("cell_id", cid);
        data.put("location_area_code", lac);
        data.put("mobile_country_code", mcc);
        data.put("mobile_network_code", mnc);
        array.put(data);
        holder.put("cell_towers", array);
        
        return holder;
    }
    
    private JSONObject doWifi() throws Exception {
        JSONObject holder = new JSONObject();
        holder.put("version", "1.1.0");
        holder.put("host", "maps.google.com");
        holder.put("address_language", "zh_CN");
        holder.put("request_address", true);
        
        //获得wifi相关信息
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        
        if(wifiManager.getConnectionInfo().getBSSID() == null) {
            throw new RuntimeException("bssid is null");
        }
        
        JSONArray array = new JSONArray();
        JSONObject data = new JSONObject();
        data.put("mac_address", wifiManager.getConnectionInfo().getBSSID());  
        data.put("signal_strength", 8);  
        data.put("age", 0);  
        array.put(data);
        holder.put("wifi_towers", array);
        
        return holder;
    }

    public static class MLocation {
        public String Access_token;

        public double Latitude;

        public double Longitude;

        public String Accuracy;

        public String Region;

        public String Street_number;

        public String Country_code;

        public String Street;

        public String City;

        public String Country;

        @Override
        public String toString() {
            StringBuffer buffer = new StringBuffer();
            buffer.append("Access_token:" + Access_token + "\n");
            buffer.append("Region:" + Region + "\n");
            buffer.append("Accuracy:" + Accuracy + "\n");
            buffer.append("Latitude:" + Latitude + "\n");
            buffer.append("Longitude:" + Longitude + "\n");
            buffer.append("Country_code:" + Country_code + "\n");
            buffer.append("Country:" + Country + "\n");
            buffer.append("City:" + City + "\n");
            buffer.append("Street:" + Street + "\n");
            buffer.append("Street_number:" + Street_number + "\n");
            return buffer.toString();
        }
    }
}  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果科学家封神,会有什么称号?

全世界只有3.14 % 的人关注了数据与算法之美你听说过“天雷真君”吗&#xff1f;你知道“虐猫狂人"吗&#xff1f;其实这两个称号是网友分别送给大科学家富兰克林和薛定谔的。今天让我们看看伟大的科学家们还有一些什么有趣的称号。尺规小王子高斯如来神展傅立叶勾股圣手—…

mac php mcrypt,MacOSX 10.10安装mcrypt详细教程分享

mcrypt 是使用安全技术来交换数据文件加密方法. 这是必需的&#xff0c;例如一些 Magento 的 Web 应用程序,购物车软件或一个 PHP 框架&#xff0c;比如 Laravel. 本教程在 OS X 10.10 Yosemite 经过测试。本指南是真正为用户提供了PHP运行于OSX Yosemite 的5.5.14 版本。其他下…

WPF加载高德地图

WPF开发者QQ群&#xff1a; 340500857 前言 有小伙伴问如何加载高德地图。欢迎转发、分享、点赞&#xff0c;谢谢大家~。 接着上一篇源码中放了我的 BingMap Key 请大家不要滥用&#xff0c;谢谢。也可以自行申请 BingMap Key https://www.bingmapsportal.com/效果预览&#x…

深度学习与机器学习到底什么关系?

最近广州的天气老是变幻无常&#xff0c;前脚还冻得瑟瑟发抖&#xff0c;后脚又开始夏天模式&#xff08;如下图&#xff09;&#xff0c;让小天甚是怀念每天艳阳高照的夏天&#xff0c;虽然热了点但好歹不用担心猝不及防地收到寒风暴雨黄色预警。说到夏天&#xff0c;不得不提…

全选按钮的使用。winfrom程序中,对全选按钮的理解,欢迎拍砖!

最近在做公司项目时&#xff0c;用到了一些单选多选的处理情况。特编辑此文&#xff0c;欢迎批评指正。&#xff08;有图有真相&#xff09; winfrom程序。 首先&#xff0c;需要绑定某些用户&#xff0c;该用于由当前登陆用户获取。 private void BindUser() { …

php 新浪面试题,php程序员面试题(新浪篇)

新浪PHP工程笔试题1. 写一个函数&#xff0c;尽可能高效的&#xff0c;从一个标准 url 里取出文件的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id1 需要取出 php 或 .php2. 在 HTML 语言中&#xff0c;页面头部的 meta 标记可以用来输出文件的编码格式&#xff0c;以…

理工男一般不浪漫,一浪漫便值很多年

今晚是平安夜接下来就是圣诞元旦小木先祝大家幸福、快乐、健康一年一度“最佳”圣诞元旦礼物奖就要发表了中了直男毒的礼物你们挚爱的女朋友可是不要的哦今天小木就大家扒一扒满满直男的礼物是怎样的&#xff01;Part 1“男票送了我一箱木瓜&#xff0c;说是丰胸疗程&#xff0…

C#序列化与反序列化详解

什么是序列化以及如何实现序列化&#xff1f;序列化是通过将对象转换为字节流&#xff0c;从而存储对象或将对象传输到内存&#xff0c;数据库或文件的过程。主要用途是保存对象的状态&#xff0c;包括对象的数据&#xff0c;以便能够在需要是重建对象。反向过程称为 反序列化。…

云计算涉足网游

随着云计算的发展&#xff0c;网游完全无端化指日可待。 互联网从C/S结构慢慢的过渡到B/S结构&#xff0c;网络游戏也从端游慢慢过渡到页游。比起市场上动辄7G、14G大型端游来说&#xff0c;页游实在是一个太过方便的东西。比如不用频繁的更新客户端&#xff0c;如果是安装在了…

php父子遍历,php无限分类父子追溯方法

php 无限分类之父级分类和子分类的追溯方法&#xff0c;代码片段如下&#xff1a;//返回所有的叶子节点public function scanNodeOfTree($result,$fid){$checkexist false;for ($i0; $iif($fid $result[$i][ParentId]){$checkexist true;$arr . $this->scanNodeOfTree($r…

TLS是如何保障数据传输安全(中间人攻击)

前言前段时间和同事讨论HTTPS的工作原理&#xff0c;当时对这块知识原理掌握还是靠以前看了一些博客介绍&#xff0c;深度不够&#xff0c;正好我这位同事是密码学专业毕业的&#xff0c;结合他密码学角度对tls加解密(DH这块)的阐述&#xff0c;让我对这块原理有了更进一步的理…

除了 Python ,这些语言写的机器学习项目也很牛

全世界只有3.14 % 的人关注了数据与算法之美Python 由于本身的易用优势和强大的工具库储备&#xff0c;成为了在人工智能及其它相关科学领域中最常用的语言之一。尤其是在机器学习&#xff0c;已然是各大项目最偏爱的语言。其实除了 Python &#xff0c;也不乏有开发者用其他语…

php 输入值,php-HTML输入值更改

我有一个PHP更新页面,其中显示一个包含数据库值的文本字段.就像这样,它正在工作,现在,我需要将此更新后的值放回数据库中&#xff01;我已经使用过这样的代码,但是它没有更新&#xff1a;$title$_POST[title];$v_id $_GET[v_id];$sql mysql_query("update vehicles set …

马斯克又要搞事情,不锈钢材质的Space X“星际飞船”正式亮相

全世界只有3.14 % 的人关注了数据与算法之美近日&#xff0c;据美国科技媒体 Teslarati 报道&#xff0c;今年 Space X &#xff08;太空探索技术公司&#xff09;已经开始研发“星际飞船”&#xff08;Starship&#xff09;和 “Super Heavy”&#xff0c;而“星际飞船”则是火…

记一次 .NET 某外贸Web站 内存泄漏分析

一&#xff1a;背景 1. 讲故事上周四有位朋友加wx咨询他的程序内存存在一定程度的泄漏&#xff0c;并且无法被GC回收&#xff0c;最终机器内存耗尽&#xff0c;很尴尬。沟通下来&#xff0c;这位朋友能力还是很不错的&#xff0c;也已经做了初步的dump分析&#xff0c;发现了托…

归档日志 delete input 和delete all input 区别

关于archivelog delete input 和delete all input区别 1 rman的归档位置定义两个 log_archive_dest_1 string LOCATION/oracle/archive log_archive_dest_2 string LOCATION/oracle/archive2/ 2 执行alter system switch lo…

java取整公式,Java取整函数 四舍五入函数-Go语言中文社区

简介Math类中提供了5个与取整相关的函数&#xff0c;如下所示&#xff1a;static double ceil(double a)&#xff1a;天花板函数&#xff0c;返回大于等于a的最小整数(但是以浮点数形式存储)。static double floor(double a)&#xff1a;地板函数&#xff0c;返回小于等于a的最…

这些优质的教育类公众号您知道么,非常实用!

随着新媒体的发展壮大&#xff0c;教育类微信号林林总总数不胜数&#xff0c;官方的、媒体的、学校的……让人眼花缭乱&#xff0c;不知如何选择&#xff0c;今天&#xff0c;小编要向您推荐一些优质且实用的教育类公众号&#xff0c;请大家立即关注。长按二维码&#xff0c;选…

ML.NET Cookbook:(3)如何从CSV加载包含多个列的数据?

TextLoader用于从文本文件加载数据。您需要指定什么是数据列、它们的类型以及在文本文件中的位置。当输入文件包含许多相同类型的列&#xff08;通常打算一起使用&#xff09;时&#xff0c;我们建议从一开始就将它们作为向量列进行加载&#xff1a;这样&#xff0c;数据的架构…