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

Android开发工具有很多,开发者可根据自己的喜好进行选择。在此,我们推荐开发者使用Android studio作为自己的开发工具,本套开发指南也是针对Android studio开发环境下进行编写的。

工程配置
1第一步
在工程里新建libs文件夹,将开发包里的component_common_sdk.jar拷贝到libs根目录下,SDK中用到了android-support-v4.jar、gson.jar、org.apache.http.legacy.jar中的相关方法,如果您的工程中没有这三个jar包,请自行引入。
2第二步
a)开发者调用Android AR识别SDK功能时,由于Android AR识别SDK强依赖定位信息,所以开发者需要一起接入地图定位SDK传递经纬度信息(可按Demo传递经纬度)。
b)若开发者要在Android AR识别SDK中实现探索周边功能,需要集成地图SDK检索功能, 如果不需要发现周边功能,可不集成地图SDK检索功能(根据自身需要选择是否集成)。
3第三步
开发者若使用proguard混淆项目工程, 需要在混淆配置文件中添加如下代码:
-dontwarn map.baidu.**
-keep class map.baidu.**{*;}
调用Android AR识别SDK

百度地图Android AR识别SDK为开发者提供了便捷的功能调用接口,通过以下几步操作,即可在您的应用中使用Android AR识别SDK提供的数据

1第一步
创建并配置工程(具体方法参见工程配置部分的介绍);
2第二步
在Manifest中添加使用权限、Android版本支持和对应的开发密钥;
常用使用权限如下(开发者可根据自身程序需求,添加所需权限):
<!--访问相机权限-->
<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"/>
3第三步
配置Activity
// 主Activity
<activity
                android:name="sdk.cammer.common.baidu.map.mapcam.MainActivity"
                android:configChanges="orientation"
                android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
// Ar默认Activity
<activity
                android:name="sdk.cammer.common.baidu.map.mapcam.ArActivity"
                android:screenOrientation="portrait">
</activity>
// 景区Activity
<activity
                android:name="sdk.cammer.common.baidu.map.mapcam.SceneryArActivity"
                android:screenOrientation="portrait">
</activity>
// 识楼Activity
<activity
                android:name="sdk.cammer.common.baidu.map.mapcam.BuildingArActivity"
                android:screenOrientation="portrait">
</activity>

4第四步
添加屏幕及版本支持
 <supports-screens
                android:anyDensity="true"
                android:largeScreens="true"
                android:normalScreens="true"
                android:smallScreens="true"/>
5第五步
添加对应的开发密钥
开发者可在百度地图开放平台申请开发密钥,填写到om.baidu.lbsapi.API_KEY 的value位置。
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发密钥">
</meta-data>
6第六步
在布局xml文件中添加Poi控件,布局文件保存为.xml
<map.baidu.ar.camera.POIItem
                xmlns:android=http://schemas.android.com/apk/res/android
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
7第七步
创建Android AR识别SDK默认的ArActivity用于自定义单目标点展示、自定义多目标点展示和拓展发现周边展示。
a、导入相关类:
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;
b、在onCreate方法中添加相机视图
camRl = (RelativeLayout) findViewById(R.id.cam_rl);
mCamGLView =
 (FindArCamGLView)LayoutInflater.from(this).inflate(R.layout.layout_find_cam_view, null);  camRl.addView(mCamGLView);
在onCreate方法中初始化传感器
  private void initSensor() {     
     if (mSensor == null) {        
         mSensor = new SimpleSensor(this, new HoldPositionListenerImp());    
 }     
mSensor.startSensor(); 
}

c、设置传感器监听

private class HoldPositionListenerImp implements SimpleSensor.OnHoldPositionListener {
    @Override
    public void onOrientationWithRemap(float[] remapValue) {
        if (mCamGLView != null && mArPoiItemRl != null) {
            if (poiInfos.size() <= 0) {
                mArPoiItemRl.setVisibility(View.GONE);
                Toast.makeText(ArActivity.this, "附近没有可识别的类别", Toast.LENGTH_LONG).show();
            } else {
                mCamGLView.setFindArSensorState(remapValue, getLayoutInflater(),
                        mArPoiItemRl, ArActivity.this, poiInfos, ArActivity.this);
                mArPoiItemRl.setVisibility(View.VISIBLE);
            }
        }
    }
}

d、在onDestory()方法中释放资源

private void finishCamInternal() {
    if (mCamGLView != null) {
        mCamGLView.stopCam();
        camRl.removeAllViews();
        mCamGLView = null;

    }
    if (mArPoiItemRl != null) {
        mArPoiItemRl.removeAllViews();
    }
    if (mSensor != null) {
        mSensor.stopSensor();
    }
}

8第八步
景区SceneryArActivity\识楼BuildingArActivity配置
景区SceneryArActivity和识楼BuildingArActivity配置可以参考第七条Android AR识别SDK默认的ArActivity的配置过程(或者参考demo中的实现方案),此处不重复列举。
9第九步
配置Application
a、Android AR识别SDK模块初始化并设置MyGeneralListener监听
ArSdkManager.getInstance().initApplication(this, new MyGeneralListener());
b、设置MyGeneralListener监听,用于监听鉴定权限返回信息以及获取经纬度信息。
static class MyGeneralListener implements MKGeneralListener {
// 1、事件监听,用来处理通常的网络错误,授权验证错误等
   public void onGetPermissionState(int iError) {}
// 2、回调给Android AR识别SDK获取坐标(demo调用百度定位SDK)
  public ArBDLocation onGetBDLocation() {
// 3、用于传递给Android AR识别SDK经纬度信息
 //  a、首先通过百度地图定位SDK获取经纬度信息
 // b、包装经纬度信息到地图ArSdk的ArBDLocation类中 return即可
BDLocation location =        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;}}
10第十步
展示效果

最后完成以上步骤后,运行程序,即可在您的应用中显示如下:
result.png

注意:开发者必须开启所需的权限,否则会出现异常。
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消