Разработка Android-приложений с Augmented Reality. Тимур МашнинЧитать онлайн книгу.
void onLocationChanged (Location location) {
mCurrentLocation = location;
String lat = String.valueOf(mCurrentLocation.getLatitude ());
String lon = String.valueOf(mCurrentLocation.getLongitude ());
Toast toast = Toast.makeText (this,«Current location " + lat+" "+lon, Toast. LENGTH_LONG);
toast.show ();
mWorld.clearWorld ();
mWorld = CustomWorldHelper.generateObjects (this, mCurrentLocation);
mBeyondarFragment.setWorld (mWorld);
}
}
Теперь дополненная реальность будет привязана к текущему местоположению пользователя.
В качестве примера использования фреймворка BeyondAR создадим игровое приложение Creatures in Camera, в котором пользователь сможет расставлять 2D объекты в реальном мире, а потом наблюдать их через камеру.
Создадим новый проект в Android Studio, используя шаблон Navigation Drawer Activity.
Для сборки APK файла с большим количеством методов в коде, в Gradle файл добавим:
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.android.support: multidex:1.0.0»
}
android {
dexOptions {
javaMaxHeapSize «4g»
}
}
В файл манифеста добавим:
<application
android:name="android.support.multidex.MultiDexApplication»>
Добавим зависимость от библиотек beyondar-googlemap-plugin-v0.9.0.jar, beyondar-radar-plugin-v0.9.1.jar и beyondar-v0.9.3.jar, скопировав соответствующие файлы в папку libs проекта.
Добавим зависимость от библиотеки Google Play Services.
compile 'com.google.android.gms: play-services:9.6.1»
Добавим необходимые разрешения в файл манифеста.
<! – Google maps stuff – >
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE» />
<uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE» />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES» />
<! – Minimum permissions for BeyondAR – >
<uses-permission android:name="android.permission.CAMERA» />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION» />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION» />
<! – For BeyondAR this is not mandatory unless you want to load something from the network – >
<uses-permission android:name="android.permission.INTERNET» />
<! – BeyondAR needs the following features – >
<uses-feature android:name="android.hardware.camera» />
<uses-feature android:name="android.hardware.sensor.accelerometer» />
<uses-feature android:name="android.hardware.sensor.compass» />
Для использования Google Map добавим Google API Key в файл манифеста. Для того получим ключ в Google Developers Console и добавим в тег <application> файла манифеста.
<meta-data
android:name="com.google.android.geo. API_KEY»
android: value=«AIzaSyBcRu9Vvb7…» />
Изменим файл компоновки content_main. xml.
<?xml version=«1.0» encoding=«utf-8»? >
<android.support.v4.widget.NestedScrollView
xmlns: android="http://schemas.android.com/apk/res/android"
xmlns: app="http://schemas.android.com/apk/res-auto"
xmlns: tools="http://schemas.android.com/tools"
android: layout_width=«match_parent»
android: layout_height=«match_parent»
android: paddingLeft="@dimen/activity_horizontal_margin»
android: paddingRight="@dimen/activity_horizontal_margin»
android: paddingTop="@dimen/activity_vertical_margin»
android: paddingBottom="@dimen/activity_vertical_margin»
android: fillViewport=«true»
android: layout_gravity=«fill_vertical»
app: layout_behavior="@string/appbar_scrolling_view_behavior»
tools:context=".MainActivity»
tools: showIn="@layout/app_bar_main»
android: id="@+id/content_main»
>
<RelativeLayout
android: layout_width=«match_parent»
android: layout_height=«match_parent»>
<fragment
android: id="@+id/beyondarFragment»
android:name="com.beyondar.android.fragment.BeyondarFragmentSupport»
android: layout_width=«match_parent»
android: layout_height=«match_parent» />
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
Изменим код класса главной активности.
package com.tmsoftstudio.aryourworld;
import android. app. Dialog;
import android.content. DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android. os. Bundle;;
import android.support.design. widget. FloatingActionButton;
import android.support. v4.app. DialogFragment;
import android.support.v4.widget.NestedScrollView;
import