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

...
9 Коммитов
Автор SHA1 Сообщение Дата
Anton Tananaev d2f653034d Update app version 2018-11-06 20:58:48 +13:00
Anton Tananaev ab5aec9721 Improvements in permissions handling 2018-11-06 20:57:17 +13:00
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
6 изменённых файлов: 56 добавлений и 58 удалений
+4 -4
Просмотреть файл
@@ -9,8 +9,8 @@ android {
buildConfigField "boolean", "HIDDEN_APP", "false"
minSdkVersion 15
targetSdkVersion 28
versionCode 49
versionName '5.12'
versionCode 53
versionName '5.16'
}
lintOptions {
@@ -35,10 +35,10 @@ android {
}
dependencies {
implementation 'com.android.support:design:28.0.0-rc02'
implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.robolectric:robolectric:3.8'
googleImplementation 'com.google.firebase:firebase-core:16.0.3'
googleImplementation 'com.google.firebase:firebase-core:16.0.5'
googleImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
}
+7
Просмотреть файл
@@ -12,6 +12,9 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-feature android:name="android.hardware.location.network" />
<uses-feature android:name="android.hardware.location.gps" />
<application
android:allowBackup="true"
android:networkSecurityConfig="@xml/network_security_config"
@@ -20,6 +23,10 @@
android:theme="@style/AppTheme"
android:name=".MainApplication">
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
+2 -10
Просмотреть файл
@@ -215,19 +215,11 @@ public class MainFragment extends PreferenceFragment implements OnSharedPreferen
private void startTrackingService(boolean checkPermission, boolean permission) {
if (checkPermission) {
Set<String> missingPermissions = new HashSet<>();
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (missingPermissions.isEmpty()) {
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
permission = true;
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]),
PERMISSIONS_REQUEST_LOCATION);
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_REQUEST_LOCATION);
}
return;
}
+11 -17
Просмотреть файл
@@ -20,15 +20,14 @@ 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 android.widget.Toast;
public class PositionProvider implements LocationListener {
@@ -69,29 +68,24 @@ public class PositionProvider implements LocationListener {
@SuppressLint("MissingPermission")
public void startUpdates() {
try {
locationManager.requestLocationUpdates(
distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0,
getCriteria(preferences.getString(MainFragment.KEY_ACCURACY, "medium")),
this, Looper.myLooper());
getProvider(preferences.getString(MainFragment.KEY_ACCURACY, "medium")),
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) {
Criteria criteria = new Criteria();
public static String getProvider(String accuracy) {
switch (accuracy) {
case "high":
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
break;
return LocationManager.GPS_PROVIDER;
case "low":
criteria.setHorizontalAccuracy(Criteria.ACCURACY_LOW);
criteria.setPowerRequirement(Criteria.POWER_LOW);
break;
return LocationManager.PASSIVE_PROVIDER;
default:
criteria.setHorizontalAccuracy(Criteria.ACCURACY_MEDIUM);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
break;
return LocationManager.NETWORK_PROVIDER;
}
return criteria;
}
@Override
+8 -5
Просмотреть файл
@@ -108,14 +108,15 @@ public class ShortcutActivity extends AppCompatActivity {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = PositionProvider.getCriteria(
String provider = PositionProvider.getProvider(
preferences.getString(MainFragment.KEY_ACCURACY, "medium"));
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true));
try {
Location location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
if (location != null) {
sendAlarmLocation(location);
} else {
locationManager.requestSingleUpdate(criteria, new LocationListener() {
locationManager.requestSingleUpdate(provider, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
sendAlarmLocation(location);
@@ -134,6 +135,9 @@ public class ShortcutActivity extends AppCompatActivity {
}
}, Looper.myLooper());
}
} catch (RuntimeException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void sendAlarmLocation(Location location) {
@@ -181,8 +185,7 @@ public class ShortcutActivity extends AppCompatActivity {
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) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
sendAlarm();
} else {
Toast.makeText(this, R.string.status_send_fail, Toast.LENGTH_SHORT).show();
+5 -3
Просмотреть файл
@@ -78,15 +78,17 @@ public class TrackingService extends Service {
Log.i(TAG, "service create");
StatusActivity.addMessage(getString(R.string.status_service_create));
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) {
startForeground(NOTIFICATION_ID, createNotification(this));
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
trackingController = new TrackingController(this);
trackingController.start();
}
startForeground(NOTIFICATION_ID, createNotification(this));
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class));
}
}
@Override
public IBinder onBind(Intent intent) {