浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
(清空页面)
 
(未显示1个用户的6个中间版本)
第1行: 第1行:
{{androidarsdk-sidebar}}
 
<div class="bluetitle"><div class="services-title-text">开发工具</div></div>
 
Android开发工具有很多,开发者可根据自己的喜好进行选择。在此,我们推荐开发者使用Android studio作为自己的开发工具,本套开发指南也是针对Android studio开发环境下进行编写的。
 
<div class="bluetitle"><div class="services-title-text">工程配置</div></div><div class="devguide"><div class="leftborderbg" style="height:950px;"></div><div class="devguideorder"><span>1</span>第一步</div><div class="devguidecenter">在工程里新建libs文件夹,将开发包里的component_common_sdk.jar拷贝到libs根目录下,SDK中用到了android-support-v4.jar、gson.jar、org.apache.http.legacy.jar中的相关方法,如果您的工程中没有这三个jar包,请自行引入。</div><div class="devguideorder"><span>2</span>第二步</div><div class="devguidecenter">a)开发者调用Andriod AR 识别SDK功能,由于Andriod AR 识别SDK强依赖定位信息,所以开发者需要一起接入地图定位SDK传递经纬度信息(可按Demo传递经纬度)。<br/>b)若开发者要在Andriod AR 识别SDK中实现探索周边功能,需要集成地图SDK检索功能, 如果不需要发现周边功能,可不集成地图SDK检索功能(根据自身需要选择是否集成)。</div><div class="devguideorder"><span>3</span>第三步</div><div class="devguidecenter">开发者若使用proguard混淆项目工程, 需要在混淆配置文件中添加如下代码:<pre class="prettyprint codestyle">-dontwarn map.baidu.**
 
-keep class map.baidu.**{*;}
 
</pre>
 
</div></div><div class="bluetitle"><div class="services-title-text">调用Andriod AR 识别SDK</div></div>
 
<span style="letter-spacing:.75pt;"><span style="color:#333333;"><span style="font-family:宋体;"><span style="font-size:10.0pt;">百度地图</span></span></span></span>Andriod AR 识别SDK<span style="letter-spacing:.75pt;"><span style="color:#333333;"><span style="font-family:宋体;"><span style="font-size:10.0pt;"></span>为开发者提供了便捷的功能</span>调用接口,通过以下几步操作,即可在您的应用中使用</span></span>Andriod AR 识别SDK<span style="letter-spacing:.75pt;"><span style="color:#333333;"></span>提供的数据</span>
 
<div class="devguide"><div class="leftborderbg" style="height:950px;"></div><div class="devguideorder"><span>1</span>第一步</div><div class="devguidecenter">创建并配置工程(具体方法参见工程配置部分的介绍);</div><div class="devguideorder"><span>2</span>第二步</div><div class="devguidecenter">在Manifest中添加使用权限、Android版本支持和对应的开发密钥;<br/>常用使用权限如下(开发者可根据自身程序需求,添加所需权限):<pre class="prettyprint codestyle"><!--访问相机权限-->
 
<uses-permission android:name="android.permission.CAMERA"/>
 
    <!--访问闪光灯-->
 
<uses-permission android:name="android.permission.FLASHLIGHT"/>
 
    <!-- 这个权限用于进行网络定位-->
 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
 
    <!-- 这个权限用于访问GPS定位-->
 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
 
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
 
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
 
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
 
    <!-- 用于读取手机当前的状态-->
 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
 
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
 
    <!-- 访问网络,网络定位需要上网-->
 
<uses-permission android:name="android.permission.INTERNET"/>
 
</pre>
 
</div><div class="devguideorder"><span>3</span>第三步</div><div class="devguidecenter">配置Activity<br/><pre class="prettyprint codestyle">// 主Activity
 
<activity
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:name="sdk.cammer.common.baidu.map.mapcam.MainActivity"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:configChanges="orientation"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:screenOrientation="portrait">
 
