Сравнить коммиты
| Автор | SHA1 | Дата | |
|---|---|---|---|
|
|
3e2b508ea7 | ||
|
|
fd4d616812 | ||
|
|
4f6571e572 | ||
|
|
d3025b437b | ||
|
|
1e861ef0ac | ||
|
|
43afc57114 | ||
|
|
d47783808f | ||
|
|
3ef2272227 | ||
|
|
3625ee42db | ||
|
|
385826c3c1 | ||
|
|
1426926c8e | ||
|
|
4f680d33c9 | ||
|
|
2dad912da5 | ||
|
|
290a7d80eb | ||
|
|
44228feb2f | ||
|
|
d887bc4119 | ||
|
|
c892a20104 |
@@ -9,8 +9,8 @@ android {
|
|||||||
buildConfigField "boolean", "HIDDEN_APP", "false"
|
buildConfigField "boolean", "HIDDEN_APP", "false"
|
||||||
minSdkVersion 15
|
minSdkVersion 15
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
versionCode 43
|
versionCode 47
|
||||||
versionName '5.6'
|
versionName '5.10'
|
||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
@@ -29,16 +29,17 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile 'com.android.support:design:27.0.2'
|
compile 'com.android.support:design:27.1.0'
|
||||||
compile 'com.mapzen.android:lost:3.0.4'
|
compile 'com.mapzen.android:lost:3.0.4'
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
testCompile 'org.robolectric:robolectric:3.6.1'
|
testCompile 'org.robolectric:robolectric:3.6.1'
|
||||||
googleCompile 'com.google.firebase:firebase-core:11.8.0'
|
googleCompile 'com.google.firebase:firebase-core:11.8.0'
|
||||||
googleCompile 'com.google.firebase:firebase-crash:11.8.0'
|
googleCompile 'com.crashlytics.sdk.android:crashlytics:2.9.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getGradle().getStartParameter().getTaskRequests().toString().contains("Google")) {
|
if (getGradle().getStartParameter().getTaskRequests().toString().contains("Google")) {
|
||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
|
apply plugin: 'io.fabric'
|
||||||
|
|
||||||
task copyJson(type: Copy) {
|
task copyJson(type: Copy) {
|
||||||
from '../../traccar-shared/google-services'
|
from '../../traccar-shared/google-services'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
tools:replace="android:label">
|
tools:replace="android:label">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity">
|
android:name="org.traccar.client.MainActivity">
|
||||||
<intent-filter android:label="@string/app_name">
|
<intent-filter android:label="@string/app_name">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
|||||||
@@ -150,13 +150,6 @@ public class MainFragment extends PreferenceFragment implements OnSharedPreferen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasPermission(String permission) {
|
|
||||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return ContextCompat.checkSelfPermission(getActivity(), permission) == PackageManager.PERMISSION_GRANTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
@@ -223,10 +216,10 @@ public class MainFragment extends PreferenceFragment implements OnSharedPreferen
|
|||||||
private void startTrackingService(boolean checkPermission, boolean permission) {
|
private void startTrackingService(boolean checkPermission, boolean permission) {
|
||||||
if (checkPermission) {
|
if (checkPermission) {
|
||||||
Set<String> missingPermissions = new HashSet<>();
|
Set<String> missingPermissions = new HashSet<>();
|
||||||
if (!hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)) {
|
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
|
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
|
||||||
}
|
}
|
||||||
if (!hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)) {
|
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
|
missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
|
||||||
}
|
}
|
||||||
if (missingPermissions.isEmpty()) {
|
if (missingPermissions.isEmpty()) {
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
|||||||
|
|
||||||
private Location lastLocation;
|
private Location lastLocation;
|
||||||
|
|
||||||
|
private boolean started;
|
||||||
|
|
||||||
public PositionProvider(Context context, PositionListener listener) {
|
public PositionProvider(Context context, PositionListener listener) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
@@ -66,6 +68,7 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startUpdates() {
|
public void startUpdates() {
|
||||||
|
started = true;
|
||||||
apiClient = new LostApiClient.Builder(context).addConnectionCallbacks(this).build();
|
apiClient = new LostApiClient.Builder(context).addConnectionCallbacks(this).build();
|
||||||
apiClient.connect();
|
apiClient.connect();
|
||||||
}
|
}
|
||||||
@@ -84,11 +87,14 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
|||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
@Override
|
@Override
|
||||||
public void onConnected() {
|
public void onConnected() {
|
||||||
|
if (started) {
|
||||||
LocationRequest request = LocationRequest.create()
|
LocationRequest request = LocationRequest.create()
|
||||||
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
|
.setPriority(getPriority(preferences.getString(MainFragment.KEY_ACCURACY, "medium")))
|
||||||
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval);
|
.setInterval(distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval);
|
||||||
|
|
||||||
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, this);
|
LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, request, this);
|
||||||
|
} else {
|
||||||
|
apiClient.disconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -111,10 +117,12 @@ public class PositionProvider implements LostApiClient.ConnectionCallbacks, Loca
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stopUpdates() {
|
public void stopUpdates() {
|
||||||
|
if (apiClient.isConnected()) {
|
||||||
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
|
LocationServices.FusedLocationApi.removeLocationUpdates(apiClient, this);
|
||||||
|
|
||||||
apiClient.disconnect();
|
apiClient.disconnect();
|
||||||
}
|
}
|
||||||
|
started = false;
|
||||||
|
}
|
||||||
|
|
||||||
public static double getBatteryLevel(Context context) {
|
public static double getBatteryLevel(Context context) {
|
||||||
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ public class ShortcutActivity extends AppCompatActivity implements LostApiClient
|
|||||||
|
|
||||||
private void sendAlarm() {
|
private void sendAlarm() {
|
||||||
apiClient = new LostApiClient.Builder(this).addConnectionCallbacks(this).build();
|
apiClient = new LostApiClient.Builder(this).addConnectionCallbacks(this).build();
|
||||||
|
apiClient.connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MissingPermission")
|
@SuppressWarnings("MissingPermission")
|
||||||
|
|||||||
@@ -100,7 +100,8 @@ public class TrackingController implements PositionProvider.PositionListener, Ne
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNetworkUpdate(boolean isOnline) {
|
public void onNetworkUpdate(boolean isOnline) {
|
||||||
StatusActivity.addMessage(context.getString(R.string.status_connectivity_change));
|
int message = isOnline ? R.string.status_network_online : R.string.status_network_offline;
|
||||||
|
StatusActivity.addMessage(context.getString(message));
|
||||||
if (!this.isOnline && isOnline) {
|
if (!this.isOnline && isOnline) {
|
||||||
read();
|
read();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.app.PendingIntent;
|
|||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
@@ -77,8 +78,11 @@ 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));
|
||||||
|
|
||||||
|
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) {
|
||||||
trackingController = new TrackingController(this);
|
trackingController = new TrackingController(this);
|
||||||
trackingController.start();
|
trackingController.start();
|
||||||
|
}
|
||||||
|
|
||||||
startForeground(NOTIFICATION_ID, createNotification(this));
|
startForeground(NOTIFICATION_ID, createNotification(this));
|
||||||
ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class));
|
ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class));
|
||||||
|
|||||||
@@ -39,7 +39,8 @@
|
|||||||
<string name="status_send_success">Send successfully</string>
|
<string name="status_send_success">Send successfully</string>
|
||||||
<string name="status_send_fail">Send failed</string>
|
<string name="status_send_fail">Send failed</string>
|
||||||
<string name="status_location_update">Location update</string>
|
<string name="status_location_update">Location update</string>
|
||||||
<string name="status_connectivity_change">Connectivity change</string>
|
<string name="status_network_online">Network online</string>
|
||||||
|
<string name="status_network_offline">Network offline</string>
|
||||||
<string name="hidden_app_name">Device Settings</string>
|
<string name="hidden_app_name">Device Settings</string>
|
||||||
<string name="hidden_alert">The app has been hidden. To open it again please dial 8722227 (TRACCAR).</string>
|
<string name="hidden_alert">The app has been hidden. To open it again please dial 8722227 (TRACCAR).</string>
|
||||||
<string name="error_msg_invalid_url">Please enter a valid http:// or https:// URL</string>
|
<string name="error_msg_invalid_url">Please enter a valid http:// or https:// URL</string>
|
||||||
|
|||||||
+5
-1
@@ -1,16 +1,20 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
|
google()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven { url 'https://maven.fabric.io/public' }
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
classpath 'com.android.tools.build:gradle:3.0.1'
|
||||||
classpath 'com.google.gms:google-services:3.1.1'
|
classpath 'com.google.gms:google-services:3.1.1'
|
||||||
|
classpath 'io.fabric.tools:gradle:1.25.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
|
||||||
google()
|
google()
|
||||||
|
jcenter()
|
||||||
|
maven { url 'https://maven.fabric.io/public' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user