Android Google Map v2详解之:开发环境配置

Android Google Map v2详解之:开发环境配置

                                      ——转载请注明出处:coder-pig



说在前面:

说到地图定位,现在越来越多的社交app都加入了地图和定位的功能模块,用户很多的时候

也会用到这些东东,比如,到外面吃饭,次次吃饭前都要拍下照片发到朋友圈,定个位,然后发条说说,

炫耀一下自己今天吃了什么高大上的东东,炫耀和攀比心理我懂,不过,一次下班去吃饭,看到一妹子

吃饭,拍照+发朋友圈,足足用了大概20多分钟,我走的时候她还没开始吃...哎睡觉也是醉了!

偷笑

当然,这也是说笑而已哈,每个人有自己的兴趣爱好,不过真的没必要拍那么久哈,

毕竟还是吃饭重要哈!羡慕

恩,有点偏题了,说回正题吧,本节要说的是Google Map v2开发环境的搭建,

目前三款地图大户:google地图,百度地图,高德地图

各有各的有点咯,如果开发的应用主要在国内使用的话,建议使用后面的两个,因为天朝

的原因,google地图很多时候是load不下来的!当然,翻墙和代理可以解决这个问题,

但是没理由要用户的手机也装个VPN代理软件把!因为下个星期开始小猪就要做地图

定位模块的东东了,而公司的用户是澳门和香港那边的,所以要用到谷歌地图,国内对于

Google Map使用的资料都是比较少的,所有小猪在学习的过程中会做下相关的笔记!

希望可以帮到各位后来人哈!




这节要做什么?

主线任务:写一个测试Demo,将谷歌地图显示到界面上!

关卡: ①通过Android SDK Manager  安装Google Play Service,同时布置手机或模拟器的环境!

         ②新建我们的测试Demo,然后导入google-play-services_lib的包,作为我们工程的libray

         ③到https://code.google.com/apis/console/,根据SHA1和应用包名创建一个自己的key

         ④配置相关文件,完成相关代码编写,运行调试得出结果!

好了,开始本节任务吧~奋斗





关卡一:配置Google Play Service

这一关的话有两个要打的boss:



关卡boss一:开发环境装Google Play Service


打开Android sdk Manager,然后下拉到下面可以看到这货,把他装上:



安装完毕后,然后把这货作为工程导入到我们的项目中,这货在:

sdk/extras/google/google_play_services/libproject/google-play-services_lib

找到后导入即可,然后这货就安静地趟在工程目录下了:




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

任务失败解决方法:                                                                                           ~

这里的问题通常是sdk manager里的extras目录找不到Google Play Services:            ~

1.给墙了,改hosts或者vpn咯,如果能加载得了其他清单的话,那么就是第二个问题了         ~

2.sdk manager的版本问题,估计是版本旧,换个新版本的sdk manager就可以了!          ~

   注意是sdk manager版本旧!!!                                                                        ~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




关卡boss2:运行设置装Google Play Service和Google play store



因为天朝的原因,很多国内鸡系统都是被阉割的,就是把与google有关的模块全部割掉了

所以如果google map的开发还是建议google原生rom的手机,当然你也可以自己刷个!

当然不刷也是可以的,不过针对不同的机型可能会出现各种各样的情况,这个读者自己纠结了!


对于阉割了的国产机,我们要使用google map开发的话,需要安装两个东东:

Google play servicesGoogle play store的两个apk,这两个可以到手机市场下,通常都有的

笔者的就是360手机助手下的,一定要确定是最新的版本哦!!!切记,不然后面加载的地图,什么

都没有的,连网格都出不来!!!安装完后,我们可以写个小程序来验证下Google Services是否可用!


自己创建个Android工程,加个按钮,触发下面的方法:

[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. //测试Google Service是否可用的方法  
  2.     private void checkGooglePlayServices(){  
  3.         int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);  
  4.         switch (result) {  
  5.             case ConnectionResult.SUCCESS:  
  6.                 Toast.makeText(getApplicationContext(), "SUCCESS", Toast.LENGTH_SHORT).show();  
  7.                 break;  
  8.   
  9.             case ConnectionResult.SERVICE_INVALID:  
  10.                 Toast.makeText(getApplicationContext(), "SERVICE_INVALID", Toast.LENGTH_SHORT).show();  
  11.                 GooglePlayServicesUtil.getErrorDialog(ConnectionResult.SERVICE_INVALID, this0).show();  
  12.                 break;  
  13.   
  14.             case ConnectionResult.SERVICE_MISSING:  
  15.                 Toast.makeText(getApplicationContext(), "SERVICE_MISSING", Toast.LENGTH_SHORT).show();  
  16.                 GooglePlayServicesUtil.getErrorDialog(ConnectionResult.SERVICE_MISSING, this0).show();  
  17.                 break;  
  18.             case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:  
  19.                 Toast.makeText(getApplicationContext(), "SERVICE_VERSION_UPDATE_REQUIRED", Toast.LENGTH_SHORT).show();  
  20.                 GooglePlayServicesUtil.getErrorDialog(ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED, this0).show();  
  21.                 break;  
  22.             case ConnectionResult.SERVICE_DISABLED:  
  23.                 Toast.makeText(getApplicationContext(), "SERVICE_DISABLED", Toast.LENGTH_SHORT).show();  
  24.                 GooglePlayServicesUtil.getErrorDialog(ConnectionResult.SERVICE_DISABLED, this0).show();  
  25.                 break;  
  26.         }  
  27.     }  

提示Success就说明Google服务可以使用了!


!!!Mission Complete,关卡一完成,请进入关卡二----->发火                                     



关卡二:创建测试demo,导入google-play-services_lib包


本关是没有boss,是提炼前面boss爆出来的材料的~,材料:测试demo + google-play-service_lib包


