77范文网 - 专业文章范例文档资料分享平台

基于Android系统的基站定位实现毕业论文(9)

来源:网络收集 时间:2020-04-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

中国计量学院本科毕业设计(论文)

}

/***************获取当前基站信息 @throws Exception***********/ public SCell getCellInfo() throws Exception { SCell cell = new SCell(); //得到当前基站信息 mTelManCur = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mGsmlocation = (GsmCellLocation)mTelManCur.getCellLocation(); if (mGsmlocation == null) throw new Exception(\获取基站信息失败\ String operator = mTelManCur.getNetworkOperator(); int Mcc = Integer.parseInt(operator.substring(0, 3)); int Mnc = Integer.parseInt(operator.substring(3)); int Cid = mGsmlocation.getCid(); int Lac = mGsmlocation.getLac(); return cell; }

33

中国计量学院本科毕业设计(论文)

附录 B:

public class BaiduMaps extends MapActivity{

//创建地图

mBMapMan = new BMapManager(getApplication());

mBMapMan.init(\null);

super.initMapActivity(mBMapMan);

mMapView = (MapView) findViewById(R.id.bmapsView);//地图控件,不添加的话,就不用写。

mMapView.setBuiltInZoomControls(true); //设置启用内置的缩放控件 MapController mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放

GeoPoint point = new GeoPoint((int) (30.32504116 * 1E6),(int) (120.3665129 * 1E6)); //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point); //设置地图中心点 mMapController.setZoom(15); //设置地图zoom级别

res.add(getResources().getDrawable(R.drawable.icon_marka));

/*********************极大似然法定位*************************/ middata=getmiddata(mobiledata,originaldata);

int [][]a=xyarray(middata); double [][]b=arrayA(a); double[]c=arrayb(a,middata);

GeoPoint p1=exforlatlon(matrixcalculate(b,c));

//定位误差判断 double lat=0; double lon=0;

double min=middata[0][0]; double max=middata[0][0];

//遍历找纬度最大值最小值

for(int i=0;i

if(min>middata[i][0]) {

min=middata[i][0]; }

if(max

max=middata[i][0];

34

中国计量学院本科毕业设计(论文)

}

//偏差过大采用加权平均法

}

if(Math.abs(p1.getLatitudeE6()-middata[0][0]*1E6)>(max-min)*1E6){

for(int i=0;i

lat+=middata[i][0]*(middata.length-i); //System.out.println(\for(int i=0;i

lon+=middata[i][1]*(middata.length-i); //System.out.println(\

locgeopoint = new

GeoPoint((int)(lat*1E6/(middata.length*(middata.length+1)/2)),(int)(lon*1E6/(middata.length*(middata.length+1)/2)));

} else

locgeopoint=p1;

//System.out.println(locgeopoint);

/*********************WIFI辅助定位****************************/ WifiManager wifiMgr = (WifiManager)getSystemService(Context.WIFI_SERVICE);

if(wifiMgr.isWifiEnabled()){

wifilocdata=getwifidata(macs,macoriginaldata); //和纯基站定位结果进行加权平均 locgeopoint = new

GeoPoint((int)((locgeopoint.getLatitudeE6()/(1E6)+wifilocdata[0]*19)*1E6/20),(int)((locgeopoint.getLongitudeE6()/(1E6)+wifilocdata[1]*19)*1E6/20));

// 准备overlay 数据

int iSize=finaldata.length;

TextView wifiText = (TextView) findViewById(R.id.wifiText); String wifistring=wifilocdata[0]+\wifiText.setText(wifistring); }

//locgeopoint = new

GeoPoint((int)(wifilocdata[0]*1E6),(int)(wifilocdata[1]*1E6));

35

中国计量学院本科毕业设计(论文)

for(int i=0;i

double mLat=finaldata[i][0];

//System.out.println(i+\//System.out.println(i+\ double mLon=finaldata[i][1];

// 构造OverlayItem的三个参数依次为:item的位置,标题文本,文字片段 OverlayItem item= new OverlayItem(new GeoPoint((int) (mLat

* 1E6), (int) (mLon * 1E6)),\基站\

if(i==iSize-1){//最后定位点的标注 item.setMarker(res.get(7)); } else

GeoList.add(item);

item.setMarker(res.get(i%(res.size())));

}

// 添加ItemizedOverlay

Drawable marker =

getResources().getDrawable(R.drawable.icon_marka); //得到需要标在地图上的资源 mMapView.getOverlays().clear();

marker.setBounds(0, 0, marker.getIntrinsicWidth(),

marker.getIntrinsicHeight()); //为maker定义位置和边界 OverItemT overitem = new OverItemT(marker, this);

mMapView.getOverlays().add(overitem); //添加ItemizedOverlay实例

到mMapView

//计算距离函数

public double getdistance(int r) {

double d;

d=Math.pow(10,(r+4.2)/(-33)); return d; }

//矩阵计算函数 注意:此处计算结果为int型

}

36

中国计量学院本科毕业设计(论文)

public Point matrixcalculate(double[][] a1,double[] a2){

Point mylocationpoint=new Point(); Matrix A=new Matrix(a1);

Matrix B=new Matrix(a2,middata.length-1); Matrix C=A.transpose().times(A);//A的转置 * A

Matrix D=C.inverse().times(A.transpose());//(A的转置 * A)的逆矩阵 * (A的转置)

Matrix E=D.times(B);//(A的转置 * A)的逆矩阵 * (A的转置) * B double[][] resultarray=E.getArray(); mylocationpoint.x=(int) resultarray[0][0]; mylocationpoint.y=(int) resultarray[1][0];

return mylocationpoint;

}

//批量将经纬度数组转换为xy坐标数组

public int[][] xyarray(double[][] zhongjianshuju){

int[][] xy=new int[zhongjianshuju.length][2];//注:定义二维数组已经出错多处 for(int i=0;i

return xy;

{ }

}

//System.out.println(xy[i][0]+\for(int j=0;j<2;j++) {

xy[i][0]=exforxy(zhongjianshuju[i][0],zhongjianshuju[i][1]).x; xy[i][1]=exforxy(zhongjianshuju[i][0],zhongjianshuju[i][1]).y;

}

37

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Android系统的基站定位实现毕业论文(9)在线全文阅读。

基于Android系统的基站定位实现毕业论文(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1000204.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: