Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.Manifest;
- import android.content.DialogInterface;
- import android.content.pm.PackageManager;
- import android.location.Location;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.widget.Toast;
- 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.location.places.Places;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- public class MapsActivity extends AppCompatActivity
- implements OnMapReadyCallback,
- GoogleApiClient.ConnectionCallbacks,
- GoogleApiClient.OnConnectionFailedListener, LocationListener {
- GoogleMap mGoogleMap;
- SupportMapFragment mapFrag;
- LocationRequest mLocationRequest;
- GoogleApiClient mGoogleApiClient;
- Location mLastLocation;
- Marker mCurrLocationMarker;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_maps);
- Toast.makeText(getApplicationContext(), "On Create", Toast.LENGTH_LONG).show();
- mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
- mapFrag.getMapAsync(this);
- }
- @Override
- public void onPause() {
- super.onPause();
- Toast.makeText(getApplicationContext(), "On Pause", Toast.LENGTH_LONG).show();
- //stop location updates when Activity is no longer active
- if (mGoogleApiClient != null) {
- LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
- }
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- Toast.makeText(getApplicationContext(), "Map Ready", Toast.LENGTH_LONG).show();
- mGoogleMap = googleMap;
- mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
- //Initialize Google Play Services
- if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_FINE_LOCATION)
- == PackageManager.PERMISSION_GRANTED) {
- //Location Permission already granted
- buildGoogleApiClient();
- mGoogleMap.setMyLocationEnabled(true);
- } else {
- //Request Location Permission
- checkLocationPermission();
- }
- } else {
- buildGoogleApiClient();
- mGoogleMap.setMyLocationEnabled(true);
- }
- }
- protected synchronized void buildGoogleApiClient() {
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this /* FragmentActivity */,
- this /* OnConnectionFailedListener */)
- .addConnectionCallbacks(this)
- .addApi(LocationServices.API)
- .addApi(Places.GEO_DATA_API)
- .addApi(Places.PLACE_DETECTION_API)
- .build();
- mGoogleApiClient.connect();
- }
- @Override
- public void onConnected(Bundle bundle) {
- Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
- mLocationRequest = new LocationRequest();
- mLocationRequest.setInterval(1000);
- mLocationRequest.setFastestInterval(1000);
- mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
- if (ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_FINE_LOCATION)
- == PackageManager.PERMISSION_GRANTED) {
- LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
- }
- }
- @Override
- public void onConnectionSuspended(int i) {
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- Log.e("+++CONNECTION FAILED", "CONNECTION FAILED");
- Toast.makeText(getApplicationContext(), "Connection Failed", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onLocationChanged(Location location) {
- Toast.makeText(getApplicationContext(), "Location Change", Toast.LENGTH_LONG).show();
- mLastLocation = location;
- if (mCurrLocationMarker != null) {
- mCurrLocationMarker.remove();
- }
- //Place current location marker
- Log.e("+++LOCATION CHANGE", "LOCATION CHANGE");
- LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
- Log.e("+++LATI", location.getLatitude() + "====");
- Log.e("+++LONGI", location.getLongitude() + "====");
- MarkerOptions markerOptions = new MarkerOptions();
- markerOptions.position(latLng);
- markerOptions.title("Current Position");
- markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.person_icon));
- LatLng latLng1 = new LatLng(23.809591, 90.367447);
- LatLng latLng2 = new LatLng(23.873751, 90.396454);
- LatLng latLng3 = new LatLng(23.746466, 90.376015);
- MarkerOptions markerOptions1 = new MarkerOptions();
- markerOptions1.position(latLng1);
- markerOptions1.title("Mirpur");
- markerOptions1.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_one));
- MarkerOptions markerOptions2 = new MarkerOptions();
- markerOptions2.position(latLng2);
- markerOptions2.title("Uttora");
- markerOptions2.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_two));
- MarkerOptions markerOptions3 = new MarkerOptions();
- markerOptions3.position(latLng3);
- markerOptions3.title("Dhanmondi");
- markerOptions3.icon(BitmapDescriptorFactory.fromResource(R.drawable.car_three));
- mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
- mGoogleMap.addMarker(markerOptions1);
- mGoogleMap.addMarker(markerOptions2);
- mGoogleMap.addMarker(markerOptions3);
- //move map camera
- mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 11));
- }
- public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;
- private void checkLocationPermission() {
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED) {
- // Should we show an explanation?
- if (ActivityCompat.shouldShowRequestPermissionRationale(this,
- Manifest.permission.ACCESS_FINE_LOCATION)) {
- // Show an explanation to the user *asynchronously* -- don't block
- // this thread waiting for the user's response! After the user
- // sees the explanation, try again to request the permission.
- new AlertDialog.Builder(this)
- .setTitle("Location Permission Needed")
- .setMessage("This app needs the Location permission, please accept to use location functionality")
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- //Prompt the user once explanation has been shown
- ActivityCompat.requestPermissions(MapsActivity.this,
- new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
- MY_PERMISSIONS_REQUEST_LOCATION);
- }
- })
- .create()
- .show();
- } else {
- // No explanation needed, we can request the permission.
- ActivityCompat.requestPermissions(this,
- new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
- MY_PERMISSIONS_REQUEST_LOCATION);
- }
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode,
- String permissions[], int[] grantResults) {
- switch (requestCode) {
- case MY_PERMISSIONS_REQUEST_LOCATION: {
- // If request is cancelled, the result arrays are empty.
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- // permission was granted, yay! Do the
- // location-related task you need to do.
- if (ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_FINE_LOCATION)
- == PackageManager.PERMISSION_GRANTED) {
- if (mGoogleApiClient == null) {
- buildGoogleApiClient();
- }
- mGoogleMap.setMyLocationEnabled(true);
- }
- } else {
- // permission denied, boo! Disable the
- // functionality that depends on this permission.
- Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();
- }
- return;
- }
- // other 'case' lines to check for other
- // permissions this app might request
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <uses-permission android:name="android.permission.CALL_PHONE" />
- <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
- <uses-feature android:name="android.hardware.location.gps" />
- <uses-permission-sdk-23 android:name="android.permission.INTERNET" />
- <uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission-sdk-23 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
- <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission-sdk-23 android:name="android.permission.CALL_PHONE" />
- <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
- <uses-permission-sdk-23 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"></uses-permission-sdk-23>
- <application
- android:name="android.support.multidex.MultiDexApplication"
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:largeHeap="true"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <meta-data
- android:name="com.google.android.gms.version"
- android:value="@integer/google_play_services_version" />
- <meta-data
- android:name="com.google.android.geo.API_KEY"
- android:value="AIzaSyBm43jiOe04Qkb1NpsZAq1ryj_bfYsRXww" />
- <activity android:name=".MapsActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity
- android:name=".TermsAndCondition"
- android:theme="@style/AppCompatAlertDialogStyle" />
- <activity android:name=".ForgetPassword"></activity>
- </application>
- </manifest>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement