From 77e343bfbb33278569ac4a21eaae2c30a0f73e69 Mon Sep 17 00:00:00 2001 From: Filip Strajnar Date: Sat, 19 Oct 2024 14:07:37 +0200 Subject: [PATCH] Bind to service and display location updates in activity. --- .../proculite/logmylocation/MainActivity.java | 63 ++++++++++++++++++- app/src/main/res/layout/activity_main.xml | 2 + 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/proculite/logmylocation/MainActivity.java b/app/src/main/java/com/proculite/logmylocation/MainActivity.java index 244aa0b..18458cb 100644 --- a/app/src/main/java/com/proculite/logmylocation/MainActivity.java +++ b/app/src/main/java/com/proculite/logmylocation/MainActivity.java @@ -1,15 +1,25 @@ package com.proculite.logmylocation; +import android.content.ComponentName; +import android.content.Context; import android.content.Intent; +import android.content.ServiceConnection; +import android.location.Location; +import android.location.LocationListener; import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; +import android.widget.TextView; import androidx.activity.EdgeToEdge; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity implements LocationListener, ServiceConnection { + private final String TAG = MainActivity.class.getName(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -26,4 +36,55 @@ public class MainActivity extends AppCompatActivity { return insets; }); } + + @Override + protected void onStart() { + super.onStart(); + + // Bind to service. + Intent intent = new Intent(this, LocationLoggingService.class); + bindService(intent, this, Context.BIND_AUTO_CREATE); + } + + @Override + public void onLocationChanged(@NonNull Location location) { + TextView textView = findViewById(R.id.textViewMain); + + String currentLocation = String.format( + "Latitude: %s\n" + + "Longitude: %s\n" + + "Altitude: %s\n" + + "Accuracy radius in meters: %s\n", + location.getLatitude(), + location.getLongitude(), + location.getAltitude(), + location.getAccuracy() + ); + textView.setText(currentLocation); + } + + @Override + public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + Log.d(TAG, "Service connected."); + + LocationLoggingServiceBinder binder = (LocationLoggingServiceBinder) iBinder; + binder.getService().subscribeToLocationUpdates(this); + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + Log.d(TAG, "Service disconnected."); + } + + @Override + public void onBindingDied(ComponentName name) { + Log.d(TAG, "Service binding died."); + ServiceConnection.super.onBindingDied(name); + } + + @Override + public void onNullBinding(ComponentName name) { + Log.d(TAG, "Service null binding."); + ServiceConnection.super.onNullBinding(name); + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 86a5d97..3968ff2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,6 +8,8 @@ tools:context=".MainActivity">