Android Studio百度地图入门(导入jar与so文件)
来源:互联网 发布:java培训好找工作吗 编辑:程序博客网 时间:2024/05/06 08:10
本人用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" ><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid: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-screensandroid: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,记得换成自己的keyprivate Toast mToast;//百度地图的三个重要元素private BMapManager mBMapMan = null;private MapView mMapView = null;private MapController mMapCon = null;//MKMapViewListener 用于处理地图事件回调private MKMapViewListener mMapListener = null;@Overrideprotected 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 {@Overridepublic void onGetNetworkState(int iError) {if (iError == MKEvent.ERROR_NETWORK_CONNECT) {showToast("网络错误");}else if (iError == MKEvent.ERROR_NETWORK_DATA) {showToast("请输入正确的检索条件");}// ...}@Overridepublic void onGetPermissionState(int iError) {//非零值表示key验证未通过if (iError != 0) {//授权Key错误:showToast("授权Key错误");}else{showToast("key认证成功");}}}//显示toastpublic 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();}
原文地址:http://tieba.baidu.com/p/2912208014
0 2
- Android Studio百度地图入门(导入jar与so文件)
- Android Studio快速导入SO文件与jAR包
- android studio导入 so ,jar 文件。
- android studio导入 so ,jar 文件。
- android studio 导入so,jar 文件
- android studio导入 so ,jar 文件。
- eclipse中集成百度地图的项目导入Android studio加入so文件的问题
- Android studio 导入jar, so文件和引入library文件
- android studio 百度地图 .so文件错误 完美解决
- Android Studio中如何导入jar和.so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- Android Studio开发入门-引用jar及so文件
- 一直在用的HashMap
- Generator and yield
- 每个程序员都会的35个jQuery小技巧!
- 第三篇:用 LVS 搭建一个负载均衡集群
- 大数据的成长历程
- Android Studio百度地图入门(导入jar与so文件)
- Office,Visual Studio,SQL Server,Windows,Windows Server,Exchange Server资源大合集
- .ajax设置成同步的应用场景
- 云锁受邀参展WHD.China全球主机大会
- CCS5.5.0修改编辑栏的背景颜色
- screen 常用命令
- socket编程基础2(socket API函数介绍)
- 前端开发知识点
- 变量和数据类型