Kopirati u Kopirati u activity_main.xml Kopirati u main_activity.kt package com.example.gpsbrzina import android.Manifest import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager import android.location.Location import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import com.google.android.gms.location.* class MainActivity : AppCompatActivity(), SensorEventListener { private lateinit var locationText: TextView private lateinit var speedText: TextView private lateinit var accelerationText: TextView private lateinit var elevationText: TextView private lateinit var fusedLocationClient: FusedLocationProviderClient private lateinit var sensorManager: SensorManager private var acceleration = 0.0 private var currentAcceleration = 0.0 private var lastAcceleration = 0.0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) locationText = findViewById(R.id.locationText) speedText = findViewById(R.id.speedText) accelerationText = findViewById(R.id.accelerationText) elevationText = findViewById(R.id.elevationText) fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager requestLocationUpdates() } private fun requestLocationUpdates() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 100) return } val locationRequest = LocationRequest.create().apply { interval = 2000 fastestInterval = 1000 priority = LocationRequest.PRIORITY_HIGH_ACCURACY } fusedLocationClient.requestLocationUpdates(locationRequest, object : LocationCallback() { override fun onLocationResult(result: LocationResult) { result.lastLocation?.let { location -> val latitude = location.latitude val longitude = location.longitude val speedKmh = location.speed * 3.6 val altitude = location.altitude locationText.text = "Lokacija: $latitude, $longitude" speedText.text = "Brzina: %.2f km/h".format(speedKmh) elevationText.text = "Nadmorska visina: %.2f m".format(altitude) } } }, mainLooper) } override fun onResume() { super.onResume() sensorManager.registerListener( this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL ) } override fun onPause() { super.onPause() sensorManager.unregisterListener(this) } override fun onSensorChanged(event: SensorEvent?) { if (event?.sensor?.type == Sensor.TYPE_ACCELEROMETER) { val x = event.values[0] val y = event.values[1] val z = event.values[2] lastAcceleration = currentAcceleration currentAcceleration = Math.sqrt((x * x + y * y + z * z).toDouble()) val delta = currentAcceleration - lastAcceleration acceleration = acceleration * 0.9 + delta accelerationText.text = "Ubrzanje: %.2f m/s²".format(acceleration) } } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} } Kopirati u build.gradle.kts(Module :app) plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.example.gpsbrzina" compileSdk = 34 defaultConfig { applicationId = "com.example.gpsbrzina" minSdk = 21 targetSdk = 34 versionCode = 1 versionName = "1.0" // Dodaj ovo ako koristiš lokaciju missingDimensionStrategy("location", "playServices") } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } buildFeatures { viewBinding = true } // ✅ OVDE DODAJ compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.11.0") implementation("com.google.android.gms:play-services-location:21.0.1") implementation("androidx.constraintlayout:constraintlayout:2.1.4") }