Разработка Android-приложений с Augmented Reality. Тимур Машнин. Читать онлайн. Newlib. NEWLIB.NET

Автор: Тимур Машнин
Издательство: Издательские решения
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 0
isbn: 9785448380907
Скачать книгу
align="center">

      BeyondAR

      BeyondAR это фреймворк, обеспечивающий ресурсы для разработки приложений с дополненной реальностью, основанной на георасположении на смартфонах и планшетах.

      Для начала работы скачаем BeyondAR фреймворк с Github https://github.com/BeyondAR/beyondar.

      Импортируем проект BeyondAR_Examples в среду разработки Android Studio.

      Для запуска этого приложения на Android устройстве требуется наличие датчика ориентации.

      Для сборки 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»>

      Для двух классов, возможно, придется реализовать OnMapReadyCallback.

      package com.beyondar. example;

      import android.content.Context;

      import android. location. LocationManager;

      import android. os. Bundle;

      import android.support.v4.app.FragmentActivity;

      import android.view.View;

      import android.view.View. OnClickListener;

      import android. widget. Button;

      import android.widget.Toast;

      import com.beyondar.android.plugin. googlemap. GoogleMapWorldPlugin;

      import com.beyondar.android.util.location.BeyondarLocationManager;

      import com.beyondar.android.world.GeoObject;

      import com.beyondar.android. world. World;

      import com.google.android.gms.maps.CameraUpdateFactory;

      import com.google.android.gms.maps. GoogleMap;

      import com.google.android.gms.maps. GoogleMap. OnMarkerClickListener;

      import com.google.android.gms.maps. OnMapReadyCallback;

      import com.google.android.gms.maps.SupportMapFragment;

      import com.google.android.gms.maps.model.LatLng;

      import com.google.android.gms.maps.model.Marker;

      public class BeyondarLocationManagerMapActivity extends FragmentActivity implements OnMarkerClickListener, OnClickListener, OnMapReadyCallback {

      private GoogleMap mMap;

      private GoogleMapWorldPlugin mGoogleMapPlugin;

      private World mWorld;

      @Override

      protected void onCreate (Bundle savedInstanceState) {

      super. onCreate (savedInstanceState);

      setContentView(R.layout.map_google);

      Button myLocationButton = (Button) findViewById(R.id.myLocationButton);

      myLocationButton.setVisibility(View.VISIBLE);

      myLocationButton.setOnClickListener (this);

      ((SupportMapFragment) getSupportFragmentManager () .findFragmentById(R.id.map)).getMapAsync (this);

      }

      @Override

      public boolean onMarkerClick (Marker marker) {

      // To get the GeoObject that owns the marker we use the following

      // method:

      GeoObject geoObject = mGoogleMapPlugin.getGeoObjectOwner (marker);

      if (geoObject!= null) {

      Toast.makeText (this, «Click on a marker owned by a GeoOject with the name: " + geoObject.getName (),

      Toast.LENGTH_SHORT).show ();

      }

      return false;

      }

      @Override

      protected void onResume () {

      super. onResume ();

      // When the activity is resumed it is time to enable the

      // BeyondarLocationManager

      BeyondarLocationManager. enable ();

      }

      @Override

      protected void onPause () {

      super. onPause ();

      // To avoid unnecessary battery usage disable BeyondarLocationManager

      // when the activity goes on pause.

      BeyondarLocationManager. disable ();

      }

      @Override

      public void onClick (View v) {

      // When the user clicks on the button we animate the map to the user

      // location

      LatLng userLocation = new LatLng(mWorld.getLatitude (), mWorld.getLongitude ());

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom (userLocation, 15));

      mMap.animateCamera (CameraUpdateFactory. zoomTo (19), 2000, null);

      }

      @Override

      public void onMapReady (GoogleMap googleMap) {

      mMap=googleMap;

      // We create the world and fill the world

      mWorld = CustomWorldHelper.generateObjects (this);

      // As we want to use GoogleMaps, we are going to create the plugin and

      // attach it to the World

      mGoogleMapPlugin = new GoogleMapWorldPlugin (this);

      // Then we need to set the map in to the GoogleMapPlugin

      mGoogleMapPlugin.setGoogleMap (mMap);

      // Now that we have the plugin created let’s add it to our world.

      // NOTE: It is better to load the plugins before start adding object in

      // to the world.

      mWorld.addPlugin (mGoogleMapPlugin);

      mMap.setOnMarkerClickListener (this);

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mGoogleMapPlugin.getLatLng (), 15));

      mMap.animateCamera (CameraUpdateFactory. zoomTo (19),