Service is now running in foreground.

This commit is contained in:
Filip Strajnar 2024-10-19 16:34:17 +02:00
parent 1b7e725026
commit ee8fdc90e6
3 changed files with 28 additions and 2 deletions

View file

@ -5,6 +5,10 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<application
android:allowBackup="true"
@ -19,7 +23,9 @@
<service
android:name=".LocationLoggingService"
android:enabled="true"
android:exported="true"></service>
android:exported="true"
android:foregroundServiceType="location"
/>
<activity
android:name=".MainActivity"

View file

@ -1,8 +1,11 @@
package com.proculite.logmylocation;
import android.annotation.SuppressLint;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
@ -12,6 +15,8 @@ import android.os.IBinder;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.ServiceCompat;
import androidx.core.location.LocationManagerCompat;
import androidx.room.Room;
@ -33,6 +38,21 @@ public class LocationLoggingService extends Service implements LocationListener
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "Service started.");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
NotificationChannel notificationChannel = new NotificationChannel(
"Foreground",
"Foreground",
NotificationManager.IMPORTANCE_DEFAULT
);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(notificationChannel);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, notificationChannel.getId());
builder.setSmallIcon(R.drawable.ic_launcher_foreground);
builder.setContentText("Started service in foreground.");
ServiceCompat.startForeground(this,3784583, builder.build(), ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION);
}
LocationDatabase database = Room
.databaseBuilder(getApplicationContext(), LocationDatabase.class, "location")
.fallbackToDestructiveMigration()

View file

@ -26,7 +26,7 @@ public class MainActivity extends AppCompatActivity implements LocationListener,
super.onCreate(savedInstanceState);
Intent serviceIntent = new Intent(this, LocationLoggingService.class);
startService(serviceIntent);
startForegroundService(serviceIntent);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);