0% found this document useful (0 votes)
587 views11 pages

Practical No 31

Uploaded by

umeshsabale.2006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
587 views11 pages

Practical No 31

Uploaded by

umeshsabale.2006
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Practical No 31

31.1
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.getuserlocation">

<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.GetUserLocation">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
</application>

</manifest>
Main_Activity.Java
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;

public class MainActivity extends AppCompatActivity {

private static final int


PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1;
private FusedLocationProviderClient fusedLocationClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

fusedLocationClient =
LocationServices.getFusedLocationProviderClient(this);

// Check for permissions


if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted, request it
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
} else {
// Permission has already been granted
getLocation();
}
}

private void getLocation() {


// Check if permission is granted
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED) {
// Permission is granted
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, location -> {
// Got last known location. In some rare situations, this can be
null.
if (location != null) {
// Handle location
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Toast.makeText(this, "Latitude: " + latitude + ", Longitude: " +
longitude,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Location not available",
Toast.LENGTH_SHORT).show();
}
});
} else {
// Permission denied
Toast.makeText(this, "Location permission denied",
Toast.LENGTH_SHORT).show();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull
String[] permissions, @NonNull int[] grantResults) {
if (requestCode ==
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION) {
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
// Permission granted, get the location
getLocation();
} else {
// Permission denied
Toast.makeText(this, "Location permission denied",
Toast.LENGTH_SHORT).show();
}
}
}
}
Activity_Main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

</RelativeLayout>
Practical No 32
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp" />

<Button
android:id="@+id/button_draw_route"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Draw Route"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"/>

</RelativeLayout>
MainActtivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
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.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import
com.google.android.libraries.places.api.net.FindAutocompletePredictionsReque
st;
import com.google.android.libraries.places.api.net.PlacesClient;
import com.google.android.libraries.places.api.net.PlacesField;
import com.google.android.libraries.places.api.net.PlacesStatusCodes;
import
com.google.android.libraries.places.widget.AutocompleteSupportFragment;
import
com.google.android.libraries.places.widget.model.AutocompleteActivityMode;
import
com.google.android.libraries.places.widget.model.AutocompletePrediction;
import com.google.android.libraries.places.widget.model.Place.Field;
import com.google.android.libraries.places.widget.model.Place.Type;
import com.google.maps.DirectionsApiRequest;
import com.google.maps.GeoApiContext;
import com.google.maps.PendingResult;
import com.google.maps.errors.ApiException;
import com.google.maps.model.DirectionsResult;
import com.google.maps.model.TravelMode;
import com.google.maps.model.Unit;
import org.joda.time.DateTime;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;

public class MainActivity extends AppCompatActivity implements


OnMapReadyCallback {

private GoogleMap mMap;


private PlacesClient placesClient;
private Button drawRouteButton;
private LatLng origin, destination;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

SupportMapFragment mapFragment = (SupportMapFragment)


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

drawRouteButton = findViewById(R.id.button_draw_route);
drawRouteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
drawRoute();
}
});
if (!Places.isInitialized()) {
Places.initialize(getApplicationContext(),
getString(R.string.google_maps_key));
}
placesClient = Places.createClient(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this,
R.raw.map_style));
LatLng defaultLocation = new LatLng(37.7749, -122.4194); // San
Francisco
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(defaultLocation,
12));
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in
Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}

private void drawRoute() {


if (origin == null || destination == null) {
Toast.makeText(this, "Please select origin and destination",
Toast.LENGTH_SHORT).show();
return;
}
DirectionsApiRequest directions = new DirectionsApiRequest(new
GeoApiContext.Builder()
.apiKey(getString(R.string.google_maps_key))
.build());

directions.origin(new com.google.maps.model.LatLng(origin.latitude,
origin.longitude));
directions.destination(new
com.google.maps.model.LatLng(destination.latitude, destination.longitude));
directions.mode(TravelMode.DRIVING);
directions.units(Unit.METRIC);
directions.departureTime(new DateTime());

directions.setCallback(new PendingResult.Callback<DirectionsResult>() {
@Override
public void onResult(DirectionsResult result) {
}

@Override
public void onFailure(Throwable e) {
}
});
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy