Implement optional foreground service
Этот коммит содержится в:
@@ -40,6 +40,7 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
|
|||||||
public static final String KEY_INTERVAL = "interval";
|
public static final String KEY_INTERVAL = "interval";
|
||||||
public static final String KEY_PROVIDER = "provider";
|
public static final String KEY_PROVIDER = "provider";
|
||||||
public static final String KEY_STATUS = "status";
|
public static final String KEY_STATUS = "status";
|
||||||
|
public static final String KEY_FOREGROUND = "foreground";
|
||||||
|
|
||||||
private boolean firstLaunch; // DELME
|
private boolean firstLaunch; // DELME
|
||||||
|
|
||||||
@@ -81,6 +82,7 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
|
|||||||
preferenceScreen.findPreference(KEY_PORT).setEnabled(enabled);
|
preferenceScreen.findPreference(KEY_PORT).setEnabled(enabled);
|
||||||
preferenceScreen.findPreference(KEY_INTERVAL).setEnabled(enabled);
|
preferenceScreen.findPreference(KEY_INTERVAL).setEnabled(enabled);
|
||||||
preferenceScreen.findPreference(KEY_PROVIDER).setEnabled(enabled);
|
preferenceScreen.findPreference(KEY_PROVIDER).setEnabled(enabled);
|
||||||
|
preferenceScreen.findPreference(KEY_FOREGROUND).setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,18 +16,24 @@
|
|||||||
package org.traccar.client;
|
package org.traccar.client;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
|
import android.app.Notification;
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
public class TrackingService extends Service {
|
public class TrackingService extends Service {
|
||||||
|
|
||||||
private static final String TAG = TrackingService.class.getSimpleName();
|
private static final String TAG = TrackingService.class.getSimpleName();
|
||||||
|
private static final int NOTIFICATION_ID = 1;
|
||||||
|
|
||||||
private TrackingController trackingController;
|
private TrackingController trackingController;
|
||||||
|
|
||||||
|
private boolean foreground;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
Log.i(TAG, "service create");
|
Log.i(TAG, "service create");
|
||||||
@@ -35,6 +41,8 @@ public class TrackingService extends Service {
|
|||||||
|
|
||||||
trackingController = new TrackingController(this);
|
trackingController = new TrackingController(this);
|
||||||
trackingController.start();
|
trackingController.start();
|
||||||
|
|
||||||
|
foreground = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(MainActivity.KEY_FOREGROUND, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -46,6 +54,17 @@ public class TrackingService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Intent intent, int startId) {
|
public void onStart(Intent intent, int startId) {
|
||||||
AutostartReceiver.completeWakefulIntent(intent);
|
AutostartReceiver.completeWakefulIntent(intent);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR && foreground) {
|
||||||
|
Intent notificationIntent = new Intent(this, MainActivity.class);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
|
||||||
|
|
||||||
|
Notification notification = new Notification(android.R.drawable.stat_notify_sync_noanim, null, 0);
|
||||||
|
notification.setLatestEventInfo(
|
||||||
|
this, getString(R.string.app_name), getString(R.string.settings_status_on_summary), pendingIntent);
|
||||||
|
|
||||||
|
startForeground(NOTIFICATION_ID, notification);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.ECLAIR)
|
@TargetApi(Build.VERSION_CODES.ECLAIR)
|
||||||
@@ -60,6 +79,10 @@ public class TrackingService extends Service {
|
|||||||
Log.i(TAG, "service destroy");
|
Log.i(TAG, "service destroy");
|
||||||
StatusActivity.addMessage(getString(R.string.status_service_destroy));
|
StatusActivity.addMessage(getString(R.string.status_service_destroy));
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR && foreground) {
|
||||||
|
stopForeground(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (trackingController != null) {
|
if (trackingController != null) {
|
||||||
trackingController.stop();
|
trackingController.stop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>GPS</item>
|
<item>GPS</item>
|
||||||
<item>Mobilní síť</item>
|
<item>Mobilní síť</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Popředí služba</string>
|
||||||
|
<string name="settings_foreground_summary">Zvýšit prioritu služba</string>
|
||||||
|
|
||||||
<string name="menu_status">Stav</string>
|
<string name="menu_status">Stav</string>
|
||||||
<string name="menu_about">O aplikaci</string>
|
<string name="menu_about">O aplikaci</string>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>GPS udbyder</item>
|
<item>GPS udbyder</item>
|
||||||
<item>Netværks udbyder</item>
|
<item>Netværks udbyder</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Forgrunden tjeneste</string>
|
||||||
|
<string name="settings_foreground_summary">Øg tjeneste prioritet</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">Om</string>
|
<string name="menu_about">Om</string>
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
<item>GPS</item>
|
<item>GPS</item>
|
||||||
<item>Netzwerk</item>
|
<item>Netzwerk</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Vordergrund service</string>
|
||||||
|
<string name="settings_foreground_summary">Erhöhen service priorität</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">Über</string>
|
<string name="menu_about">Über</string>
|
||||||
<string name="menu_clear">Leeren</string>
|
<string name="menu_clear">Leeren</string>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>Proveedor GPS</item>
|
<item>Proveedor GPS</item>
|
||||||
<item>Proveedor de red</item>
|
<item>Proveedor de red</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Servicio de primer plano</string>
|
||||||
|
<string name="settings_foreground_summary">Aumentar prioridad de servicio</string>
|
||||||
|
|
||||||
<string name="menu_status">Estado</string>
|
<string name="menu_status">Estado</string>
|
||||||
<string name="menu_about">Acerca de…</string>
|
<string name="menu_about">Acerca de…</string>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>Mode GPS uniquement</item>
|
<item>Mode GPS uniquement</item>
|
||||||
<item>Mode cellulaire uniquement</item>
|
<item>Mode cellulaire uniquement</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Un service de premier plan</string>
|
||||||
|
<string name="settings_foreground_summary">Augmenter la priorité de service</string>
|
||||||
|
|
||||||
<string name="menu_status">Etat</string>
|
<string name="menu_status">Etat</string>
|
||||||
<string name="menu_about">A propos</string>
|
<string name="menu_about">A propos</string>
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
<item>GPS-lokalisering</item>
|
<item>GPS-lokalisering</item>
|
||||||
<item>Nettverkslokalisering</item>
|
<item>Nettverkslokalisering</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Forgrunnen tjeneste</string>
|
||||||
|
<string name="settings_foreground_summary">Øk tjeneste prioritet</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">Om</string>
|
<string name="menu_about">Om</string>
|
||||||
<string name="menu_clear">Tøm</string>
|
<string name="menu_clear">Tøm</string>
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
<item>Provedor GPS</item>
|
<item>Provedor GPS</item>
|
||||||
<item>Provedor Rede</item>
|
<item>Provedor Rede</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Serviço primeiro plano</string>
|
||||||
|
<string name="settings_foreground_summary">Aumentar a prioridade de serviço</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">Sobre</string>
|
<string name="menu_about">Sobre</string>
|
||||||
<string name="menu_clear">Limpar</string>
|
<string name="menu_clear">Limpar</string>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>GPS провайдер</item>
|
<item>GPS провайдер</item>
|
||||||
<item>Сетевой провайдер</item>
|
<item>Сетевой провайдер</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Приотитетный сервис</string>
|
||||||
|
<string name="settings_foreground_summary">Увеличить приоритет сервиса</string>
|
||||||
|
|
||||||
<string name="menu_status">Состояние</string>
|
<string name="menu_status">Состояние</string>
|
||||||
<string name="menu_about">О программе</string>
|
<string name="menu_about">О программе</string>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<item>GPS provajder</item>
|
<item>GPS provajder</item>
|
||||||
<item>Provajder Mreže</item>
|
<item>Provajder Mreže</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Prvi plan servis</string>
|
||||||
|
<string name="settings_foreground_summary">Povecanje usluga prioritet</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">O klijentu</string>
|
<string name="menu_about">O klijentu</string>
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
<item>GPS provider</item>
|
<item>GPS provider</item>
|
||||||
<item>Network provider</item>
|
<item>Network provider</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string name="settings_foreground_title">Foreground service</string>
|
||||||
|
<string name="settings_foreground_summary">Increase service priority</string>
|
||||||
|
|
||||||
<string name="menu_status">Status</string>
|
<string name="menu_status">Status</string>
|
||||||
<string name="menu_about">About</string>
|
<string name="menu_about">About</string>
|
||||||
<string name="menu_clear">Clear</string>
|
<string name="menu_clear">Clear</string>
|
||||||
|
|||||||
@@ -42,4 +42,10 @@
|
|||||||
android:summary="@string/settings_provider_summary"
|
android:summary="@string/settings_provider_summary"
|
||||||
android:title="@string/settings_provider_title" />
|
android:title="@string/settings_provider_title" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="foreground"
|
||||||
|
android:summary="@string/settings_foreground_summary"
|
||||||
|
android:title="@string/settings_foreground_title" />
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
@@ -40,4 +40,10 @@
|
|||||||
android:summary="@string/settings_provider_summary"
|
android:summary="@string/settings_provider_summary"
|
||||||
android:title="@string/settings_provider_title" />
|
android:title="@string/settings_provider_title" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="foreground"
|
||||||
|
android:summary="@string/settings_foreground_summary"
|
||||||
|
android:title="@string/settings_foreground_title" />
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user