diff --git a/AirKoality/app/src/main/AndroidManifest.xml b/AirKoality/app/src/main/AndroidManifest.xml
index 2510f05..4ed3681 100644
--- a/AirKoality/app/src/main/AndroidManifest.xml
+++ b/AirKoality/app/src/main/AndroidManifest.xml
@@ -4,9 +4,13 @@
+
+
+
+
Build.VERSION_CODES.O) {
+
+ NotificationChannel locationServiceChannel = new NotificationChannel(
+ CHANNEL_ID,
+ "Location Service Channel",
+ NotificationManager.IMPORTANCE_LOW);
+ NotificationManager manager = getSystemService(NotificationManager.class);
+ manager.createNotificationChannel(locationServiceChannel);
+ }
+
+
+ }
+}
diff --git a/AirKoality/app/src/main/java/at/fhj/airkoality/service/LocationService.java b/AirKoality/app/src/main/java/at/fhj/airkoality/service/LocationService.java
new file mode 100644
index 0000000..fe9ab56
--- /dev/null
+++ b/AirKoality/app/src/main/java/at/fhj/airkoality/service/LocationService.java
@@ -0,0 +1,71 @@
+package at.fhj.airkoality.service;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.content.ContextCompat;
+import android.util.Log;
+
+import at.fhj.airkoality.AirKoalityApplication;
+import at.fhj.airkoality.R;
+import at.fhj.airkoality.ui.activity.MainActivity;
+
+
+public class LocationService extends Service {
+
+ private String TAG = "LocationService";
+
+ private Notification notification;
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+
+ Log.d(TAG, "Service started");
+ startForeground(1337,notification);
+ return START_STICKY;
+
+ }
+
+ @Override
+ public void onCreate(){
+ Log.d(TAG, "Service created");
+
+ super.onCreate();
+ setupNotification();
+
+ }
+
+ @Override
+ public void onDestroy(){
+ Log.d(TAG, "Service destroyed");
+ super.onDestroy();
+
+ }
+
+
+ private void setupNotification() {
+ Intent notificationIntent = new Intent(this, MainActivity.class);
+
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+
+ notification = new NotificationCompat.Builder(this, AirKoalityApplication.CHANNEL_ID)
+ .setContentText("Updating location")
+ .setContentTitle("AirKoality-lab Location Service")
+ .setSmallIcon(R.drawable.ic_phone_android_black_24dp)
+ .setContentIntent(pendingIntent).build();
+ }
+
+
+
+
+}
diff --git a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java
index 6505bc2..ad7069f 100644
--- a/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java
+++ b/AirKoality/app/src/main/java/at/fhj/airkoality/ui/activity/MainActivity.java
@@ -11,6 +11,8 @@ import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
+import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
@@ -26,6 +28,7 @@ import at.fhj.airkoality.db.room.AirKoalityDB;
import at.fhj.airkoality.model.Location;
import at.fhj.airkoality.network.HttpsGetTask;
import at.fhj.airkoality.network.RequestCallback;
+import at.fhj.airkoality.service.LocationService;
import at.fhj.airkoality.ui.fragment.LocationListFragment;
import at.fhj.airkoality.ui.fragment.MapFragment;
@@ -155,6 +158,46 @@ public class MainActivity extends AppCompatActivity implements RequestCallback {
}
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+
+
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.main_menue, menu);
+ return true;
+
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()){
+ case R.id.action_service_on:
+ startLocationService();
+ return true;
+ case R.id.action_service_off:
+ stopLocationService();
+ return true;
+ default:
+ return false;
+ }
+
+
+ }
+
+ private void startLocationService(){
+ Intent intent = new Intent(this, LocationService.class);
+ startService(intent);
+
+}
+
+ private void stopLocationService(){
+
+ Intent intent = new Intent(this, LocationService.class);
+ stopService(intent);
+
+ }
+
private void updateFragments() {
runOnUiThread(() -> {
locationListFragment.refresh();
diff --git a/AirKoality/app/src/main/res/drawable/ic_location_off.xml b/AirKoality/app/src/main/res/drawable/ic_location_off.xml
new file mode 100644
index 0000000..3d0314d
--- /dev/null
+++ b/AirKoality/app/src/main/res/drawable/ic_location_off.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/AirKoality/app/src/main/res/drawable/ic_location_on.xml b/AirKoality/app/src/main/res/drawable/ic_location_on.xml
new file mode 100644
index 0000000..e054362
--- /dev/null
+++ b/AirKoality/app/src/main/res/drawable/ic_location_on.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/AirKoality/app/src/main/res/drawable/ic_phone_android_black_24dp.xml b/AirKoality/app/src/main/res/drawable/ic_phone_android_black_24dp.xml
new file mode 100644
index 0000000..a930a79
--- /dev/null
+++ b/AirKoality/app/src/main/res/drawable/ic_phone_android_black_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/AirKoality/app/src/main/res/menu/main_menue.xml b/AirKoality/app/src/main/res/menu/main_menue.xml
new file mode 100644
index 0000000..0768208
--- /dev/null
+++ b/AirKoality/app/src/main/res/menu/main_menue.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 558262e..6d838d1 100644
--- a/README.md
+++ b/README.md
@@ -72,4 +72,19 @@ RecyclerView -> Items der View wiederverwendbar machen
- SQ-Lite implementierung angeschaut aber unser Projekt wird auf Room aufgesetzt
- Room arbeitet mit Annotationen -> viel weniger Code im vergleich zu SQ-Lite
- Network
- - HttpsGet Methoden implementiert (waren vorgegeben)
\ No newline at end of file
+ - HttpsGet Methoden implementiert (waren vorgegeben)
+
+
+## 10.05.2019 - Lab 5
+
+- Unterschied Service - Background Task
+ - Service: Wenn etwas im Hintergrund laufen muss (z.B. Nuki App)
+ - BT: z.B Musik Player, immer wenn der User nicht mit der App Interagieren will
+
+Service sollte immmer eine Aktion die er ausführt in einem extra Thread auslagern.
+
+Service wird im Manifest deklariert
+Um einen Foregroundservice zu starten muss das innerhalb von 5 Sekunden nach "start Service" (Intent)
+
+
+Notifications benötigen immer einen Channel (ab Android O verfügbar)
\ No newline at end of file