Оценить:
 Рейтинг: 0

Разработка Android-приложений с Augmented Reality

Год написания книги
2017
<< 1 ... 6 7 8 9 10 11 12 13 14 ... 22 >>
На страницу:
10 из 22
Настройки чтения
Размер шрифта
Высота строк
Поля

// … and send it to the fragment

mBeyondarFragment.setWorld (mWorld);

// We also can see the Frames per seconds

mBeyondarFragment.showFPS (true);

}

}

В методе onCreate создается фрагмент BeyondarFragmentSupport, отвечающий за отображение вида камеры и вида BeyondarGLSurfaceView, рисующего дополненную реальность.

Для этого используется файл компоновки.

<?xml version=«1.0» encoding=«utf-8»? >

<FrameLayout xmlns: android="http://schemas.android.com/apk/res/android"

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: id="@+id/parentFrameLayout»>

<fragment

android: id="@+id/beyondarFragment»

android:name="com.beyondar.android.fragment.BeyondarFragmentSupport»

android: layout_width=«match_parent»

android: layout_height=«match_parent» />

</FrameLayout>

Далее создается объект World – контейнер объектов дополненной реальности, который затем добавляется во фрагмент BeyondarFragmentSupport.

Метод mBeyondarFragment.showFPS (true) показывает количество кадров в секунду в левом верхнем углу экрана.

Вся магия по созданию объектов дополненной реальности осуществляется в классе CustomWorldHelper.

Здесь создается новый контейнер World, устанавливается его местоположение в реальном мире, а также на основе изображений создаются объекты GeoObject, которые добавляются в контейнер World.

public static World sharedWorld;

sharedWorld = new World (context);

sharedWorld.setGeoPosition (41.90533734214473d, 2.565848038959814d);

GeoObject go4 = new GeoObject (4l);

go4.setGeoPosition (41.90518862002349d, 2.565662767707665d);

go4.setImageUri("assets://creature_7.png»);

go4.setName («Image from assets»);

sharedWorld.addBeyondarObject (go4);

По умолчанию для контейнера World и для его объектов, в классе CustomWorldHelper, задаются фиксированные координаты в реальном мире. Исправим это, привязав координаты контейнера World к местоположению устройства.

Для определения местоположения устройства используем Fused location provider API (Android API Level> v9, Android Build Tools> v21).

Изменим код классов CustomWorldHelper, GoogleMapActivity и SimpleCameraActivity.

import android.annotation.SuppressLint;

import android.content.Context;

import android. location. Location;

import android.widget.Toast;

import com.beyondar.android.world.GeoObject;

import com.beyondar.android. world. World;

@SuppressLint («SdCardPath»)

public class CustomWorldHelper {

public static final int LIST_TYPE_EXAMPLE_1 = 1;

public static World sharedWorld;

public static World generateObjects (Context context, Location mCurrentLocation) {

sharedWorld = new World (context);

// The user can set the default bitmap. This is useful if you are

// loading images form Internet and the connection get lost

sharedWorld.setDefaultImage(R.drawable.beyondar_default_unknow_icon);

// User position (you can change it using the GPS listeners form Android
<< 1 ... 6 7 8 9 10 11 12 13 14 ... 22 >>
На страницу:
10 из 22