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

Читать онлайн книгу.

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


Скачать книгу
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 ();

      }

      @Override

      public void onStop () {

      super. onStop ();

      mGoogleApiClient. disconnect ();

      }

      @Override

      public void onResume () {

      super. onResume ();

      // Within {@code onPause ()}, we pause location updates, but leave the

      // connection to GoogleApiClient intact. Here, we resume receiving

      // location updates if the user has requested them.

      if (mGoogleApiClient.isConnected ()) {

      startLocationUpdates ();

      }

      }

      @Override

      protected void onPause () {

      super. onPause ();

      // Stop location updates to save battery, but don’t disconnect the GoogleApiClient object.

      if (mGoogleApiClient.isConnected ()) {

      stopLocationUpdates ();

      }

      }

      protected void startLocationUpdates () {

      if (ActivityCompat.checkSelfPermission (this, android.Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission (this, android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {

      return;

      }

      LocationServices.FusedLocationApi.requestLocationUpdates (

      mGoogleApiClient, mLocationRequest, this);

      }

      /**

      * Removes location updates from the FusedLocationApi.

      */

      protected void stopLocationUpdates () {

      // It is a good practice to remove location requests when the activity is in a paused or

      // stopped state. Doing so helps battery performance and is especially

      // recommended in applications that request frequent location updates.

      // The final argument to {@code requestLocationUpdates ()} is a LocationListener

      // (http://developer.android.com/reference/com/google/android/gms/location/LocationListener.html).

      LocationServices.FusedLocationApi.removeLocationUpdates (mGoogleApiClient, this);

      }

      @Override

      public boolean onMarkerClick (Marker marker) {

      //


Скачать книгу