&nbsp;&nbsp;&nbsp; <intent-filter>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <action android:name="android.intent.action.MAIN"/>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <category android:name="android.intent.category.LAUNCHER"/>
 
&nbsp;&nbsp;&nbsp; </intent-filter>
 
</activity>
 
// Ar默认Activity
 
<activity
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:name="sdk.cammer.common.baidu.map.mapcam.ArActivity"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:screenOrientation="portrait">
 
</activity>
 
// 景区Activity
 
<activity
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:name="sdk.cammer.common.baidu.map.mapcam.SceneryArActivity"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:screenOrientation="portrait">
 
</activity>
 
// 识楼Activity
 
<activity
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:name="sdk.cammer.common.baidu.map.mapcam.BuildingArActivity"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:screenOrientation="portrait">
 
</activity>
 
  
</pre>
 
</div><div class="devguideorder"><span>4</span>第四步</div><div class="devguidecenter">添加屏幕及版本支持<br/><pre class="prettyprint codestyle"> <supports-screens
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:anyDensity="true"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:largeScreens="true"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:normalScreens="true"
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; android:smallScreens="true"/>
 
</pre>
 
</div><div class="devguideorder"><span>5</span>第五步</div><div class="devguidecenter">添加对应的开发密钥<br/>开发者可在百度地图开放平台申请开发密钥,填写到om.baidu.lbsapi.API_KEY 的value位置。<pre class="prettyprint codestyle"><meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发密钥">
 
</meta-data>
 
</pre>
 
</div><div class="devguideorder"><span>6</span>第六步</div><div class="devguidecenter">在布局xml文件中添加Poi控件,布局文件保存为.xml<br/><pre class="prettyprint codestyle"><map.baidu.ar.camera.POIItem
 
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:android=http://schemas.android.com/apk/res/android
 
        android:layout_width="wrap_content"
 
        android:layout_height="wrap_content"/></pre>
 
</div><div class="devguideorder"><span>7</span>第七步</div><div class="devguidecenter">创建Andriod AR 识别SDK默认的ArActivity用于自定义单目标点展示、自定义多目标点展示和拓展发现周边展示。<br/>a、导入相关类:<pre class="prettyprint codestyle">import android.os.Bundle;
 
import android.support.v4.app.FragmentActivity;
 
import android.view.LayoutInflater;
 
import android.view.View;
 
import android.view.Window;
 
import android.view.WindowManager;
 
import android.widget.RelativeLayout;
 
import android.widget.Toast;
 
import map.baidu.ar.ArPageListener;
 
import map.baidu.ar.camera.SimpleSensor;
 
import map.baidu.ar.camera.find.FindArCamGLView;
 
import map.baidu.ar.model.PoiInfoImpl;
 
import map.baidu.ar.utils.TypeUtils;
 
</pre>
 
b、在onCreate方法中添加相机视图<pre class="prettyprint codestyle">camRl = (RelativeLayout) findViewById(R.id.cam_rl);
 
mCamGLView =
 
&nbsp;(FindArCamGLView)LayoutInflater.from(this).inflate(R.layout.layout_find_cam_view, null); &nbsp;camRl.addView(mCamGLView);
 
</pre>
 
在onCreate方法中初始化传感器<pre class="prettyprint codestyle">&nbsp;&nbsp;private void initSensor() { &nbsp;&nbsp;&nbsp;
 
    if (mSensor == null) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
        mSensor = new SimpleSensor(this, new HoldPositionListenerImp()); &nbsp;&nbsp;&nbsp;
 
} &nbsp;&nbsp;&nbsp;
 
mSensor.startSensor();
 
}
 
</pre>
 
 
c、设置传感器监听
 
