首先申请密钥我就不写了,百度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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134172.html