0% found this document useful (0 votes)
10 views8 pages

Android Dimens for Location Tracking

This document contains code for an Android app that tracks location using GPS and network providers. The MainActivity requests location permissions if needed and gets the current location from the LocationTrack service when a button is clicked. LocationTrack uses the LocationManager to get location updates from GPS and/or network providers, and provides methods to check if location can be retrieved and show an alert if GPS is disabled.

Uploaded by

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

Android Dimens for Location Tracking

This document contains code for an Android app that tracks location using GPS and network providers. The MainActivity requests location permissions if needed and gets the current location from the LocationTrack service when a button is clicked. LocationTrack uses the LocationManager to get location updates from GPS and/or network providers, and provides methods to check if location can be retrieved and show an alert if GPS is disabled.

Uploaded by

Ninad Joshi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

//dimens.

xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<dimen name="activity_vertical_margin">8dp</dimen>
<dimen name="activity_horizontal_margin">8dp</dimen>
</resources>

//[Link]

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

import static [Link].ACCESS_COARSE_LOCATION;


import static [Link].ACCESS_FINE_LOCATION;

public class MainActivity extends AppCompatActivity {

private ArrayList permissionsToRequest;


private ArrayList permissionsRejected = new ArrayList();
private ArrayList permissions = new ArrayList();

private final static int ALL_PERMISSIONS_RESULT = 101;


LocationTrack locationTrack;

@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);

[Link](ACCESS_FINE_LOCATION);
[Link](ACCESS_COARSE_LOCATION);

permissionsToRequest = findUnAskedPermissions(permissions);

if ([Link].SDK_INT >= Build.VERSION_CODES.M) {

if ([Link]() > 0)
requestPermissions((String[]) [Link](new
String[[Link]()]),
ALL_PERMISSIONS_RESULT);
}

Button btn = (Button) findViewById([Link]);

[Link](new [Link]() {
@Override
public void onClick(View view) {

locationTrack = new LocationTrack([Link]);

if ([Link]()) {

double longitude = [Link]();


double latitude = [Link]();

[Link](getApplicationContext(),
"Longitude:" + [Link](longitude) +
"\nLatitude:" + [Link](latitude),
Toast.LENGTH_SHORT).show();
} else {

[Link]();
}

}
});

private ArrayList findUnAskedPermissions(ArrayList wanted) {


ArrayList result = new ArrayList();

for (Object perm : wanted) {


if (!hasPermission((String) perm)) {
[Link](perm);
}
}

return result;
}

private boolean hasPermission(String permission) {


if (canMakeSmores()) {
if ([Link].SDK_INT >= Build.VERSION_CODES.M) {
return (checkSelfPermission(permission) ==
PackageManager.PERMISSION_GRANTED);
}
}
return true;
}
private boolean canMakeSmores() {
return ([Link].SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
}

@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode, String[]
permissions, int[] grantResults) {

switch (requestCode) {

case ALL_PERMISSIONS_RESULT:
for (Object perms : permissionsToRequest) {
if (!hasPermission((String) perms)) {
[Link](perms);
}
}

if ([Link]() > 0) {

if ([Link].SDK_INT >= Build.VERSION_CODES.M) {


if (shouldShowRequestPermissionRationale((String)
[Link](0))) {
showMessageOKCancel("These permissions are
mandatory for the application. Please allow access.",
new [Link]() {
@Override
public void onClick(DialogInterface
dialog, int which) {
if ([Link].SDK_INT >=
Build.VERSION_CODES.M) {
requestPermissions((String[])
[Link](new String[[Link]()]),

ALL_PERMISSIONS_RESULT);
}
}
});
return;
}
}

break;
}

private void showMessageOKCancel(String message,


[Link] okListener) {
new [Link]([Link])
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}

@Override
protected void onDestroy() {
[Link]();
[Link]();
}
}

//[Link]
package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];

public class LocationTrack extends Service implements LocationListener {

private final Context mContext;


boolean checkGPS = false;
boolean checkNetwork = false;
boolean canGetLocation = false;
Location loc;
double latitude;
double longitude;
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;
protected LocationManager locationManager;

public LocationTrack(Context mContext) {


[Link] = mContext;
getLocation();
}

private Location getLocation() {


try {
locationManager = (LocationManager)
[Link](LOCATION_SERVICE);

// get GPS status


checkGPS =
[Link](LocationManager.GPS_PROVIDER);

// get network provider status


checkNetwork =
[Link](LocationManager.NETWORK_PROVIDER);

if (!checkGPS && !checkNetwork) {


[Link](mContext, "No Service Provider is available",
Toast.LENGTH_SHORT).show();
} else {
[Link] = true;

// if GPS Enabled get lat/long using GPS Services


if (checkGPS) {

if ([Link](mContext,
[Link].ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
[Link](mContext,
[Link].ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {

[Link](LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null) {
loc =
[Link](LocationManager.GPS_PROVIDER);
if (loc != null) {
latitude = [Link]();
longitude = [Link]();
}
}

}
loc =
[Link](LocationManager.GPS_PROVIDER);

if (checkNetwork) {

if ([Link](mContext,
[Link].ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
[Link](mContext,
[Link].ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
}

[Link](LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

if (locationManager != null) {
loc = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (loc != null) {
latitude = [Link]();
longitude = [Link]();
}
}

} catch (Exception e) {
[Link]();
}

return loc;
}

public double getLongitude() {


if (loc != null) {
longitude = [Link]();
}
return longitude;
}

public double getLatitude() {


if (loc != null) {
latitude = [Link]();
}
return latitude;
}

public boolean canGetLocation() {


return [Link];
}

public void showSettingsAlert() {


[Link] alertDialog = new [Link](mContext);

[Link]("GPS is not Enabled!");

[Link]("Do you want to turn on GPS?");

[Link]("Yes", new
[Link]() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new
Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
[Link](intent);
}
});

[Link]("No", new
[Link]() {
public void onClick(DialogInterface dialog, int which) {
[Link]();
}
});

[Link]();
}

public void stopListener() {


if (locationManager != null) {

if ([Link](mContext,
[Link].ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
[Link](mContext,
[Link].ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {

return;
}
[Link]([Link]);
}
}

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onLocationChanged(Location location) {

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

@Override
public void onProviderEnabled(String s) {

}
@Override
public void onProviderDisabled(String s) {

}
}

You might also like