网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月13日漏签0天
androidstudio吧 关注:14,653贴子:41,246
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 39回复贴,共2页
  • ,跳到 页  
<<返回androidstudio吧
>0< 加载中...

Android Studio百度地图开发(一)

  • 只看楼主
  • 收藏

  • 回复
  • 一诺倾黄金
  • 小有名气
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本人用Android Studio做百度地图开发,调试了一整天,始终无法通过。然后怀疑代码有问题,就换Eclipse进行代码编写,毕竟网上关于Eclipse的资料多一些,出了问题容易解决,后来按照百度的地图文档写的简单的地图展示程序仍是无法通过,经过两个小时的查资料、调试,已经成功解决,要点也已经在上篇文章中写了出来。今天将Eclipse中的代码手工移植到android studio中,结果仍是无法运行,提示mBMapMan = new BMapManager(getApplication());这一句异常,原因是无法加载baidumapSDk。然后狂查资料,试了很多办法,终于成功解决,下面说明完整的步骤和代码。
一、新建工程
这个就不详细说了,起好名字,一路next即可,需要注意的是,工程名字尽量保持与申请百度key的应用名称相一致。
二、加入地图包
1、在与src同级的libs文件夹下放入jar文件(baidumapapi_v2_3_5.jar和locSDK_3.1.jar,一个用于地图,一个用于定位)。
如下图中的蓝色椭圆区。然后右键libs下的jar文件,选择"Add as library"。
2、在main文件夹下新建jniLibs文件夹,niLibs文件夹下新建armeabi文件夹,然后将libBaiduMapSDK_v2_3_5.so和liblocSDK3.so放入该文件夹下。如下图红色椭圆部分。注意:该处与eclipse有所不同,按照eclipse步骤将armeabi与jar放在同一目录下,无法编译通过。

三、代码编写
1、权限设置等
打开AndroidManiFest.xml,此处若看百度地图文档,不要复制文档代码,复制demo代码。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dddd" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.android.bjshxian.MainActivity"
//一下两行加入的代码
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="sensor"
//加入的代码结束
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
//以下为权限设置
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
</permission>
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" >
</uses-permission>
<!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CAMERA" >
</uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 来电消音 -->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
//权限设置结束
//以下为屏幕支持设置
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="false"
android:resizeable="true"
android:smallScreens="true" />
</manifest>
2、布局文件
在activity_main.xml中加入如下代码,此处注意是com.baidu.mapapi.map.MapView,不是android自带的MapView,也不是com.baidu.mapapi.map.mapview,我曾因为误将MapView写成mapview调试了将近半个小时。
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true">
</com.baidu.mapapi.map.MapView>
3、MainActivity.java,增加相关引用
//以下为baidu地图类
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
//以下为用到的android类
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.Toast;
//声明变量:
private static final String strKey = "XSKUnDZQHrKDuteH234cR3Zt";//此处是百度key,记得换成自己的key
private Toast mToast;
//百度地图的三个重要元素
private BMapManager mBMapMan = null;
private MapView mMapView = null;
private MapController mMapCon = null;
//MKMapViewListener 用于处理地图事件回调
private MKMapViewListener mMapListener = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建MapManager一定要在 setcontentView之前
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(strKey, new MyGeneralListener());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
initMap();
double cLat = 32.044382;
double cLon = 118.828688;
moveToPoint(cLat, cLon);
}
/**
* 将地图移到指定位置,此函数只是显示的中心位置,并非精确到某个定位点
*/
private void moveToPoint(double cLat ,double cLon){
/**
* 将地图移动至指定点
* 使用百度经纬度坐标,可以通过http://api.map.baidu.com/lbsapi/getpoint/index.html查询地理坐标
* 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至mapapi@baidu.com申请坐标转换接口
*/
GeoPoint p = new GeoPoint((int)(cLat * 1E6),(int)(cLon * 1E6));
mMapCon.setCenter(p);
}
/**
* 在布局文件被载入之后,初始化地图
*/
private void initMap(){
//根据mapView获取 mapController,这些都是地图编程必须的
mMapCon = mMapView.getController();
mMapCon.enableClick(true); //设置地图响应点击事件
mMapCon.setZoom(12); //设置地图缩放级别为12
//显示内置的缩放控件
mMapView.setBuiltInZoomControls(true);
}
// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyGeneralListener implements MKGeneralListener {
@Override
public void onGetNetworkState(int iError) {
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
showToast("网络错误");
}
else if (iError == MKEvent.ERROR_NETWORK_DATA) {
showToast("请输入正确的检索条件");
}
// ...
}
@Override
public void onGetPermissionState(int iError) {
//非零值表示key验证未通过
if (iError != 0) {
//授权Key错误:
showToast("授权Key错误");
}
else{
showToast("key认证成功");
}
}
}
//显示toast
public void showToast(String msg) {
if (mToast == null) {
mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
} else {
mToast.setText(msg);
mToast.setDuration(Toast.LENGTH_SHORT);
}
mToast.show();
}
大功告成,编译即可。
另外补充一点,申请key时需要用到SHA1,android studio中没找到,我是从Eclipse中找的。若哪位朋友知道as中怎样找,还望告知。


  • 坤gy
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
mac
不是也有终端么?
keytool查一下


2025-08-13 23:09:50
广告
不感兴趣
开通SVIP免广告
  • 龙脊轩
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题已经解决 十分感谢


  • 一轻罗
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
android studio获取数字签名方法:http://jingyan.baidu.com/article/09ea3ede01ccecc0aede392c.html


  • zhangyuuu
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢大神,我也在开发。有不懂的还请赐教!


  • sghsbc
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主 只使用地图的定位功能是不是只加定位的jar包,还需要加入地图的jar包吗


  • Ray_L_Pain
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
SDKInitializer.initialize(getApplicationContext());这句一直出错误怎么办


  • 殇透俄0心
  • 小有美名
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感觉jar包或者so文件根本没正确导入,gradle.build没配好


2025-08-13 23:03:50
广告
不感兴趣
开通SVIP免广告
  • 我左手边幸福
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
jar放在lib中要手动引入,so要放在新建的jni文件夹里


  • 可乐如水似春秋
  • 闻名一方
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大神,有些包不能引用,是不是位置没放对


  • unittfo
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大神还在吗!!留个联系方式吧


  • 寻觅xc
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢,看了你的才搞定的


  • Rickyy360
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
android studio 获取SHA1 不造这个问题还有没有解决 我是在android studio 中 view —》Tools Window-》 open terminal


  • 看slow
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
难怪我的不行👿👿


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 39回复贴,共2页
  • ,跳到 页  
<<返回androidstudio吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示