Сравнить коммиты

..
7 Коммитов
Автор SHA1 Сообщение Дата
Anton Tananaev 1b0559c98a Update version number 2018-10-18 16:05:48 +13:00
Anton Tananaev 2e0e7ea453 Fix merge issues 2018-10-18 15:44:58 +13:00
Anton Tananaev ac6d677ff4 Explicitly select location providers 2018-10-18 15:43:07 +13:00
Anton Tananaev cbfe90757d Disable advertising id collection 2018-09-22 08:51:41 +12:00
Anton Tananaev a9f4390ae4 Update app version 2018-09-15 08:54:32 +12:00
Anton Tananaev 8a938701c8 Improve service handling 2018-09-15 08:54:09 +12:00
Anton Tananaev 2319834c5b Handle runtime exceptions 2018-09-15 08:48:37 +12:00
5 изменённых файлов: 47 добавлений и 42 удалений
+2 -2
Просмотреть файл
@@ -9,8 +9,8 @@ android {
buildConfigField "boolean", "HIDDEN_APP", "false" buildConfigField "boolean", "HIDDEN_APP", "false"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 28 targetSdkVersion 28
versionCode 49 versionCode 52
versionName '5.12' versionName '5.15'
} }
lintOptions { lintOptions {
+4
Просмотреть файл
@@ -20,6 +20,10 @@
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:name=".MainApplication"> android:name=".MainApplication">
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:launchMode="singleTask" /> android:launchMode="singleTask" />
+12 -18
Просмотреть файл
@@ -20,15 +20,14 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.location.Criteria;
import android.location.Location; import android.location.Location;
import android.location.LocationListener; import android.location.LocationListener;
import android.location.LocationManager; import android.location.LocationManager;
import android.os.BatteryManager; import android.os.BatteryManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Looper;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
public class PositionProvider implements LocationListener { public class PositionProvider implements LocationListener {
@@ -69,29 +68,24 @@ public class PositionProvider implements LocationListener {
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
public void startUpdates() { public void startUpdates() {
locationManager.requestLocationUpdates( try {
distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0, locationManager.requestLocationUpdates(
getCriteria(preferences.getString(MainFragment.KEY_ACCURACY, "medium")), getProvider(preferences.getString(MainFragment.KEY_ACCURACY, "medium")),
this, Looper.myLooper()); distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0, this);
} catch (RuntimeException e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
}
} }
public static Criteria getCriteria(String accuracy) { public static String getProvider(String accuracy) {
Criteria criteria = new Criteria();
switch (accuracy) { switch (accuracy) {
case "high": case "high":
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH); return LocationManager.GPS_PROVIDER;
criteria.setPowerRequirement(Criteria.POWER_HIGH);
break;
case "low": case "low":
criteria.setHorizontalAccuracy(Criteria.ACCURACY_LOW); return LocationManager.PASSIVE_PROVIDER;
criteria.setPowerRequirement(Criteria.POWER_LOW);
break;
default: default:
criteria.setHorizontalAccuracy(Criteria.ACCURACY_MEDIUM); return LocationManager.NETWORK_PROVIDER;
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
break;
} }
return criteria;
} }
@Override @Override
+24 -20
Просмотреть файл
@@ -108,31 +108,35 @@ public class ShortcutActivity extends AppCompatActivity {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = PositionProvider.getCriteria( String provider = PositionProvider.getProvider(
preferences.getString(MainFragment.KEY_ACCURACY, "medium")); preferences.getString(MainFragment.KEY_ACCURACY, "medium"));
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true)); try {
if (location != null) { Location location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
sendAlarmLocation(location); if (location != null) {
} else { sendAlarmLocation(location);
locationManager.requestSingleUpdate(criteria, new LocationListener() { } else {
@Override locationManager.requestSingleUpdate(provider, new LocationListener() {
public void onLocationChanged(Location location) { @Override
sendAlarmLocation(location); public void onLocationChanged(Location location) {
} sendAlarmLocation(location);
}
@Override @Override
public void onStatusChanged(String provider, int status, Bundle extras) { public void onStatusChanged(String provider, int status, Bundle extras) {
} }
@Override @Override
public void onProviderEnabled(String provider) { public void onProviderEnabled(String provider) {
} }
@Override @Override
public void onProviderDisabled(String provider) { public void onProviderDisabled(String provider) {
} }
}, Looper.myLooper()); }, Looper.myLooper());
}
} catch (RuntimeException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
} }
} }
+5 -2
Просмотреть файл
@@ -78,14 +78,17 @@ public class TrackingService extends Service {
Log.i(TAG, "service create"); Log.i(TAG, "service create");
StatusActivity.addMessage(getString(R.string.status_service_create)); StatusActivity.addMessage(getString(R.string.status_service_create));
startForeground(NOTIFICATION_ID, createNotification(this));
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED 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) { && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
trackingController = new TrackingController(this); trackingController = new TrackingController(this);
trackingController.start(); trackingController.start();
} }
startForeground(NOTIFICATION_ID, createNotification(this)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class)); ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class));
}
} }
@Override @Override