Remove Lost library
Этот коммит содержится в:
@@ -35,12 +35,11 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.android.support:design:28.0.0-rc01'
|
||||
implementation 'com.mapzen.android:lost:3.0.4'
|
||||
implementation 'com.android.support:design:28.0.0-rc02'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
testImplementation 'org.robolectric:robolectric:3.8'
|
||||
googleImplementation 'com.google.firebase:firebase-core:16.0.1'
|
||||
googleImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
|
||||
googleImplementation 'com.google.firebase:firebase-core:16.0.3'
|
||||
googleImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
|
||||
}
|
||||
|
||||
if (getGradle().getStartParameter().getTaskRequests().toString().contains("Google")) {
|
||||
|
||||
@@ -20,17 +20,17 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.location.Criteria;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.mapzen.android.lost.api.LocationListener;
|
||||
import com.mapzen.android.lost.api.LocationRequest;
|
||||
import com.mapzen.android.lost.api.LocationServices;
|
||||
import com.mapzen.android.lost.api.LostApiClient;
|
||||
|
||||
public class PositionProvider implements LostApiClient.ConnectionCallbacks, LocationListener {
|
||||
public class PositionProvider implements LocationListener {
|
||||
|
||||
private static final String TAG = PositionProvider.class.getSimpleName();
|
||||
|
||||
@@ -44,7 +44,7 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
||||
|
||||
private final Context context;
|
||||
private SharedPreferences preferences;
|
||||
private LostApiClient apiClient;
|
||||
private LocationManager locationManager;
|
||||
|
||||
private String deviceId;
|
||||
private long interval;
|
||||
@@ -53,12 +53,12 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
||||
|
||||
private Location lastLocation;
|
||||
|
||||
private boolean started;
|
||||
|
||||
public PositionProvider(Context context, PositionListener listener) {
|
||||
this.context = context;
|
||||
this.listener = listener;
|
||||
|
||||
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
|
||||
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
deviceId = preferences.getString(MainFragment.KEY_DEVICE, "undefined");
|
||||
@@ -67,34 +67,31 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
||||
angle = Integer.parseInt(preferences.getString(MainFragment.KEY_ANGLE, "0"));
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
public void startUpdates() {
|
||||
started = true;
|
||||
apiClient = new LostApiClient.Builder(context).addConnectionCallbacks(this).build();
|
||||
apiClient.connect();
|
||||
locationManager.requestLocationUpdates(
|
||||
distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0,
|
||||
getCriteria(preferences.getString(MainFragment.KEY_ACCURACY, "medium")),
|
||||
this, Looper.myLooper());
|
||||
}
|
||||
|
||||
private int getPriority(String accuracy) {
|
||||
public static Criteria getCriteria(String accuracy) {
|
||||
Criteria criteria = new Criteria();
|
||||
switch (accuracy) {
|
||||
case "high":
|
||||
return LocationRequest.PRIORITY_HIGH_ACCURACY;
|
||||
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
|
||||
criteria.setPowerRequirement(Criteria.POWER_HIGH);
|
||||
break;
|
||||
case "low":
|
||||
return LocationRequest.PRIORITY_LOW_POWER;
|
||||
criteria.setHorizontalAccuracy(Criteria.ACCURACY_LOW);
|
||||
criteria.setPowerRequirement(Criteria.POWER_LOW);
|
||||
break;
|
||||
default:
|
||||
return LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
@Override
|
||||
public void onConnected() {
|
||||
if (started) {
|
||||
LocationRequest request = LocationRequest.create()
|
||||
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
|
||||
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval);
|
||||
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, this);
|
||||
} else {
|
||||
apiClient.disconnect();
|
||||
criteria.setHorizontalAccuracy(Criteria.ACCURACY_MEDIUM);
|
||||
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
|
||||
break;
|
||||
}
|
||||
return criteria;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,16 +109,19 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionSuspended() {
|
||||
Log.i(TAG, "lost client suspended");
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
}
|
||||
|
||||
public void stopUpdates() {
|
||||
if (apiClient.isConnected()) {
|
||||
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
|
||||
apiClient.disconnect();
|
||||
}
|
||||
started = false;
|
||||
locationManager.removeUpdates(this);
|
||||
}
|
||||
|
||||
public static double getBatteryLevel(Context context) {
|
||||
|
||||
@@ -15,10 +15,16 @@
|
||||
*/
|
||||
package org.traccar.client;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.location.Criteria;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
@@ -32,10 +38,7 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.mapzen.android.lost.api.LocationServices;
|
||||
import com.mapzen.android.lost.api.LostApiClient;
|
||||
|
||||
public class ShortcutActivity extends AppCompatActivity implements LostApiClient.ConnectionCallbacks {
|
||||
public class ShortcutActivity extends AppCompatActivity {
|
||||
|
||||
public static final String EXTRA_ACTION = "action";
|
||||
public static final String ACTION_START = "start";
|
||||
@@ -44,8 +47,6 @@ public class ShortcutActivity extends AppCompatActivity implements LostApiClient
|
||||
|
||||
private static final String ALARM_SOS = "sos";
|
||||
|
||||
private LostApiClient apiClient;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -102,20 +103,42 @@ public class ShortcutActivity extends AppCompatActivity implements LostApiClient
|
||||
setResult(RESULT_OK, ShortcutManagerCompat.createShortcutResultIntent(this, shortcut));
|
||||
}
|
||||
|
||||
@SuppressWarnings("MissingPermission")
|
||||
private void sendAlarm() {
|
||||
apiClient = new LostApiClient.Builder(this).addConnectionCallbacks(this).build();
|
||||
apiClient.connect();
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||
|
||||
Criteria criteria = PositionProvider.getCriteria(
|
||||
preferences.getString(MainFragment.KEY_ACCURACY, "medium"));
|
||||
|
||||
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true));
|
||||
if (location != null) {
|
||||
sendAlarmLocation(location);
|
||||
} else {
|
||||
locationManager.requestSingleUpdate(criteria, new LocationListener() {
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
sendAlarmLocation(location);
|
||||
}
|
||||
|
||||
@SuppressWarnings("MissingPermission")
|
||||
@Override
|
||||
public void onConnected() {
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
}
|
||||
}, Looper.myLooper());
|
||||
}
|
||||
}
|
||||
|
||||
private void sendAlarmLocation(Location location) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
Location location = LocationServices.FusedLocationApi.getLastLocation(apiClient);
|
||||
|
||||
if (location != null) {
|
||||
|
||||
Position position = new Position(
|
||||
preferences.getString(MainFragment.KEY_DEVICE, null),
|
||||
location, PositionProvider.getBatteryLevel(this));
|
||||
@@ -133,16 +156,6 @@ public class ShortcutActivity extends AppCompatActivity implements LostApiClient
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
Toast.makeText(this, R.string.status_send_fail, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
apiClient.disconnect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionSuspended() {
|
||||
}
|
||||
|
||||
private boolean executeAction(Intent intent) {
|
||||
@@ -168,7 +181,12 @@ public class ShortcutActivity extends AppCompatActivity implements LostApiClient
|
||||
Toast.makeText(this, R.string.status_service_destroy, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case ACTION_SOS:
|
||||
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|
||||
&& ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
|
||||
sendAlarm();
|
||||
} else {
|
||||
Toast.makeText(this, R.string.status_send_fail, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
break;
|
||||
}
|
||||
finish();
|
||||
|
||||
Ссылка в новой задаче
Block a user