首先申请密钥我就不写了,百度api的文档解释的蛮清晰的。
这是第一次接触百度的api,说实话从花了3天时间都没有搞定,然后今天今天才处理完本以为就是简简单单地,谁知道Android stduio的问题一个比一个多,今天才完成。
用时3天才创建好一个能用的。
现在把详细方法和出现的问题写出来方便大家的学习。
首先我们需要导入包
然后右键AS Libaray将这个包添加进去才能用。
还需要导入jniLibs这个文件,但是这个文件不是自己创建的,是要通过gradle才能创建。
输入代码
下面代码需要
sourceSets { main { jniLibs.srcDir 'libs' }
必须写在android中才行,而且需要写在build.gradle(Module:app)中才行。
android { signingConfigs { config { } mykey { keyAlias '****' keyPassword '**' storePassword '***' } } sourceSets { main { jniLibs.srcDir 'libs' } }
才能创建jiniLibs这个文件,然后再将百度API除了jar包的那些东西放到jniLibs中,这个问题困扰了我很久才搞定。
最开始需要注册
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.minicard.myapplication"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 访问精确位置的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你的百度密匙" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
第一步我们先来写一个layout的xml的ui图来方便放mapview
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.minicard.myapplication.MainActivity"> <com.baidu.mapapi.map.MapView android:id="@+id/baiduMapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> </android.support.constraint.ConstraintLayout>这里使用ConstraintLayout如果出现
tools:layout_editor_absoluteY="82dp" tools:layout_editor_absoluteX="16dp"这上面两行代码这个是用来绝对定位但是我们暂时不需要用到它,而且还会报错,虽然调用其他以后就不了,但是我们先删除掉这两行代码。
然后我们来写Mainactivity的主要代码
package com.minicard.myapplication; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class MainActivity extends Activity { private MapView mBaiduMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); initBaiduMap(); } private void initBaiduMap(){ mBaiduMapView = (MapView) findViewById(R.id.baiduMapView); } @Override protected void onResume() { super.onResume(); mBaiduMapView.onResume(); } @Override protected void onPause() { super.onPause(); mBaiduMapView.onPause(); } @Override protected void onDestroy() { mBaiduMapView.onDestroy(); mBaiduMapView = null; super.onDestroy(); } }注意两点,
1.initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都会报运行时异常.
2.initialize方法必须写在setContentView方法前面,也许会写在后面结果报xml中的错误.
然后我们的百度地图api就能用了,但是还有一些东西没出来。
经过检查以后发现是key和对应的SHA1和百度的对应不上,原因呢就是在编写的过程中SHA1突然变成与你之前创建好的不一样了,导致地图看不见呈现出,网格状,还有一点就是虚拟机可能是使用不了的,需要用真机测试才行。
好了这样子我们第一阶段就这样子完成了。
下面是源代码供大家下载
http://download.csdn.net/download/qq_16519957/10040465