第一次使用Map,感觉麻烦,但是没有办法,谁让你使用别人的东西呢??只好慢慢来。下面说一下使用模拟器完成初探Map的旅程。首先声明,这是在ubuntu下完成的。
第一步,找到debug.keystore文件
在用户目录下,进行下面操作,可以看到该文件。
ls -al // 列出所有文件,包括隐藏文件 cd .android
第二步,复制该文件到其它目录
不这样做的话,在第三步指定debug.keystore路径为/home/mark/.android/debug.keystore会报错。
cp debug.keystore /home/mark/myBack
第三步,得到认证指纹
执行下面命令,可以得到认证指纹Certificate fingerprint (MD5),类似与×:×:x形式。keytool是jdk自带工具,如果你配置环境变量正确的话,执行下面命令不会有任何问题。
cd // 回到用户目录 keytool -list -alias androiddebugkey -keystore "/home/mark/myBack/debug.keystore" -storepass android -keypass android
第四步,申请apiKey
网址:http://code.google.com/intl/zh-CN/android/maps-api-signup.html
复制上面的认证指纹,点击Generate API Key即可获得apiKey
第五步,创建模拟器
选择Target :Google APIs (Google inc.) -API Level 7,你也可以选择其他Level。
第六步,新建android项目,写main.xml文件
选择上面创建的模拟器,否则有异常。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="0d1eIkqj2C_g-zOsWoeRZXwKWPlHifb3bXnD3FA" /> </RelativeLayout>
第七步,补充manifest.xml文件
添加权限、库文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mark.zhang" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MapViewActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="com.google.android.maps"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> </application> </manifest>
第八步,写activity代码
继承MapActivity,该代码主要是在用户点击上、下、左、右四个按键时弹出Toast。没什么其它功能。
package mark.zhang; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.Toast; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; public class MapViewActivity extends MapActivity { private final OnKeyListener l = new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // ACTION_UP == 1 // ACTION_MULTIPLE == 2 // ACTION_DOWN == 0 // 是否有键按下 if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: Toast.makeText(MapViewActivity.this, "UP", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_DPAD_DOWN: Toast.makeText(MapViewActivity.this, "DOWN", Toast.LENGTH_SHORT).show(); System.out.println("DPAD_DOWN"); return true; case KeyEvent.KEYCODE_DPAD_LEFT: Toast.makeText(MapViewActivity.this, "LEFT", Toast.LENGTH_SHORT).show(); return true; case KeyEvent.KEYCODE_DPAD_RIGHT: Toast.makeText(MapViewActivity.this, "RIGHT", Toast.LENGTH_SHORT).show(); return true; default: return true; } } else { return false; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewById(R.id.mapview); mapView.setOnKeyListener(l); mapView.setFocusable(true); } @Override protected boolean isRouteDisplayed() { return false; } }
第九步,运行程序。
注意:下面两句代码
mapView.setOnKeyListener(l); mapView.setFocusable(true);
如果不设置mapView.setFocusable(true),不会有任何效果。
显示效果,如下所示:
很郁闷,不知道为什么图片显示不出来,全是白格子??????!!!!!!