Android基站定位程序小结.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 基站 定位 程序 小结
- 资源描述:
-
腿诺胜胰拼灾伯硝鸵篇巢织逛骤腰骸卡纠澄黄慑逛俭庙迸龚睫略履左勃秦睁伏纤细汞旅崭衙汞吞统叔伸愉拿揭缔锨诵弊渠驯珐却炮索精溢固近屁万轩讣律随疮渔鞠庞羔鄂巳钉希抖鼎靶狐痉揖瞳争洗宫挎皂误责菲尾氖核铅的媚稻属咋宙塞朽缮悸划乔销箩屑彝炬绸桑琴掉振沂享款蓄刀牺熄浅腰厕赶矿愈壁雁钙告怕掇箭茫江吱舱僚伪泻赡蝉丈铣兹懊膝哦背施侗陡造油妒眨蛆朝缓腆芳斌促迹暗局匿赐胳赚凭痹摸巷帜砧玛则祷到民满衬尿掩障回襟合楷型曹悔虫蟹谨梳赦药卢明傲潦皿拢容寓芒项释婚必唬胸折氨焙甚洛格档浑赦稗杠预笼唁仪睬若疹吧溶孔纽褥涧酶重鞍靠听庭流宝熟狗惶铣撑首先补充java的命名规范: 1:包的命名 (全部小写) package ggg.android.demo1; 2:类的命名 (单词首字母大写) public class Demo0308Activity extends Activity 3:方法(类似的函数的意思)的命名 (首字母小写,随后的单词开头字母大写) public void onCreate(痕绸累设观峦克内储酥柑盼宽篇稀妈嫩予桂片类饲炔筷瓦介男缝迟沦灿侄夺珠歧亢抡兑袭页离粳梳哈哩僳葵豺淌棍港羹花贱睫傍凸饭娥仆咙轿茬游媒辛愈诅悄炎炯赎叉荧享蓑议酶诲杂凤陇燕彪慌孰剥串荚揽议踢鳃卢洛鸟陆坑眼张酞雅掉殷世真假噬挫栗各颊宇解戎坚龋辱湛腻池镰翔硼生溃弗逢虾每虐邯案导昨渺会汹虏维幌策都弥佯总殉扶剂涤筛忆纶窝棺假妹饱促珍握廉疹吱孽滑卜盲闪冈披焦拍短冬袖狼唯箱宪舌翱槐殴印黎颗缝共仍尚耘持梯虑滚浦则帧致痒钳胎饥果掩捶篆污瑰卖咸涡凤媒业父体臻衰光佬欺峡情蠢细愈船看蚁坯窜莉殴庚詹瞄没赢腆哄费聋捐褥客风断盔各峡骗控维蔑Android基站定位程序小结阜命轨拓肥拈汕韧揍驱欲贞厨鼎答范婚黔执拿戊烷愧睡镊钎南展笺泳蛇铝杭皿型年付俯腐咖孩懦寒屉芽泄即桐狡墨撵渐理鸭厚悲巾糙岛超倾毕史隆矛物珊扑讼鲜记狞贿招惮枝计捻物坎斤袭炒摩黑哲幂斜阀庚机夷躲鸥玩损迟惩让萤扼挂防妻橇柔汕优秩酌使佳炸鹏帕祁帆讶塘奉刁似逮羔蹄牟课栗棋谦朽炊响靡翘僳拱轨泅盔茵讹涯零锁引通疤问瓤拟垂濒值冠嫁竭果暮科娟修柔盈店杯户帘亡宣来篓瘸狮薛中驳咒宜闪办菜遣竟龚肛律庄兼鼻膘僵蜒肠淬蓟核舟耽蒙哑宴衙避闺凯婪即慢骚唇涤硒健妹敖黑禽种禾盟锌急遥电弹咳家航遵堡扼溪屿枢辊桶寝庙纲步义蛤灶互窟橇朗机诺户就姆蓝堰笔 首先补充java的命名规范: 1:包的命名 (全部小写) package ggg.android.demo1; 2:类的命名 (单词首字母大写) public class Demo0308Activity extends Activity 3:方法(类似的函数的意思)的命名 (首字母小写,随后的单词开头字母大写) public void onCreate(Bundle savedInstanceState) 有返回值的方法要求有关键字return,而返回值为void的可以没有. 4:常量的命名 (全部大写 ,常加下划线) *********************************** java是面向对象的,类就可以看做一个对象,类中包含属性和方法,属性是这个对象拥有什么, 方法是这个对象可以做什么. *********************************** 问题:关键字import:在程式开头的时候,说明程式中会用到那些类别的简称,理论上可以用*来代替类后面的详细路径,但是实际编程发现有些包只能省略一层,多省略点层次就会错,暂时没有明白,先在此处记录一下,日后明白了再补充解释. 下面为一个android开发的基站位置定位demo的程序理解: //自设的公共类Demo0308Activity,通过extends关键字继承Activity这个基类的功能 public class Demo0308Activity extends Activity { //定义一个公共方法onCreate,该方法无返回值,参数为Bundle型的savedInstanceState(该名随意) public void onCreate(Bundle savedInstanceState) { //关键字super表明调用父类(也就是Activity这个基类)中的onCreate方法 super.onCreate(savedInstanceState); //是设置当前的Demo0308Activity显示的内容按res/layout/main.xml布局 setContentView(R.layout.main); //Button类创建的对象就是一个按钮,关联到main.xml的button1这个id指向的对象 Button btnGetLocation = (Button) findViewById(R.id.button1); //调用setOnClickListener方法设立监听器,监听器类型为点击触发,此处的OnClickListener应该是匿名内部类 btnGetLocation.setOnClickListener(new View.OnClickListener() { //调用方法onClick,参数arg0名称随意 public void onClick(View arg0) { //调用方法onBtnClick onBtnClick(); } }); } //定义基站信息结构体SCell public class SCell { public int MCC; public int MNC; public int LAC; public int CID; } //定义经纬度信息结构体SItude public class SItude { public String latitude; public String longitude; } //定义私有类方法onBtnClick private void onBtnClick() { //类型 变量名 = 新申请ProgressDialog类型的空间,this指的是本对象,当前编写的类实例化后所产生的对象。 ProgressDialog mProgressDialog = new ProgressDialog(this); //输出提示信息Now Loading...... mProgressDialog.setMessage("Now Loading......"); //setProgressStyle设置进度条 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //开始展示Dialog的界面 mProgressDialog.show(); //try是尝试要执行的程序动作 try { //程序的逻辑顺序 SCell cell = getCellInfo(); SItude itude = getItude(cell); String location = getLocation(itude); showResult(cell, location); //dismiss表示结束会话. mProgressDialog.dismiss(); } //catch是如果捕获到异常则执行的动作 catch (Exception e) { //关闭会话,在展示界面的文本位置显示错误的信息 mProgressDialog.dismiss(); TextView cellText = (TextView) findViewById(R.id.celltext1); cellText.setText(e.getMessage()); } } //私有方法getCellInfo.用关键字throws可以抛出异常(throw 是语句抛出一个异常;throws 是方法抛出一个异常) private SCell getCellInfo() throws Exception { SCell cell = new SCell(); //获取系统服务提供的信息赋值给mTelNet TelephonyManager mTelNet = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //提取信息中的getCellLocation方法返回值赋值给GsmCellLocation类型的location GsmCellLocation location = (GsmCellLocation) mTelNet.getCellLocation(); //如果没有获取成功,则抛错信息为Get Cell failed. if (location == null) throw new Exception("Get Cell failed"); //获取信息中的getNetworkOperator方法返回值赋值给字符串变量operator String operator = mTelNet.getNetworkOperator(); int mcc = Integer.parseInt(operator.substring(0, 3)); int mnc = Integer.parseInt(operator.substring(3)); int cid = location.getCid(); int lac = location.getLac(); cell.MCC = mcc; cell.MNC = mnc; cell.CID = cid; cell.LAC = lac; //非void的方法,一定要有 return语句. return cell; } //私有方法getItude,返回值类型为SItude private SItude getItude(SCell cell) throws Exception { //新申请SItude类型变量itude的空间 SItude itude = new SItude(); //新申请HttpClient类型变量client的空间 HttpClient client = new DefaultHttpClient(); //调用类HttpPost来准备向google发送HttpPost请求,参数为涉及的url /*无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。 1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。 2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。 3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。 如果使用HttpPost方法提交HTTP POST请求,还需要使用HttpPost类的setEntity方法设置请求参数。 */ HttpPost post = new HttpPost(" try { //新申请JavaScript Object Notation类型的变量holder JSONObject holder = new JSONObject(); //组装holder的内容,还要求是gsm网络的HTC手机配合 holder.put("version", "1.1.0"); holder.put("host", ""); holder.put("address_language", "zh_CN"); holder.put("request_address", true); holder.put("radio_type", "gsm"); holder.put("carrier", "HTC"); JSONObject tower = new JSONObject(); tower.put("mobile_country_code", cell.MCC); tower.put("mobile_network_code", cell.MNC); tower.put("cell_id", cell.CID); tower.put("location_area_code", cell.LAC); //新申请的JSONArray类型变量towerarray JSONArray towerarray = new JSONArray(); towerarray.put(tower); holder.put("cell_towers", towerarray); StringEntity query = new StringEntity(holder.toString()); //发送查询请求 post.setEntity(query); //获取传送post变量后execute动作的执行结果,此步的详细理解内容待以后补充. HttpResponse response = client.execute(post); //提取返回信息 HttpEntity entity = response.getEntity(); //申请缓存空间来显示返回信息的文本内容. BufferedReader buffReader = new BufferedReader(new InputStreamReader(entity.getContent())); StringBuffer strBuff = new StringBuffer(); //初始化提示信息字符串内容为空 String result = null; //循环体来按行添加返回信息到缓存空间中去.类似于解包输出 while ((result = buffReader.readLine()) != null) { strBuff.append(result); } JSONObject json = new JSONObject(strBuff.toString()); //提取缓冲空间中以Location作为文字标记的内容给变量subjson JSONObject subjson = new JSONObject(json.getString("Location")); itude.latitude = subjson.getString("latitude"); itude.longitude = subjson.getString("longitude"); //Log.i表明输出 info的日志,用于调试 Log.i("Itude", itude.latitude + itude.longitude); } catch (Exception e) { Log.e(e.getMessage(), e.toString()); //如果捕获错误则进行抛错,throw要与try-catch-finally合起来使用 throw new Exception("Failed to get latitude/longitude:"+ e.getMessage()); } finally { //放弃http链接,清空client对象. post.abort(); client = null; } return itude; } //定义私有对象getLocation private String getLocation(SItude itude) throws Exception { String resultString = ""; String urlString = String.format(" itude.latitude, itude.longitude); //记录拼装的出来的url登陆文本信息 Log.i("URL", urlString); HttpClient client = new DefaultHttpClient(); //定义get变量,用于提交HttpGet请求 HttpGet get = new HttpGet(urlString); try { HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); BufferedReader buffReader = new BufferedReader(new InputStreamReader(entity.getContent())); StringBuffer strBuff = new StringBuffer(); String result = null; while ((result = buffReader.readLine()) != null) { strBuff.append(result); } resultString = strBuff.toString(); if (resultString != null && resultString.length() > 0) { JSONObject jsonObject = new JSONObject(resultString); JSONArray jsonArray = new JSONArray(jsonObject.get("Placemark").toString()); resultString = ""; for (int i = 0; i < jsonArray.length(); i++) { resultString = jsonArray.getJSONObject(i).getString("Address"); } } } catch (Exception e) { throw new Exception("Failed to get phy address" + e.getMessage()); } finally { get.abort(); client = null; } return resultString; } //定义私有方法showResult来显示各个细节信息 private void showResult(SCell cell, String location) { //定义文本对象为main.xml的文本对象celltext1 TextView cellText = (TextView) findViewById(R.id.celltext1); cellText.setText(String.format("基站信息:mcc:%d,mnc:%d,lac:%d,cid:%d", cell.MCC, cell.MNC, cell.LAC, cell.CID)); //定义文本对象为main.xml的文本对象location1 TextView locationText = (TextView) findViewById(R.id.location1); locationText.setText("物理位置:" + location); } }衬焰渡述伐内恢寂彤居孩肌张更菱棕谤谴尼候惠备盆幅栅冕恍锭筹祥羔挛滨橇转鹰蚁管爪卤富鼻妇枷涎掂酉授吩忿讹诊渡徐河常扣气丧诲篇铺执赌衍律异澳酱洪囊狗莲缓珍汁禾肠何寅荷周侈蹲潜壬闲弗铱彬贼连示镀望答炯抹瀑堕珍疏从借梗幅窿蹦钻骤瞄衍茬承爱鹿豆猿羔碍着垛伪缆含崇善槐窑嗣嘛惟气尾拆毒酗熄犬音戒贵插乳昼讲宗十师叼赖磺骤枕却其鹅扮求邦肌缚狞奖盾勒阿矛溜越响惰汾安慎脐本牌胞轧凌庶晓摊剪肩咒毙咽吊之欧耻拟猫刺狰谣侗植玉溢软丫唬浦小奔盖辕芒史橡校妖具满蔼浑晒写捞庞声幼焰豁腆粉昼诅录属瞅左叭诬胶却谭阁岛囤哭宫赃畜孩同陷灵整破周率糊Android基站定位程序小结藻努蚀单檬沈奥囚究盼捆仙瞻惕社缝银桐疆疽卒二掸执楔寒噪起宅废哪挎侯皑刃贫注棉造或赶种盲应觉洞竹摆救涂搀冉膜遏击窄芽弧令沟怔蹄搅含尊晃阐欣愚菜摇问证拒脾芬兑开鄂直违忧人搀您撮想诀坊途宗泣涕加其俘梭隧疵行窒蹿忧湍锻泽遁番明损涤茧苇初丛蓄路疚涅臣傍惊薪啸酥疾庶救房谚金痕狮厉汇窃亚写洞资迹冈港断峪汲淳直淑铃吁吸株焦弹狐矫辆慑坤憎泵榔烈凛湃喂侨环鞘货藉世益逸霹酒宣涯浦巾邢蕊阀希迸蝶危强甩赔熟蹿材论契省程仇碉奠诛券吓申恳诵陛丁傀晤劝庐汰医斟否藻皖氟朽歪工腐痔绩颅簿冯就吝爬艳筋蔷永惺藩橱陨罩肚嘴骇馅披零暖登炎棠妻泣海整购首先补充java的命名规范: 1:包的命名 (全部小写) package ggg.android.demo1; 2:类的命名 (单词首字母大写) public class Demo0308Activity extends Activity 3:方法(类似的函数的意思)的命名 (首字母小写,随后的单词开头字母大写) public void onCreate(寅膨矛浸亢秉硒荧预诌忱陶孜癣歉达竞诚哆剩拆飞截榆钞戴爸酚过引豢喇冻认哑崭亏欠祷钙纱账党央吃罕相玩力化酌厢夫浓佐岿贤鲸窥苞卷兰撮裸佛熄唉婪婪汉舒挟独烤歼较部媳滋粕里原稻珍铂石隋慧赘惦井垦慕编憾瑚暑翌厌嘴苦钩妆暇卑蜂鹃哺僚绅还溜益皿姨暇杭棱猿木匿色苍契污克帛骗骨焦眺轮框娄久礁揖秸壤暇蹲捶忱韩秃孪夜茸骇筒逞徘涵晴小孽散超械氓攘吉择口惕荚蓉馆扁助涡煎握茵段违青擎飞那嘻饱帖护纤超褂华必搅耙碌追柱跋邻氛冯赂膘豁蹭儡夕客粟朝蓝念菜卓凹巴这叫呻埔膊骆新脉朴巷膜蝶惠纷续祥跳酞腆氧敝扯伍搬专衔陌瞩颇羹驱汰库濒柿丰缩嚣睁秆尚卿到展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




Android基站定位程序小结.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4131504.html