如何在androidstudio添加jar studio中添加百度地图服务

Android Studio加入百度地图功能 - 博客频道 - CSDN.NET
kw123472的博客
分类:学习笔记
& & & & 最近一直在学习在Android Studio里添加百度地图功能,但是初期遇到很多问题,经过多次实践以及众多大神的解答,终于解决了在android studio上使用百度地图的许多问题,现在记录如下,以希望帮助跟我一样的初学者,有错误的地方还望大神指正。
1.首先申请百度API key
百度API key申请需要SHA1值以及包名,其中SHA1值我是自己创建一个keystore,步骤如下:
打开Build-&Generate Signed APK,如图一设置数字签名的一系列参数,具体过程可度娘,最后获得一个.jks文件,如图中的baidumap.jks;之后打开Terminal(如图二),在其中输入keytool
-list -v -keystore debug.jks;其中debug.jks替换成上面你自己创建的jks文件的完整路径名,如
-list -v -keystore &E:\AndriodStudioProjects\keystore\baidumap.jks
之后会提示输入密钥库口令,直接回车
获得下图的SHA1值,这就是申请百度apikey安全码的签名部分,具体申请过程可百度/map/index.php?title=androidsdk
申请获得API key之后,还有关键的一步是在build.gredle中添加如下代码:
signingConfigs{
storeFile file(&你上面建的jks文件完整路径名&);
storePassword &xxxxx&;
keyAlias &xxxxx&;
keyPassword &xxxxxx&;
此步骤可解决:
在使用百度地图时候,出现地图不显示,或者只显示一部分地图,拖动地图后,地图不显示,都是白色格子,或者打印如下错误信息:
Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败
(此问题原因也有可能是其他,见链接http://blog.csdn.net/hhhccckkk/article/details/)
2.导入jar包和so文件,参见百度官方指导:
第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,在src/main/目录下新建jniLibs目录,放入libBaiduMapSDK_vX_X_X_X.so如下图所示,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。
第二步:导入jar包。菜单栏选择File-&Project Structor-&Modules-&Dependencies,点击+号,选择File dependency,选择jar包导入。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
附链接:/map/index.php?title=androidsdk
3.程序代码,可参照百度示例/map/index.php?title=androidsdk/guide/hellobaidumap
最新的百度地图控件是3.5版,而有些指导书是按照2.xx版写的,所以代码会有差别,注意区分。
排名:千里之外Android Studio百度地图开发(一)_androidstudio吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:8,734贴子:
Android Studio百度地图开发(一)收藏
本人用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=""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.BMapMimport com.baidu.mapapi.MKGeneralLimport com.baidu.mapapi.map.MKEimport com.baidu.mapapi.map.MKMapViewLimport com.baidu.mapapi.map.MapCimport com.baidu.mapapi.map.MapVimport com.api.basestruct.GeoP//以下为用到的android类import android.support.v7.app.ActionBarAimport android.os.Bimport android.widget.T//声明变量:private static final String strKey = "XSKUnDZQHrKDuteH234cR3Zt";//此处是百度key,记得换成自己的keyprivate Toast mT//百度地图的三个重要元素private BMapManager mBMapMan =private MapView mMapView =private MapController mMapCon =//MKMapViewListener 用于处理地图事件回调private MKMapViewListener mMapListener = @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){/*** 将地图移动至指定点* 使用百度经纬度坐标,可以通过查询地理坐标* 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至申请坐标转换接口*/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();}大功告成,编译即可。另外补充一点,申请key时需要用到SHA1,android studio中没找到,我是从Eclipse中找的。若哪位朋友知道as中怎样找,还望告知。
mac不是也有终端么?keytool查一下
问题已经解决
android studio获取数字签名方法:
谢谢大神,我也在开发。有不懂的还请赐教!
楼主 只使用地图的定位功能是不是只加定位的jar包,还需要加入地图的jar包吗
SDKInitializer.initialize(getApplicationContext());这句一直出错误怎么办
感觉jar包或者so文件根本没正确导入,gradle.build没配好
jar放在lib中要手动引入,so要放在新建的jni文件夹里
大神,有些包不能引用,是不是位置没放对
大神还在吗!!留个联系方式吧
谢谢,看了你的才搞定的
android studio 获取SHA1 不造这个问题还有没有解决 我是在android studio 中 view —》Tools Window-》 open terminal
难怪我的不行??
新建一个GoogleMap应用,会告诉你谷歌怎么获取key,那个文件里有数字签名
感谢楼主分享学习经验。。。。。
大神 你的意思是定位的 jar包和.so文件不能 和eclipse一样都放在lib文件夹中吗 ?我前几天也找了个百度定位城市的demo 一直eclipse上能定位studio上不能调用获取定位信息的回调函数
好,解决了一些问题,谢
当伤太重心太酸无力承担
R.drawable.location_marker中,location_marker 一直标红,是怎么回事?
我也用百度地图自己用过,没什么问题,顶楼主
白银星玩家
百度星玩家累积成长值为1,
大神,我遇到了些问题,可以指导一下吗,比较急
登录百度帐号推荐应用匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。73305人阅读
Android开发(22)
&&&&& 本篇通过一个简单的示例一步步介绍如何在Android应用中使用百度地图api。1)下载百度地图移动版API(Android)开发包&&&&& 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so。下载地址:
2)申请API Key&&&&& 和使用Google map api一样,在使用百度地图API之前也需要获取相应的API Key。百度地图API Key与你的百度账户相关联,因此您必须先有百度帐户,才能获得API Key;并且,该Key与您引用API的程序名称有关。&&&&& 百度API Key的申请要比Google的简单多了,其实只要你有百度帐号,应该不超过30秒就能完成API Key的申请。申请地址:
3)创建一个Android工程&&&&& 这里需要强调一点:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。&&&&& 工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性-&Java Build Path-&Libraries中选择&Add JARs&,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程完整的目录结构如下图所示:&&&&&
4)在布局文件中添加地图控件(res/layout/main.xml)&&&&&&&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
&com.baidu.mapapi.MapView android:id="@+id/map_View"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
&/LinearLayout&&&
5)创建Activity继承com.baidu.mapapi.MapActivity&&&&& package com.liufeng.
import android.graphics.drawable.D
import android.os.B
import com.baidu.mapapi.BMapM
import com.baidu.mapapi.GeoP
import com.baidu.mapapi.MapA
import com.baidu.mapapi.MapC
import com.baidu.mapapi.MapV
public class MainActivity extends MapActivity {
private BMapManager mapM
private MapView mapV
private MapController mapC
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化MapActivity
mapManager = new BMapManager(getApplication());
// init方法的第一个参数需填入申请的API Key
mapManager.init("285B415EBAB2A50ADA7F03C777C4", null);
super.initMapActivity(mapManager);
mapView = (MapView) findViewById(R.id.map_View);
// 设置地图模式为交通地图
mapView.setTraffic(true);
// 设置启用内置的缩放控件
mapView.setBuiltInZoomControls(true);
// 用给定的经纬度构造一个GeoPoint(纬度,经度)
GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6));
// 创建标记maker
Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka);
// 为maker定义位置和边界
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
// 取得地图控制器对象,用于控制MapView
mapController = mapView.getController();
// 设置地图的中心
mapController.setCenter(point);
// 设置地图默认的缩放级别
mapController.setZoom(12);
protected boolean isRouteDisplayed() {
protected void onDestroy() {
if (mapManager != null) {
mapManager.destroy();
mapManager =
super.onDestroy();
protected void onPause() {
if (mapManager != null) {
mapManager.stop();
super.onPause();
protected void onResume() {
if (mapManager != null) {
mapManager.start();
super.onResume();
6)在AndroidManifest.xml中配置&&&&& &?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.liufeng.baidumap"
android:versionCode="1"
android:versionName="1.0"&
&application android:icon="@drawable/icon" android:label="@string/app_name"&
&activity android:name=".MainActivity" 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-sdk android:minSdkVersion="4" /&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&
&uses-permission android:name="android.permission.INTERNET" /&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&
&uses-permission android:name="android.permission.READ_PHONE_STATE" /&
&/manifest&
7)运行结果&&&&& 说明:上面的应用只是简单的展示了百度地图(交通地图),并将一个指定的点(根据经纬度确定)展示在手机屏幕的中心。当然,实际项目中涉及的map应用不会这么简单,百度地图API为我们提供了丰富的功能接口,有待我们一起去研究学习。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4148252次
积分:15338
积分:15338
排名:第686名
原创:55篇
评论:4203条
文章:22篇
阅读:2762151
(1)(2)(1)(2)(4)(1)(4)(3)(1)(5)(2)(6)(1)(1)(1)(1)(1)(15)(4)

我要回帖

更多关于 fl studio12添加音色 的文章

 

随机推荐