基于安卓学校地图开发与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训报告
题目名称:中原工学院校园地图开发
——导航模块的实现院系名称:网络工程
班级:网络131班
学号:************
学生姓名:***
****:**
2016年06月
目录
摘要 (3)
Abstract (4)
第1章绪论 (6)
1.1研究背景 (6)
1.2研究意义 (6)
1.3 主要研究内容 (6)
1.4实训报告结构 (7)
第2章实训的相关技术与工具 (8)
2.1 Android简介 (8)
2.2 Android 架构 (8)
2.3 Android SDK (10)
2.4开发环境及平台搭建 (10)
2.4.1 JDK的安装和Java环境变量的设置 (10)
2.4.2 安装Eclipse (12)
2.4.3安装Android SDK (12)
2.4.4安装配置ADT及运行Eclipse (13)
第3章功能实现 (14)
3.1申请APIKEY (14)
3.2 下载开发包 (14)
3.3 配置工程 (15)
3.4 添加用户KEY (16)
3.5 地图实现 (17)
3.5.1 地图实现展示 (17)
3.5.2 地图实现代码 (18)
3.6 导航功能 (20)
3.6.1 导航功能简介..........................................................................错误!未定义书签。
3.6.2 导航功能展示 (20)
3.6.3 导航实现代码展示 (23)
第4章实训心得与体会 (34)
参考文献 (35)
摘要
随着智能手机的快速普及,智能手机操作系统市场风生水起。
为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。
因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。
在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。
这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。
Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。
因此,对于软件从业人员来说,Android平台具有无限的吸引力。
高德Map 作为最先推出的网上地图之一,各种数据信息最为全面和准确,本系统通过高德MapApi设计一个能够实现定位、导航和交通信息发布等等功能的在线导航软件。
在Android 设备上具有良好的用户界面、响应速度和用户体验。
关键词智能手机Android 高德Map 导航应用
Abstract
With the rapid proliferation of smart phones, smart phone operating system market, wind and water. In order for smart phone users to check the Internet anytime, anywhere services provided an efficient way to expand the function of the system will be applied to the mobile phone terminal, the mobile phone to Internet access via mobile networks, and variety of Web sites and process business. Therefore, the smart phone applications and the need for the service will have broad prospects for development.
In today's smart phone system when disputes warlords, 2008, Google introduced a smart phone called the Android open source operating system, which uses Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, the system It has a good open-source nature of the expansion of. The software includes the operating system, user interface and applications that need to work smart phones all the software. Android's biggest feature is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software professionals is, Android platform has unlimited appeal.
Gaode Map as the first online map, all kinds of data information is the most comprehensive and accurate, this system through the Gaode Map Api design one to achieve a positioning, navigation and traffic information and more features for online navigation software. In the Android device is a good user interface, speed of response, and user experience.
Keywords :Smartphone Android Gaode Map Navigation
第1章绪论
1.1研究背景
我校每年都会招收一大批新生,而且每年都会有校外人员来到我们中原工学院参观。
这些人对我们中原工学院不是很熟悉,他们需要花时间去熟悉我们的学校,特别是新生,他们将会在这里生活学习四年或者更久,他们所需要熟悉了解的东西比一般的人都要多很多,同时所需要花的时间也会多很多,有的时候还不是很方便。
随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
采用计算机进行校园导航已成为衡量校园数字化的重要标志。
校园导航效率的好坏对于来校参观的客人和学校管理者来说都至关重要,在很大程度上影响着校园的数字化建设和学校的影响力。
因此,本次实训研究的校园导航系统具有一定的使用价值和现实意义。
1.2研究意义
现在的大学占地面积越来越大,建筑物越来越多,功能越来越多样,校内的道路也是纵横交错,校园导航系统可以帮助用户更加快速的了解学校的道路,建筑布局及建筑物的基本信息等(用户主要是新生,家长,教职工,外来参观人员等),在帮助用户了解小小道路、实现导航的功能的基础上,校园导航系统还录入了学校各个景点建筑的相关信息,以供使用者更方便快捷的找到目的地。
1.3 主要研究内容
本次实训主要研究关于我校基于安卓的电子地图开发,测试以及使用并且生成使用分析报告和实训报告,本人负责该项目的导航模块,其主旨是为了方便广大师生尤其是新生的不认识学校各种建筑物而产生迷路的情况。
1.4实训报告结构
第一章主要说明关于我校地图开发的意义与实际需求,第二章说明开发所要用到的工具以及安卓方面的相关知识,第三章主要说明百度API的应用以及实现的功能模块,第四章是实训的一些总结和体会。
第2章实训的相关技术与工具
2.1 Android简介
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由Andy Rubin开发,主要支持手机。
它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。
底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。
2.2 Android 架构
现在我们的智能手机主要采用的系统有3类,一是苹果系统,二是安卓系统,三是塞班系统,本文主要在这里解析安卓系统。
Android是一种操作系统,是给予自由开放代码的,常用于移动终端中,比如智能手机等,它的开发是由谷歌公司和开放手机联盟共同完成的,在中国虽然应用很广,但是却还没有对其有统一的称呼。
Android的开发者是Andy Rubin。
在Android系统中,是形成了完整的系统架构的,下面我们将对其进行详细的分析。
Linux Kernel:在Android系统的实际操作中,首先需要的是Linux Kernel的支持,有了Linux Kernel的支持才能基本保证Android系统的功能实现,Linux Kernel由很多的驱动程序组成,这些驱动程序能够完成对硬件的驱动。
Android Runtime:Android系统的运行需要良好的运行环境,这就是Android Runtime,这里Android Runtime里的Core Libraries就相当于java的JDK,是运行android应用程序所需要的核心库,Dalvik Virtual Machine就相当于JVM,这是Android系统运行所需的特定的虚拟机。
Liberaries:Android系统的所有数据需要储存在特别的地方,这就是Liberaries。
Application Framework:这是Android系统的所有程序的框架,有了框架,系统中所有的程序才能够被放到里面,才能保证系统程序的正常运行。
Application:这个就是我们开发的Application了。
系统架构图
APK是Android Package的缩写,即Android安装包(anapk)。
APK是类似Symbian Sis或Sisx的文件格式。
在进行安装和执行的过程中,主要是通过APK 文件,然后直接传输到Android模拟器中。
在Android系统中,Android sdk编译的安装文件需要在apk中完成格式的转换,是将zip格式的文件转换成apk格式的文件,然后才能完成被unzip解压到Dex中,Dex是Dalvik VM executes 的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
在Android系统的软件开发中,开发人员可通过访问API框架来完成核心应用程序的使用,在这个框架中,所有的应用程序需要进行简化后的组件重用,所有基于这个框架开发出来的应用程序都需要有一个功能块,这个功能块是可以不遵循框架的安全性限制的,Android系统的API框架,可以运用可替换的程序,即实现程序的重用机制,并且在每一个程序的后面,都有一系列发挥服务功效的小系统,下面将重点分析这些小系统:
1、用来搭建应用程序的视图(Views),这种试图是可实现丰富的可扩展的功效,试图又由一些基本的要素促成,包括表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web 浏览器。
2、可以兼容应用程序的内容提供器(Content Providers),在这个系统中可以在访问一个程序的时候,再访问另一个程序。
3、能够实现非代码的资源访问的资源管理器(Resource Manager),主要由字符、图形和布局文件(layout files )组成。
4、通知管理器(Notification Manager),在Android系统中通过这个小系统能够实现自定义的提示信息的显示。
5、活动管理器(Activity Manager),这个小系统是能够完成导航功能的定退的,用来管理程序生命周期的
2.3 Android SDK
SDK:(software development kit)软件开发工具包。
在特定的软件开发过程中,软件开发师会用软件开发工具包进行特定的开发工作,比如在搭建软件的框架或硬件的平台的时候,都需要运用。
在安卓系统中,软件开发工具包就是Android SDK。
在Android系统中,有一个SharedPreferences类的平台,这个平台能够提供软件配置参数的保存,使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下。
所谓的SharedPreferences,是特指在Android系统中,用来存储信息的特定机制。
最重要的是在Android系统中,开放的服务是不需要收费的,开发者提供第三方平台的更大的自由度,开发人员不需要进行较高费用的支出,就可以进行软件的开发。
2.4开发环境及平台搭建
2.4.1 JDK的安装和Java环境变量的设置
JDK下载地址
/technetwork/java/javase/downloads/index.html
JDK(Java Development Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。
JAVA_HOME:
JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。
PATH:
PATH属性已存在,可直接编辑。
作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin。
CLASSPATH
用于编译时JAVA类的路径,注意这里设置的是两个值,(.;)表示的是JVM先搜索当前目录。
其值为:.;%JAVA_HOME%\lib\tools.jar。
配置完毕后,通过cmd运行以下命令:java -version 如果出现返回信息,则设置成功。
2.4.2 安装Eclipse
Eclipse下载地址:
Eclipse下载地址:/downloads/? (选择Eclipse Standard 版本即可)。
Eclipse为Java及Android开发的IDE。
Eclipse不需要安装,把解压包解压后,剪切eclipse文件夹到你想安装的地方,打开时设置你的工作目录即可。
2.4.3安装Android SDK
Android SDK下载地址:/sdk/index.html。
Andorid SDK为Android管理开发包工具,提供了Android各级平台的开发包和工具。
注意,因为我们是独立安装,不是一体化(集成系列工具)所以需要单独
下载SDK。
2.4.4安装配置ADT及运行Eclipse
启动Eclipse,点击Help菜单-> Install New Software…?,点击?Add…?,输入地址:/android/eclipse/。
配置ADT
选择Window -> Preferences ,在弹出面板中就会看到Android设置项,填上安装的SDK路径,则会出现刚才在SDK中安装的各平台包,按OK则完成配置。
此时Android的环境就搭建完毕,可以进行Android项目的开发了。
第3章功能实现
3.1申请APIKEY
申请高德地图的一个key,有了这个key我们的高德地图才可以正确用起来。
至于怎么申请高德地图的key,其实很简单,这里我大概说一下步骤:打开网页,注册一个高德地图API的一个账号,注册成功之后,会提示你成为开发者,成为开发者之后就能获取一个key了,获取key需要填写的内容,可以在高德地图API官网上有,仔细阅读就好了,很简单的。
3.2 下载开发包
下载我们开发使用的包,具体需要下载哪些,可以查看配置工程里面,都有写,在相关下载那里下载这些包。
3D地图包解压后得到:3D地图显示包“AMap_3DMap_VX.X.X_时间.jar”和库文件夹(包含armeabi、arm64-v8a等库文件)。
2D地图包解压后得到:2D地图显示包“AMap_2DMap_VX.X.X_时间.jar ”
搜索包解压后得到:“AMap_Search__VX.X.X_时间.jar ”。
3.3 配置工程
根据高德地图开发官网的详细步骤,我们可以一步步的在Eclipse里来配置开发地图所需要的各种环境要求,以满足我们后期的开发与实现。
把这些包都添加到我们自己新建的Android工程里面去,然后给我们的工程分配一些权限,以及填入自己的key。
3.4 添加用户KEY
在工程的“AndroidManifest.xml ”文件如下代码中添加您的用户Key。
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="请输入您的用户Key"/>
……
</application>
添加权限
在工程的“AndroidManifest.xml ”文件中进行添加,请直接拷贝。
//地图包、搜索包需要的基础权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
//定位包、导航包需要的额外权限(注:基础权限也需要)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission
android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />配置工作结束
3.5 地图实现
3.5.1 地图实现展示
3.5.2 地图实现代码
高德的Hello AMap完成地图显示功能,是地图应用的开始。
所以开发地图的第一步骤就是要实现Hello AMap的地图显示。
前期准备工作已经基本上完成了,接下来就是使用高德地图API能实现自己的地图,第一个功能就是实现显示地图
下面是我的ShowMapActivity的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- 引入布局文件-->
<com.amap.api.maps.MapView
xmlns:android="/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
然后就是实现我的ShowMapActivity(基本上都是官方文档中的)
package com.oysd.activity;
import android.app.Activity;
import android.os.Bundle;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.oysd.ouyangmap.R;
import com.oysd.ouyangmap.R.id;
import yout;
public class ShowMapActivity extends Activity {
private MapView mapView;
private AMap aMap
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(yout.activity_showmap);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);//必须要写
init();
}
/**
* 初始化AMap对象
*/
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
}
/**
* 方法必须重写
*/
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
/**
* 方法必须重写
*/
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
/**
* 方法必须重写
*/
@Override
protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
/**
* 方法必须重写
*/
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
第一个功能是非常简单的,仅仅就是实现了显示地图.
3.6 导航功能
3.6.1 导航功能简介
手机导航就是通过导航手机的导航功能,把你从目前所在的地方带到另一个你想要到达的地方。
手机导航就是卫星手机导航,它与手机电子地图的区别就在于,它能够告诉你在地图中所在的位置,以及你要去的那个地方在地图中的位置,并且能够在你所在位置和目的地之间选择最佳路线,并在行进过程中的为你提示左转还是右转,这就是所谓的导航。
3.6.2 导航功能展示
第一张是我校北苑宾馆到我校体育馆的导航路径,因为新生入学前可能会在宾馆入住,等待开学报道,而且我校报道地点一般设置在体育馆附近和操场上,所以我就把导航的一条设置为这条路径,供新学生参考。
第二张和第三张是本人随手定义的导航路径,仅供参考。
3.6.3 导航实现代码展示
public class NavigationDemoActivity extends MapActivity { private String mMapKey = "注册自己的key";
private EditText destinationEditText = null;
private Button startNaviButton = null;
private MapView mapView = null;
private BMapManager mMapManager = null;
private MyLocationOverlay myLocationOverlay = null;
//onResume时注册此listener,onPause时需要Remove,注意此listener不是Android自带的,是百度API中的
private LocationListener locationListener;
private MKSearch searchModel;
GeoPoint pt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(yout.main);
destinationEditText = (EditText) this.findViewById(R.id.et_destinati on);
startNaviButton = (Button) this.findViewById(R.id.btn_navi);
mMapManager = new BMapManager(getApplication());
mMapManager.init(mMapKey, new MyGeneralListener());
super.initMapActivity(mMapManager);
mapView = (MapView) this.findViewById(R.id.bmapsView);
//设置启用内置的缩放控件
mapView.setBuiltInZoomControls(true);
//设置在缩放动画过程中也显示overlay,默认为不绘制
// mapView.setDrawOverlayWhenZooming(true);
//获取当前位置层
myLocationOverlay = new MyLocationOverlay(this, mapView);
//将当前位置的层添加到地图底层中
mapView.getOverlays().add(myLocationOverlay);
// 注册定位事件
locationListener = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
if (location != null){
//生成GEO类型坐标并在地图上定位到该坐标标示的地点
pt = new GeoPoint((int)(location. getLatitude()*1e6),
(int)(location.ge tLongitude()*1e6));
// System.out.println("---"+locatio n.getLatitude() +":"+location.getLongitude());
mapView.getController().animateTo (pt);
}
}
};
//初始化搜索模块
searchModel = new MKSearch();
//设置路线策略为最短距离
searchModel.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
searchModel.init(mMapManager, new MKSearchListener() {
//获取驾车路线回调方法
@Override
public void onGetDrivingRouteResult(MKDrivingRoute Result res, int error) {
// 错误号可参考MKEvent中的定义
if (error != 0 || res == null) {
Toast.makeText(NavigationDemoActi vity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
return;
}
RouteOverlay routeOverlay = new RouteOverl ay(NavigationDemoActivity.this, mapView);
// 此处仅展示一个方案作为示例
MKRoute route = res.getPlan(0).getRoute (0);
int distanceM = route.getDistance();
String distanceKm = String.valueOf(distanc eM / 1000) +"."+String.valueOf(distanceM % 1000);
System.out.println("距离:"+distanceKm+"公里---节点数量:"+route.getNumSteps());
for (int i = 0; i < route.getNumSteps(); i ++) {
MKStep step = route.getStep(i);
System.out.println("节点信息:"+st ep.getContent());
}
routeOverlay.setData(route);
mapView.getOverlays().clear();
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
mapView.getController().animateTo(res.getStart ().pt);
}
//以下两种方式和上面的驾车方案实现方法一样
@Override
public void onGetWalkingRouteResult(MKWalkingRoute Result res, int error) {
//获取步行路线
}
@Override
public void onGetTransitRouteResult(MKTransitRoute Result arg0, int arg1) {
//获取公交线路
}
@Override
public void onGetBusDetailResult(MKBusLineResult a rg0, int arg1) {
}
@Override
public void onGetAddrResult(MKAddrInfo arg0, int a rg1) {
}
@Override
public void onGetSuggestionResult(MKSuggestionResu lt arg0, int arg1) {
}
@Override
public void onGetPoiResult(MKPoiResult arg0, int a rg1, int arg2) {
}
});
startNaviButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String destination = destinationEditText.g etText().toString();
//设置起始地(当前位置)
MKPlanNode startNode = new MKPlanNode();
startNode.pt = pt;
//设置目的地
MKPlanNode endNode = new MKPlanNode();
= destination;
//展开搜索的城市
String city = getResources().getString(R.s tring.beijing);
// System.out.println("----"+city+"---"+desti nation+"---"+pt);
searchModel.drivingSearch(city, startNode, city, endNode);
//步行路线
// searchModel.walkingSearch(city, startNode, city, endNode);
//公交路线
// searchModel.transitSearch(city, startNode, endNode);
}
});
}
@Override
protected void onResume() {
mMapManager.getLocationManager().requestLocationUpdates(lo cationListener);
myLocationOverlay.enableMyLocation();
myLocationOverlay.enableCompass(); // 打开指南针
mMapManager.start();
super.onResume();
}
@Override
protected void onPause() {
mMapManager.getLocationManager().removeUpdates(locationLis tener);
myLocationOverlay.disableMyLocation();//显示当前位置
myLocationOverlay.disableCompass(); // 关闭指南针
mMapManager.stop();
super.onPause();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyGeneralListener implements MKGeneralListener {
@Override
public void onGetNetworkState(int iError) {
Log.d("MyGeneralListener", "onGetNetworkSt ate error is "+ iError);
Toast.makeText(NavigationDemoActivity.thi s, "您的网络出错啦!",
Toast.LENGTH_LONG).show ();
}
@Override
public void onGetPermissionState(int iError) {
Log.d("MyGeneralListener", "onGetPermissio nState error is "+ iError);
if (iError == MKEvent.ERROR_PERMISSION_DE NIED) {
// 授权Key错误:
Toast.makeText(NavigationDemoActi vity.this,
"请在BMapApiDemoA pp.java文件输入正确的授权Key!",
Toast.LENGTH_LON G).show();
}
}
}
}
然后是布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Destination:" />
<EditText
android:id="@+id/et_destination"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> </LinearLayout>
<Button
android:id="@+id/btn_navi"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start navigate"/>
<com.baidu.mapapi.MapView
android:id="@+id/bmapsView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</LinearLayout>
AndroidMainifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="/apk/res/android"
package="com.ericssonlabs"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE "></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCAT ION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_ST ORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE "></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE "></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE "></uses-permission>
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:resizeable="true" android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="3"></uses-sdk>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".NavigationDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="UNCHER" /> </intent-filter>
</activity>
</application>
</manifest>
第4章实训心得与体会
随着时代的发展和计算机软硬件的发展,校园导航系统作为一个为教师、学生和其他外来参观人员提供方便的平台已经成为了很必要的一部分。
而且通过这次实训,让我懂得了什么叫做团队合作,在合作的基础上进行交流,分享自己的开发经验,让自己在不知不觉中成长了很多,而且在这尤其感谢老师对我们的教诲。
通过这次实训,让我提前感受到了工作的氛围,这对我以后的工作会有不小的帮助与提高,而且这次实训还让我学会了不少关于安卓开发的知识与技能,这些都是宝贵的经验,来帮助我在今后的道路上来取得更大的成就。
参考文献
《Android开发范例实战宝典》作者:武永亮《疯狂Android讲义》作者:李刚《Android的第一行代码》作者:郭霖百度文库
维基百科
CSDN论坛。