必备的环境配置:
1. JDK1.6;
2. android SDK1.5/1.6;
3. 高德给出的For Android的4.2包(MapApi.jar),里面支持应用开发的所有类库,全都封装在com.autonavi.mapapi当中。
为了使我们写的Demo能够支持最基本的网络开发,在开始编写代码之前,必须在AndroidManifest.xml中加入如下代码,以获得权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>
package com.autonavi.AutoNavi; import com.autonavi.mapapi.GeoPoint; import com.autonavi.mapapi.MapView; import com.autonavi.mapapi.PoiOverlay; import com.autonavi.mapapi.Route; import com.autonavi.AutoNavi.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; public class NaviDemoActivity extends Activity { private MapView mv; private EditText et; private Button searchbtn; private int mode = Route.BusDefault; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setInitView(); setListener(); } /* 注册控件 */ private void setInitView() { /* mapView控件 */ mv = (MapView) this.findViewById(R.id.mapView); } /* 注册控件的属性或事件 */ private void setListener() { /* mapView控件 */ mv.setBuiltInZoomControls(true); } OnClickListener clickListener = new OnClickListener() { @Override public void onClick(View v) { // 计算路径 } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (intent != null) { Bundle bundle = intent.getExtras(); if (bundle != null) { } } } }
当一编写完代码,兴冲冲地打开虚拟机,编译不通过!而且java代码上还打上了红色的波浪线。Ctrl+1看出错提示,貌似找不到项目的核心文件R.java。
乖乖,刚开始学习就把R.java文件给弄丢了,怎么办?!
经过多方面的排查,检查了JDK,SDK,最后面把目标锁定在了下面三项(这些都是初学者容易犯的错误):
1.检查jar包路径,看是否有多余或空链的jar包;
2.检查所有图片、XML文件大小写问题,一律改为小写;
3.检查图片文件夹中是否有“Thumnb.db”,删除;
哈哈...问题基本排除了,点击重新编译,R.java文件又乖乖地回来了...(后经查实,该文件只要引用的jar路径+xml小写命名正确,eclipse会自动生成。)
接着,又开始编译,但随之出现了下图:
悲催!刚才还暗自高兴,没想到只成功了一半...
这回仔细地查看了LogCat中的信息,提示android.view.inflateException,貌似是Activity在OnCreate的时候就开始的。
排除了R.java文件没有正确生成,main.xml里面的com.autonavi.mapapi.MapView与高德给的jar包中的类大小写匹配,此时又比对高德给出的Demo,发现此处的Activity必须extends高德自己编写的MapActivity...
So...
将class声明的地方改为:
public class NaviDemoActivity extends MapActivity implements RouteMessageHandler, OnGestureListener
紧接着增加对几个class文件的引用:
import com.autonavi.mapapi.RouteMessageHandler; import com.autonavi.mapapi.RouteOverlay;
最后,点击编译,大功告成!简单的Demo就展示在我们面前了,如下图: