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

Читать онлайн книгу Разработка Android-приложений с Augmented Reality - Тимур Машнин страница 12

СКАЧАТЬ 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

      // API)

      if (mCurrentLocation== null) {

      mCurrentLocation=new Location (»»);

      mCurrentLocation.setLatitude (41.90533734214473d);

      mCurrentLocation.setLongitude (2.565848038959814d);

      }

      sharedWorld.setGeoPosition(mCurrentLocation.getLatitude(),mCurrentLocation.getLongitude ());

      // Create an object with an image in the app resources.

      // And the same goes for the app assets

      GeoObject go = new GeoObject (1l);

      go.setGeoPosition(mCurrentLocation.getLatitude()+0.00005,mCurrentLocation.getLongitude () -0.0001);

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

      go.setName («Image from assets»);

      // Add the GeoObjects to the world

      sharedWorld.addBeyondarObject (go);

      return sharedWorld;

      }

      }

      import android.content.pm.PackageManager;

      import android. location. Location;

      import android. os. Bundle;

      import android.support.annotation.NonNull;

      import android.support.annotation.Nullable;

      import android.support.v4.app.ActivityCompat;

      import android.support.v4.app.FragmentActivity;

      import android.widget.Toast;

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

      import com.beyondar.android.world.GeoObject;

      import com.beyondar.android. world. World;

      import com.google.android.gms.common.ConnectionResult;

      import com.google.android.gms.common. api. GoogleApiClient;

      import com.google.android.gms. location. LocationListener;

      import com.google.android.gms. location. LocationRequest;

      import com.google.android.gms. location. LocationServices;

      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.Marker;

      public class GoogleMapActivity extends FragmentActivity implements OnMarkerClickListener, OnMapReadyCallback, LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient. OnConnectionFailedListener {

      private GoogleMap mMap;

      private GoogleMapWorldPlugin mGoogleMapPlugin;

      private World mWorld;

      GoogleApiClient mGoogleApiClient;

      Location mCurrentLocation;

      LocationRequest mLocationRequest;

      @Override

      protected void onCreate (Bundle savedInstanceState) {

      super. onCreate (savedInstanceState);

      setContentView(R.layout.map_google);

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

      buildGoogleApiClient ();

      }

      /**

      * Builds a GoogleApiClient. Uses the {@code #addApi} method to request the

      * LocationServices API.

      */

      protected synchronized void buildGoogleApiClient () {

      mGoogleApiClient = new GoogleApiClient. Builder (this)

      .addConnectionCallbacks (this)

      .addOnConnectionFailedListener (this)

      .addApi (LocationServices. API)

      .build ();

      createLocationRequest ();

      }

      protected void createLocationRequest () {

      mLocationRequest = LocationRequest.create ();

      // Sets the desired interval for active location updates. This interval is

      // inexact. You may not receive updates at all if no location sources are available, or

      // you may receive them slower than requested. You may also receive updates faster than

      // requested if other applications are requesting location at a faster interval.

      mLocationRequest.setInterval (10000);

      // Sets the fastest rate for active location updates. This interval is exact, and your

      // application will never receive updates faster than this value.

      mLocationRequest.setFastestInterval (5000);

      mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

      }

      @Override

      public void onStart () {

      super. onStart ();

      mGoogleApiClient.connect ();

      }

СКАЧАТЬ