<pre class="prettyprint codestyle">private class HoldPositionListenerImp implements SimpleSensor.OnHoldPositionListener {
 
&nbsp;&nbsp;&nbsp; @Override
 
&nbsp;&nbsp;&nbsp; public void onOrientationWithRemap(float[] remapValue) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mCamGLView&nbsp;!= null && mArPoiItemRl&nbsp;!= null) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (poiInfos.size() <= 0) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mArPoiItemRl.setVisibility(View.GONE);
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Toast.makeText(ArActivity.this, "附近没有可识别的类别", Toast.LENGTH_LONG).show();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCamGLView.setFindArSensorState(remapValue, getLayoutInflater(),
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mArPoiItemRl, ArActivity.this, poiInfos, ArActivity.this);
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mArPoiItemRl.setVisibility(View.VISIBLE);
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
 
&nbsp;&nbsp;&nbsp; }
 
}
 
</pre>
 
 
d、在onDestory()方法中释放资源
 
<pre class="prettyprint codestyle">private void finishCamInternal() {
 
&nbsp;&nbsp;&nbsp; if (mCamGLView&nbsp;!= null) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCamGLView.stopCam();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; camRl.removeAllViews();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mCamGLView = null;
 
 
&nbsp;&nbsp;&nbsp; }
 
&nbsp;&nbsp;&nbsp; if (mArPoiItemRl&nbsp;!= null) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mArPoiItemRl.removeAllViews();
 
&nbsp;&nbsp;&nbsp; }
 
&nbsp;&nbsp;&nbsp; if (mSensor&nbsp;!= null) {
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSensor.stopSensor();
 
&nbsp;&nbsp;&nbsp; }
 
}
 
 
</pre>
 
</div><div class="devguideorder"><span>8</span>第八步</div><div class="devguidecenter">景区SceneryArActivity\识楼BuildingArActivity配置<br/>景区SceneryArActivity和识楼BuildingArActivity配置可以参考第七条Andriod AR 识别SDK默认的ArActivity的配置过程(或者参考demo中的实现方案),此处不重复列举。</div><div class="devguideorder"><span>9</span>第九步</div><div class="devguidecenter">配置Application<br/>a、Andriod AR 识别SDK模块初始化并设置MyGeneralListener监听<pre class="prettyprint codestyle">ArSdkManager.getInstance().initApplication(this, new MyGeneralListener());
 
</pre>
 
b、设置MyGeneralListener监听,用于监听鉴定权限返回信息以及获取经纬度信息。<pre class="prettyprint codestyle">static class MyGeneralListener implements MKGeneralListener {
 
// 1、事件监听,用来处理通常的网络错误,授权验证错误等
 
&nbsp;&nbsp; public void onGetPermissionState(int iError) {}
 
// 2、回调给Andriod AR 识别SDK获取坐标(demo调用百度定位SDK)
 
&nbsp; public ArBDLocation onGetBDLocation() {
 
// 3、用于传递给Andriod AR 识别SDK经纬度信息
 
&nbsp;//&nbsp; a、首先通过百度地图定位SDK获取经纬度信息
 
&nbsp;// b、包装经纬度信息到地图ArSdk的ArBDLocation类中 return即可
 
BDLocation location =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LocSdkClient.getInstance(ArSdkManager.getInstance().getAppContext()).getLocationStart()
 
.getLastKnownLocation();
 
if (location == null) {return null;}
 
ArBDLocation arBDLocation = new ArBDLocation();
 
// 设置经纬度信息
 
arBDLocation.setLongitude(location.getLongitude());
 
arBDLocation.setLatitude(location.getLatitude());
 
return arBDLocation;}}</pre>
 
</div><div class="devguideorder"><span>10</span>第十步</div><div class="devguidecenter">展示效果<br/>
 
最后完成以上步骤后,运行程序,即可在您的应用中显示如下:<br/>http://mapopen-pub-androidsdk.cdn.bcebos.com/ar/images/result.png
 
<span style="color:#E36C0A;"><span style="font-family:宋体;"><span style="font-size:9.0pt;">注意:开发者必须开启所需的权限,否则会出现异常。</span></span></span></div></div>
 

2022年5月17日 (二) 15:05的最后版本

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消