您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第8章综合实训二基于Android的手机定位项目
《Android应用程序设计》综合实训二基于Android的手机定位项目李华忠梁永生刘涛主编2019年12月19日人民邮电出版社提纲8.1项目分析8.2项目设计8.3项目实施8.3.1我在哪儿8.3.2电子地图8.3.3历史记录8.3.4周边搜索提纲8.3.5线路规划8.3.6分享给好友8.4项目成果(见图8-6和图8-9)8.1项目分析无线通信行业的迅速发展,硬件技术和无线通信GPRS和CDMA网络的日趋成熟,手机的广泛应用,以及安卓手机的普及,使得手机定位我们的位置成为可能。用户无需其他的设备,只要拥有一部手机,就可以知道自己所在的位置。手机定位是指通过无线终端(手机)和无线网络配合,确定移动用户的实际位置信息(经/纬度坐标数据,包括三维数据),通过SMS、MMS、语音发给用户或以此为基础提供某种增值服务。8.1项目分析定位服务又叫做移动位置服务(LocationBasedService,LBS),是通过电信移动运营商的网络(如GSM网,CDMA网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务。8.1项目分析手机定位按照运营商提供服务的方式可以分为为两种:自有手机定位系统与公用定位服务。自有的定位系统主要是为企业和政府部门使用的定位系统,常用于对人员、事件、物品和车辆等的定位。这种定位方式广泛地用于公安执法、物流、长途车定位、紧急救援定位等等。公用手机定位服务一般有移动运营商来提供,这种手机的的定位有两种方式,一种是专线接入方式,另一种是短信告知方式。8.2项目设计系统总体目标是:通过此程序,用户可以用手机定位自己的位置,不用再担心到了一个陌生的城市迷路的问题。其中用户还能通过使用这个软件来查找特定的位置,规划去特定地方的路线,查看去过的地方,超出某个方位可以得到通知,将自己的信息共分享给好友。8.2项目设计另外由于手机软件的特殊性,存在一定的自然条件的限制,除了手机要保持网络畅通之外,该应用还应该有以下几个功能:(1)简单、有好的用户界面,保证用户直接上手便可以使用;(2)操作简单,人性化,易用性高;(3)支持Internet连接,保证定位的准确;(4)用户的历史记录使用SQLite进行存储,方便用户以后查看;(5)向PC端开发靠拢,为以后PC与手机互联做准备,让将来人们能在PC端看到用户所在位置奠定基础。8.2项目设计“在哪儿”应用为给用户提供全方位的位置支持,主要分为“我在哪儿”、“电子地图”、“历史记录”、“周边搜索”、“线路规划”、“分享给好友”功能,如图8-1所示。图8-1系统架构8.2项目设计图8-1中“我在哪儿”主要供用户对自己目前所在位置进行定位;电子地图能够为用户查询想去的地方的位置并在地图上显示出来;历史记录为用户记录曾经到达的地方;周围搜索供用户查询自己所在位置周围的餐厅,学校,ATM机和公园;线路规划为用户规划如何从现在的位置到达目的地,分享给好友帮助用户通过短信将信息分享给好友。8.2项目设计图8-2系统详细架构图系统详细架构如图8-2所示。8.3项目实施开发架构关注软件开发环境下实际模块的组织。软件打包成小的程序块(程序库或子系统),它们可以由一位或几位开发人员来开发。子系统可以组织成分层结构,每个层为上一层提供良好定义的接口。8.3项目实施当前系统的文件结构图8-3如下所示:图8-3系统文件结构8.3项目实施其中src文件夹中有源程序包com.where.am_i,其中包含本系统中所有用到的类如图8-4,下面一一说明:图8-4源程序包文件8.3项目实施Where_am_iActivity.java是应用的主程序;LocationActivity.java是实现“我在哪儿”功能的文件;EmapActivity是实现“电子地图”功能的文件;HistoryActivity.java,NewHistory.java,SettingActivity.java,ShowTrack.java,Track.java,HelpsActivity.java等是实现“历史记录”功能的文件;SearchActivity.java,MyGoogleBean.java,PlaceDetailActivity.java,ResultListAdapter.java,Tools.java是实现“周边搜索”功能的文件;WayActivity是实现“线路规划”功能的文件;DbAdapter.java,LocateDbAdapter.java,TrackDbAdapter.java是实现数据库功能的文件;MyPositionItemizedOverlay.java,LocateOverLay.java是实现在地图上进行标记功能的文件;8.3项目实施而res中为程序的页面和图片资源,res/layout中为页面设置文件,如图8-5所示:图8-5系统页面文件8.3项目实施main.xml----首页wherelayout.xml-----我在哪儿页面maplayout.xml------电子地图页面history_main.xml------历史记录主页面setting.xml--------历史记录个人设置页面show_track.xml--------展示历史记录页面track_row.xml--------展示历史记录边框searchlayout.xml------周边搜索页面placedetail.xml-------店家详细信息页面waylayout.xml------线路规划页面sharelayout.xml------分享给好友页面opinionlayout.xml-------意见反馈页面aboutuslayout.xml-------关于我们页面8.3项目实施8.3.1我在哪儿“我在哪儿”功能实现对手机位置的定位,用户可以通过点击首页的“我在哪儿”按钮,得到自己的位置,并且可以通过放大和缩小地图来查看周边的环境。该功能通过LocationActivity.java实现。通过locate()方法定位。关键源代码如下。publicclassLocationActivityextendsMapActivity//从MapActivity基类派生子类{publicvoidonCreate(BundlesavedInstanceState)//子类重写基类onCreate方法{super.onCreate(savedInstanceState);//基类调用onCreate方法/*加载wherelayout。xmlLayout*/setContentView(R.layout.wherelayout);//设置屏幕布局/*实例化相关视图组件*/linearLayout=(LinearLayout)findViewById(R.id.zoomview);//获得线性布局对象mapView=(MapView)findViewById(R.id.mapview);//获得MapView对象mZoom=(ZoomControls)mapView.getZoomControls();//获得ZoomControls对象linearLayout.addView(mZoom);//将控件对象添加到线性布局容器/*为当前所在点添加图层标示*//*从MapView中获得MapController对象,调用locate()方法完成定位*/MapControllercontroller=mapView.getController();//获得MapController对象GeoPointpoint=locate(controller);//获得GeoPoint对象信息mapOverlays=mapView.getOverlays();/*获得该图标对象Drawable*/drawable=this.getResources().getDrawable(R.drawable.androidmarker);itemizedOverlay=newMyPositionItemizedOverlay(drawable);OverlayItemoverlayitem=newOverlayItem(point,,);itemizedOverlay.addOverlay(overlayitem);mapOverlays.add(itemizedOverlay);}/*获得当前经纬度信息,通过MapController定位到该点*/privateGeoPointlocate(MapControllercontroller){locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);Stringprovider=LocationManager.GPS_PROVIDER;Locationlocation=locationManager.getLastKnownLocation(provider);doublelat=0.0;doublelng=0.0;if(location!=null){lat=location.getLatitude();lng=location.getLongitude();}else{lat=24.57;lng=121.13;}GeoPointpoint=newGeoPoint((int)(lat*1E6),(int)(lng*1E6));controller.animateTo(point);returnpoint;}}}8.3项目实施8.3.2电子地图电子地图功能提供给用户查找位置,用户可以通过输入地址对该位置进行定位,并可以通过放大和缩小地图查看位置和周围环境。该功能通过EmapActivity.java文件实现。关键源代码如下。publicclassEmapActivityextendsMapActivity//从MapActivity基类派生子类EmapActivity{/*获得当前经纬度信息,通过MapController定位到该点*/privatevoidlocate(GeoPointpoint){//实现私有方法locatecontroller=mapView.getController();//获得MapController对象controller.animateTo(point);drawable=this.getResources().getDrawable(R.drawable.androidmarker);mapOverlays=mapView.getOverlays();itemizedOverlay=newMyPositionItemizedOverlay(drawable);OverlayItemoverlayitem=newOverlayItem(point,,);itemizedOverlay.addOverlay(overlayitem);mapOverlays.add(itemizedOverlay);}publicbooleanonCreateOptionsMenu(Menumenu){//重写菜单onCreateOptionsMenu方法menu.add(0,1,0,显示输入查询地址对话框);returntrue;}publicbooleanonOptionsItemSelected(MenuItemitem){//重写onOptionsItemSelected方法switch(item.getItemId()){case1:customDialog();returntrue;}returnfalse;}//根据地址获得GeoPoint对象privateGeoPointgetGeoByAddress(StringstrSearchAddress){GeoPointgp=null;try{
本文标题:第8章综合实训二基于Android的手机定位项目
链接地址:https://www.777doc.com/doc-2112967 .html