获取wifi和定位的基础信息

获取wifi和定位的基础信息
转⾃:blog.csdn/w752325717/article/details/53930241
===========================简单明了==============================
定位
因为公司的需要,在⽹上查定位,结果发现⼤部分都是⽆法实现的,不是代码有问题就是已经过期,只能⾃⼰研究,经过⼀天的努⼒,有了⼀些⼼得,⾸先定位需要这⼏个参数,不管你⽤的什么接⼝
lac    //连接位置区域码
cellid  //连接编码
mcc    //MCC国家码
mnc    //MNC⽹号
signalstrength//连接信号强度
然后在定位⽅⾯,有通过⼀个定位的,有通过⼏个定位的,⼀个定位就是通过查这个的位置,然后将这个位置作为⽤户的位置,准确度不是很⾼,还有多定位,需要得到附近的所有数据和信号强度,通过⼀定的得到⽤户的位置,这个⽅法⽐单定位的准确度要⾼⼀些。我⽤的是多定位,下⾯介绍的也是这个⽅法。
在查资料时,看到聚合的官⽹有介绍关于获取数据的⽅法,⽹站如下,各位可以去看看
但是这个⽹站上⾯写的⽅法照着写的话会报错,经过查,错误在这⼀⾏代码:
CellInfoCdma cellInfoCdma = (CellInfoCdma) info;
这个强制转换的⽅法是有问题,因为不同的⼿机返回的数据是不⼀样的,我去查了⼀下的官⽅SDK
关于CellInfo对象的介绍,发现这个对象有四个⼦类,可以理解为代表不同的数据的类,分别是:
CellInfoCdma        //电信3G的数据
CellInfoGsm        //通⽤的移动联通电信2G的数据
CellInfoLte        //4g⽹络的数据
CellInfoWcdma      //联通3G的数据
我在⽹上查到移动的3G是scdma,但这个对象没有这个⼦类,原因不明。
到这⼀步已经可以知道正确的写法是怎么样的了,我直接列出我的代码:
/** 得到数据 */
@SuppressLint("NewApi")
public static void getBaseData(final Context mContext) {
// lac连接位置区域码 cellid连接编码 mcc MCC国家码 mnc MNC⽹号
// signalstrength连接信号强度
List<BaseDataBean> list = new ArrayList<BaseDataBean>();
BaseDataBean beans = new BaseDataBean();
TelephonyManager telephonyManager = (TelephonyManager) mContext
.
getSystemService(Context.TELEPHONY_SERVICE);
String operator = NetworkOperator();
beans.setMcc(operator.substring(0, 3));
beans.setMnc(operator.substring(3));
if (PhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {// 这是电信的            CdmaCellLocation cdmaCellLocation = (CdmaCellLocation) telephonyManager
.getCellLocation();
beans.setCell_BaseStationId() + "");
beans.NetworkId() + "");
} else {// 这是移动和联通的
GsmCellLocation gsmCellLocation = (GsmCellLocation) telephonyManager
.getCellLocation();
beans.setCell_Cid() + "");
beans.Lac() + "");
}
beans.setSignalstrength("0");
list.add(beans);
List<CellInfo> infoLists = AllCellInfo();
if (infoLists.size() != 0) {
for (CellInfo info : infoLists) {
/** 1、GSM是通⽤的移动联通电信2G的。
2、CDMA是3G的。
3、LTE,则证明⽀持4G的。*/
BaseDataBean bean = new BaseDataBean();
if (String().contains("CellInfoLte")) {
CellInfoLte cellInfoLte = (CellInfoLte) info;
CellIdentityLte cellIdentityLte = cellInfoLte
.getCellIdentity();
CellSignalStrengthLte cellSignalStrengthLte = cellInfoLte
.getCellSignalStrength();
bean.Dbm() + "");
bean.setCell_Ci() + "");
bean.Tac() + "");
电子除垢器bean.Mcc() + "");
bean.Mnc() + "");
} else if (String().contains("CellInfoGsm")) {
CellInfoGsm cellInfoGsm = (CellInfoGsm) info;
CellInfoGsm cellInfoGsm = (CellInfoGsm) info;
发光细菌CellIdentityGsm cellIdentityGsm = cellInfoGsm
.getCellIdentity();
CellSignalStrengthGsm cellSignalStrengthGsm = cellInfoGsm
.getCellSignalStrength();
bean.Dbm() + "");
bean.setCell_Cid() + "");
bean.Lac() + "");
bean.Mcc() + "");
bean.Mnc() + "");
} else if (String().contains("CellInfoCdma")) {
CellInfoCdma cellInfoCdma = (CellInfoCdma) info;
CellIdentityCdma cellIdentityCdma = cellInfoCdma
.getCellIdentity();
CellSignalStrengthCdma cellSignalStrengthCdma = cellInfoCdma
.getCellSignalStrength();
bean.setCell_BasestationId() + "");
bean.CdmaDbm()
+ "");
/
**因为待会我要把这个list转成gson,所以这个对象的所有属性我都赋⼀下值,不必理会这⾥*/                    bean.setLac("0");
bean.setMcc("0");
bean.setMnc("0");
}
list.add(bean);
}
}
/**到了这⾥这个list就是你得到的你附近的所有数据了。
现在可以调⽤你的通过数据定位的接⼝,我的接⼝是公司后台写给我的。*/
}
顺便把BaseDataBean这个bean也发出来吧
/**
* 数据
*/
public class BaseDataBean {
private String cell_id;// cellid连接编码
private String lac;// lac连接位置区域码
private String mcc;// mcc MCC国家码
private String mnc;// mnc MNC⽹号
private String signalstrength;// signalstrength连接信号强度
public String getCell_id() {
return cell_id;
}
public void setCell_id(String cell_id) {
}
public String getLac() {
return lac;
}
public void setLac(String lac) {
this.lac = lac;
}
public String getMcc() {
public String getMcc() {
return mcc;
}
public void setMcc(String mcc) {
< = mcc;
}
public String getMnc() {
return mnc;
}
public void setMnc(String mnc) {
< = mnc;
}
public String getSignalstrength() {
return signalstrength;
}
public void setSignalstrength(String signalstrength) {
this.signalstrength = signalstrength;
}
}
WIFI定位
同样的,wifi定位接⼝的话你们⾃⼰,我的接⼝是公司后台提供的,wifi定位需要的数据如下
BSSID      //wifi的Mac地址
level      //wifi的强度,即信号的强弱
SSID        //wifi的名字
获取的⽅法也很简单:
/** 得到Wifi数据 */
public static void getWifiData(final Context mContext) {
WifiManager wifiManager = (WifiManager) mContext
.getSystemService(Context.WIFI_SERVICE);
List<ScanResult> list = ScanResults();
List<WifiDataBean> data = new ArrayList<WifiDataBean>();
for (int i = 0; i < list.size(); i++) {
WifiDataBean bean = new WifiDataBean();
bean.setMac_(i).BSSID);
bean.setSignal_(i).level+"");
bean.setWifi_(i).SSID);
data.add(bean);
}
/**到了这⾥这个data就是你得到的你附近的所有wifi数据了。*/
}
把WifiDataBean也发出来吧。
/**
* wifi数据
*/
组织芯片
public class WifiDataBean {
private String wifi_name;//wifi信息名字
private String mac_address;//wifi的MAC地址
private String signal_strength;//wifi信号强度
public String getWifi_name() {
return wifi_name;
}
public void setWifi_name(String wifi_name) {
this.wifi_name = wifi_name;
水泵远程监控}
mesh设备public String getMac_address() {
return mac_address;
}
微电解水杯public void setMac_address(String mac_address) {
this.mac_address = mac_address;
}
public String getSignal_strength() {
return signal_strength;
}
public void setSignal_strength(String signal_strength) {
this.signal_strength = signal_strength;
}
}
调⽤这俩个⽅法记得加以下权限(其实没这么多,但我懒得挑了):
<!-- ⽤于进⾏⽹络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<!-- ⽤于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- ⽤于获取运营商信息,⽤于⽀持提供运营商信息相关的接⼝ -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- ⽤于访问wifi⽹络信息,wifi信息会⽤于进⾏⽹络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- ⽤于获取wifi的获取权限,wifi信息会⽤来进⾏⽹络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- ⽤于访问⽹络,⽹络定位需要上⽹ -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- ⽤于申请调⽤A-GPS模块 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

本文发布于:2024-09-23 00:32:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/206367.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:基站   定位   数据   连接
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议