1)将google-play-services_lib设为library,右键这货,properties


2)为测试demo,导入这个library,点击add,把library加入即可:



!!!Mission Complete,关卡二完成,请进入关卡三----->发火                                  



关卡三:申请本机专用Key值

好了,材料都有了,接着就该去找丹炉了,本关我们要到一个神秘的洞窟:

寻找我们的顶级丹炉——使用google服务的Key

首先我们来到这个地址:https://code.google.com/apis/console/

有谷歌账号的话,直接登录,没有的话就注册个咯!

第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目

然后界面如下(这个是旧版本的,你也可以进新版本的界面,随你,进去的时候可以选的)




接着我们要去洞窟的左边开启藏宝点大门的开关:

点击Services:勾选我们需要的服务:




大门已经打开,但是有一个守护者,他要我们给出对应的暗号,才会给我们丹炉(Key)

而这个暗号也是有规律的:"本机的SHA1码;应用的包名"

这个SHA1码有两种获取方式,命令行的就算了,这里用简单点的那种:

Ecplise点击工具栏->Preferences->Android->Build就可以看到了,我们把这段东西复制下来



为了防止我们打错应用的包名,我们可以到AndroidManifest.xml文件中复制下包名:

我们的暗号就拼好了:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. 44:FF:5E:EF:38:A5:D9:28:8F:E5:F0:F9:BD:6B:02:C3:4A:27:2C:D1;com.jay.example.mymap  
ps:这里注意两个是用";"来拼接的!!别忘了!!!

然后我们要提交给守护者,我们要做的装备是顶级丹炉(android版的Key),选中第三个:


守护者根据这串暗号在藏宝洞中进行查找:(自己把东西复制到下面)



Update后,就生成了顶级丹炉(Key),然后把丹炉交给了我们


顶级丹炉(Key)就这样拿到手了,我们要把这东西放好,万一到时候不见了,又要回来重新做,很麻烦的!

(自己复制Key保存到txt中咯!)


!!!Mission Complete,关卡三完成,请进入关卡四----->发火                                                     


关卡四:完成测试Demo,显示地图

材料和丹炉都有了,接下来就要开始炼丹了!

不过在炼丹之前还要和我们的丹炉种下烙印(修改AndroidManifest.xml文件)

不然成不了丹!(使用不了Google Service)

烙印如下:

AndroidManifest.xml:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     package="com.jay.example.mymap"  
  3.     android:versionCode="1"  
  4.     android:versionName="1.0" >  
  5.   
  6.    <uses-sdk  
  7.         android:minSdkVersion="14"  
  8.         android:targetSdkVersion="17" />  
  9.      
  10. <!--OpenGL ES V2特性支持-->  
  11.    <uses-feature  
  12.         android:glEsVersion="0x00020000"  
  13.         android:required="true" />  
  14.   
  15.     <!-- name是应用的包名.permission.MAPS_RECEIVE -->  
  16.     <permission  
  17.         android:name="com.jay.example.mymap.permission.MAPS_RECEIVE"  
  18.         android:protectionLevel="signature" />  
  19.   
  20.         <!-- 这里其实只要写前面这8个权限就可以了,其他的看情况加咯~ -->  
  21.         <uses-permission android:name="com.jay.example.mymap.permission.MAPS_RECEIVE" />  
  22.         <uses-permission android:name="android.permission.INTERNET" />  
  23.         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  24.         <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />  
  25.         <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  26.         <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  27.         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  28.         <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />     
  29.               
  30.       
  31.     <application  
  32.         android:allowBackup="true"  
  33.         android:icon="@drawable/ic_launcher"  
  34.         android:label="@string/app_name"  
  35.         android:theme="@style/AppTheme" >  
  36.           
  37.          <!-- value改成你申请到的秘钥Key -->  
  38.          <meta-data   
  39.             android:name="com.google.android.maps.v2.API_KEY"  
  40.             android:value="AIzaSyCuRT1JkHjcH92R0wa8A026beqyvR_xisM"/>  
  41.            
  42.          <!-- 这个我也不知道是什么,不写就会报错的了... -->  
  43.          <meta-data android:name="com.google.android.gms.version"   
  44.             android:value="@integer/google_play_services_version" />  
  45.   
  46.         <activity  
  47.             android:name=".MainActivity"  
  48.             android:label="@string/app_name" >  
  49.             <intent-filter>  
  50.                 <action android:name="android.intent.action.MAIN" />  
  51.                 <category android:name="android.intent.category.LAUNCHER" />  
  52.             </intent-filter>  
  53.         </activity>        
  54.     </application>  
  55.   
  56. </manifest>  

接着就可以使用开始炼丹了

(布局文件的编写,class是必写的哦!)

activity_main.xml

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.     <fragment   
  7.         android:id="@+id/map"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="400dp"  
  10.         class="com.google.android.gms.maps.MapFragment"/>   
  11. </LinearLayout>  

凝丹:

(MainActivity.java的编写)

[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.jay.example.mymap;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4.   
  5. public class MainActivity extends Activity {  
  6.           
  7.     @Override   
  8.     protected void onCreate(Bundle savedInstanceState) {   
  9.         super.onCreate(savedInstanceState);   
  10.         setContentView(R.layout.activity_main);  
  11.     }  
  12. }  



丹成:

(效果图如下)





关于Android Google Map v2详解之:开发环境配置这节就讲到这里,本节以炼丹路线来

形容开发环境配置搭建的流程哈,第一次尝试这种风格来讲述,希望各位读者喜欢!

故事逻辑有点乱哈!大家别太在意细节哈!大笑下节会对google提供的api进行解析

写一些简单的使用小demo~敬请期待~



本节参考代码下载:

下班后再给出来哈!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值