|
|
(未显示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
| |
− | 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>
| |
| | | |
− | </pre>
| |
− | </div><div class="devguideorder"><span>4</span>第四步</div><div class="devguidecenter">添加屏幕及版本支持<br/><pre class="prettyprint codestyle"> <supports-screens
| |
− | android:anyDensity="true"
| |
− | android:largeScreens="true"
| |
− | android:normalScreens="true"
| |
− | 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
| |
− | 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 =
| |
− | (FindArCamGLView)LayoutInflater.from(this).inflate(R.layout.layout_find_cam_view, null); camRl.addView(mCamGLView);
| |
− | </pre>
| |
− | 在onCreate方法中初始化传感器<pre class="prettyprint codestyle"> private void initSensor() {
| |
− | if (mSensor == null) {
| |
− | mSensor = new SimpleSensor(this, new HoldPositionListenerImp());
| |
− | }
| |
− | mSensor.startSensor();
| |
− | }
| |
− | </pre>
| |
− |
| |
− | c、设置传感器监听
| |
− | <pre class="prettyprint codestyle">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);
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | </pre>
| |
− |
| |
− | d、在onDestory()方法中释放资源
| |
− | <pre class="prettyprint codestyle">private void finishCamInternal() {
| |
− | if (mCamGLView != null) {
| |
− | mCamGLView.stopCam();
| |
− | camRl.removeAllViews();
| |
− | mCamGLView = null;
| |
− |
| |
− | }
| |
− | if (mArPoiItemRl != null) {
| |
− | mArPoiItemRl.removeAllViews();
| |
− | }
| |
− | if (mSensor != null) {
| |
− | mSensor.stopSensor();
| |
− | }
| |
− | }
| |
− |
| |
− | </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、事件监听,用来处理通常的网络错误,授权验证错误等
| |
− | public void onGetPermissionState(int iError) {}
| |
− | // 2、回调给Andriod AR 识别SDK获取坐标(demo调用百度定位SDK)
| |
− | public ArBDLocation onGetBDLocation() {
| |
− | // 3、用于传递给Andriod 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;}}</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>
| |