Thursday, September 18, 2014

在Android中使用Google Map API v2和debug 工具

最近开发一个基于Google map的应用,所以这里介绍如何在Anroid中配置google map

1. 如果这里看不见Google play service,就要更新SDK了




















选择下载最新的SDK Tools







完成后就可以看到Google Play services(Google map在此服务中)以及Google APIs(我们app的build target)

















2. 下载完成后,可以看到这个路径的文件<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ 是新下载的,这就是Google play的lib,复制到我们app的平行路径中,或者不复制也可

3. Import到Eclipse里面
 Click File > Import, select Android > Existing Android Code into Workspace,如果这里出现错误,可以下载最新的Android ADT(Eclipse)可以解决问题

4.把第3步的lib加入到我们app中



















5. 申请API key
打开https://code.google.com/apis/console/?noredirect
开启Google maps Android API v2服务






点击API Access,然后创建Android key














这里我们需要用keytool生成key
首先在Eclipse,Window->Preferences->Android->Build















打开cmd,到JDK文件夹执行keytool,参数是keystore的路径
C:\Program Files\Java\jdk1.7.0_07\bin>keytool -list -v -keystore C:\Users\KK\.an
droid\debug.keystore
密码是android

最后生成SHA1,到网页中输入
key;包名
包名注意在网页、src、manifest中package三者保持一致,否则不能运行


最后会生成API key


5. 修改 AndroidManifest.xml
在<Application>里面加入Google play的版本
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
在<Application>里面而</Application>前加入申请的key,在下面value中替换这个API KEY
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="API_KEY"/>

在<Manifest>里面加入权限,他们的作用分别是
<!-- Google Map是互联网业务,允许互联网 -->
<!-- 允许API检查网络连接状态,已确定是否可以下载数据 -->
<!-- 允许将Google地图数据缓存在SD卡上 -->
<!-- 地图应用经常和定位相关,允许粗定位-->
<!-- 允许精确定位-->  
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
在<Manifest>里面加入如下,因为Google Map v2需要OpenGL ES
<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

6. 创建XML界面,叫res/layout/activity-main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>
7. 创建MainActivity.java 记得在Manifest里面启动activity设置这个
package com.example.mapdemo;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

8. 在project.properties中target=Google Inc.:Google APIs:19,目的是改用Google api build
9. 在device中,打开Google maps app,测试是否可用,肯能要enable location service in setting

Example for the link above:
In Google drive books\JAVA\Android\TrackMyPath.rar


Debug工具我们可以用Eclipse的DDMS中的GPX:
这里是GPX的一个例子http://zh.wikipedia.org/wiki/GPX













按播放键就GPS就会按GPX的时间点变化,GPX中的时间点跟具体值没关系,只跟时间间距有关系。

想要将一条Google maps路径转变为GPX (convert path on google maps to gpx):
select a route->list all steps->setting icon->share and embed map->short url得到google maps的URL

然后到此网站就:
http://www.gpsvisualizer.com/convert_input



可以生成GPX,但是需要手动加入时间标签
<time>2009-10-17T18:37:26Z</time>


Ref:
https://developers.google.com/maps/documentation/android/start
http://blog.csdn.net/flowingflying/article/details/9092113




No comments:

Post a Comment